texture: Implement R32I
This commit is contained in:
		| @@ -85,6 +85,7 @@ static constexpr ConversionArray morton_to_linear_fns = { | ||||
|     MortonCopy<true, PixelFormat::RG32UI>, | ||||
|     MortonCopy<true, PixelFormat::RGBX16F>, | ||||
|     MortonCopy<true, PixelFormat::R32UI>, | ||||
|     MortonCopy<true, PixelFormat::R32I>, | ||||
|     MortonCopy<true, PixelFormat::ASTC_2D_8X8>, | ||||
|     MortonCopy<true, PixelFormat::ASTC_2D_8X5>, | ||||
|     MortonCopy<true, PixelFormat::ASTC_2D_5X4>, | ||||
| @@ -166,6 +167,7 @@ static constexpr ConversionArray linear_to_morton_fns = { | ||||
|     MortonCopy<false, PixelFormat::RG32UI>, | ||||
|     MortonCopy<false, PixelFormat::RGBX16F>, | ||||
|     MortonCopy<false, PixelFormat::R32UI>, | ||||
|     MortonCopy<false, PixelFormat::R32I>, | ||||
|     nullptr, | ||||
|     nullptr, | ||||
|     nullptr, | ||||
|   | ||||
| @@ -87,6 +87,7 @@ constexpr std::array<FormatTuple, VideoCore::Surface::MaxPixelFormat> tex_format | ||||
|     {GL_RG32UI, GL_RG_INTEGER, GL_UNSIGNED_INT, false},                             // RG32UI | ||||
|     {GL_RGB16F, GL_RGBA, GL_HALF_FLOAT, false},                                     // RGBX16F | ||||
|     {GL_R32UI, GL_RED_INTEGER, GL_UNSIGNED_INT, false},                             // R32UI | ||||
|     {GL_R32I, GL_RED_INTEGER, GL_INT, false},                                       // R32I | ||||
|     {GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE, false},                                   // ASTC_2D_8X8 | ||||
|     {GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE, false},                                   // ASTC_2D_8X5 | ||||
|     {GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE, false},                                   // ASTC_2D_5X4 | ||||
|   | ||||
| @@ -159,6 +159,7 @@ struct FormatTuple { | ||||
|     {vk::Format::eR32G32Uint, Attachable | Storage},             // RG32UI | ||||
|     {vk::Format::eUndefined, {}},                                // RGBX16F | ||||
|     {vk::Format::eR32Uint, Attachable | Storage},                // R32UI | ||||
|     {vk::Format::eR32Sint, Attachable | Storage},                // R32I | ||||
|     {vk::Format::eAstc8x8UnormBlock, {}},                        // ASTC_2D_8X8 | ||||
|     {vk::Format::eUndefined, {}},                                // ASTC_2D_8X5 | ||||
|     {vk::Format::eUndefined, {}},                                // ASTC_2D_5X4 | ||||
|   | ||||
| @@ -511,6 +511,7 @@ std::unordered_map<vk::Format, vk::FormatProperties> VKDevice::GetFormatProperti | ||||
|                                         vk::Format::eB10G11R11UfloatPack32, | ||||
|                                         vk::Format::eR32Sfloat, | ||||
|                                         vk::Format::eR32Uint, | ||||
|                                         vk::Format::eR32Sint, | ||||
|                                         vk::Format::eR16Sfloat, | ||||
|                                         vk::Format::eR16G16B16A16Sfloat, | ||||
|                                         vk::Format::eB8G8R8A8Unorm, | ||||
|   | ||||
| @@ -59,47 +59,48 @@ enum class PixelFormat { | ||||
|     RG32UI = 41, | ||||
|     RGBX16F = 42, | ||||
|     R32UI = 43, | ||||
|     ASTC_2D_8X8 = 44, | ||||
|     ASTC_2D_8X5 = 45, | ||||
|     ASTC_2D_5X4 = 46, | ||||
|     BGRA8_SRGB = 47, | ||||
|     DXT1_SRGB = 48, | ||||
|     DXT23_SRGB = 49, | ||||
|     DXT45_SRGB = 50, | ||||
|     BC7U_SRGB = 51, | ||||
|     R4G4B4A4U = 52, | ||||
|     ASTC_2D_4X4_SRGB = 53, | ||||
|     ASTC_2D_8X8_SRGB = 54, | ||||
|     ASTC_2D_8X5_SRGB = 55, | ||||
|     ASTC_2D_5X4_SRGB = 56, | ||||
|     ASTC_2D_5X5 = 57, | ||||
|     ASTC_2D_5X5_SRGB = 58, | ||||
|     ASTC_2D_10X8 = 59, | ||||
|     ASTC_2D_10X8_SRGB = 60, | ||||
|     ASTC_2D_6X6 = 61, | ||||
|     ASTC_2D_6X6_SRGB = 62, | ||||
|     ASTC_2D_10X10 = 63, | ||||
|     ASTC_2D_10X10_SRGB = 64, | ||||
|     ASTC_2D_12X12 = 65, | ||||
|     ASTC_2D_12X12_SRGB = 66, | ||||
|     ASTC_2D_8X6 = 67, | ||||
|     ASTC_2D_8X6_SRGB = 68, | ||||
|     ASTC_2D_6X5 = 69, | ||||
|     ASTC_2D_6X5_SRGB = 70, | ||||
|     E5B9G9R9F = 71, | ||||
|     R32I = 44, | ||||
|     ASTC_2D_8X8 = 45, | ||||
|     ASTC_2D_8X5 = 46, | ||||
|     ASTC_2D_5X4 = 47, | ||||
|     BGRA8_SRGB = 48, | ||||
|     DXT1_SRGB = 49, | ||||
|     DXT23_SRGB = 50, | ||||
|     DXT45_SRGB = 51, | ||||
|     BC7U_SRGB = 52, | ||||
|     R4G4B4A4U = 53, | ||||
|     ASTC_2D_4X4_SRGB = 54, | ||||
|     ASTC_2D_8X8_SRGB = 55, | ||||
|     ASTC_2D_8X5_SRGB = 56, | ||||
|     ASTC_2D_5X4_SRGB = 57, | ||||
|     ASTC_2D_5X5 = 58, | ||||
|     ASTC_2D_5X5_SRGB = 59, | ||||
|     ASTC_2D_10X8 = 60, | ||||
|     ASTC_2D_10X8_SRGB = 61, | ||||
|     ASTC_2D_6X6 = 62, | ||||
|     ASTC_2D_6X6_SRGB = 63, | ||||
|     ASTC_2D_10X10 = 64, | ||||
|     ASTC_2D_10X10_SRGB = 65, | ||||
|     ASTC_2D_12X12 = 66, | ||||
|     ASTC_2D_12X12_SRGB = 67, | ||||
|     ASTC_2D_8X6 = 68, | ||||
|     ASTC_2D_8X6_SRGB = 69, | ||||
|     ASTC_2D_6X5 = 70, | ||||
|     ASTC_2D_6X5_SRGB = 71, | ||||
|     E5B9G9R9F = 72, | ||||
|  | ||||
|     MaxColorFormat, | ||||
|  | ||||
|     // Depth formats | ||||
|     Z32F = 72, | ||||
|     Z16 = 73, | ||||
|     Z32F = 73, | ||||
|     Z16 = 74, | ||||
|  | ||||
|     MaxDepthFormat, | ||||
|  | ||||
|     // DepthStencil formats | ||||
|     Z24S8 = 74, | ||||
|     S8Z24 = 75, | ||||
|     Z32FS8 = 76, | ||||
|     Z24S8 = 75, | ||||
|     S8Z24 = 76, | ||||
|     Z32FS8 = 77, | ||||
|  | ||||
|     MaxDepthStencilFormat, | ||||
|  | ||||
| @@ -171,6 +172,7 @@ constexpr std::array<u32, MaxPixelFormat> compression_factor_shift_table = {{ | ||||
|     0, // RG32UI | ||||
|     0, // RGBX16F | ||||
|     0, // R32UI | ||||
|     0, // R32I | ||||
|     2, // ASTC_2D_8X8 | ||||
|     2, // ASTC_2D_8X5 | ||||
|     2, // ASTC_2D_5X4 | ||||
| @@ -267,6 +269,7 @@ constexpr std::array<u32, MaxPixelFormat> block_width_table = {{ | ||||
|     1,  // RG32UI | ||||
|     1,  // RGBX16F | ||||
|     1,  // R32UI | ||||
|     1,  // R32I | ||||
|     8,  // ASTC_2D_8X8 | ||||
|     8,  // ASTC_2D_8X5 | ||||
|     5,  // ASTC_2D_5X4 | ||||
| @@ -355,6 +358,7 @@ constexpr std::array<u32, MaxPixelFormat> block_height_table = {{ | ||||
|     1,  // RG32UI | ||||
|     1,  // RGBX16F | ||||
|     1,  // R32UI | ||||
|     1,  // R32I | ||||
|     8,  // ASTC_2D_8X8 | ||||
|     5,  // ASTC_2D_8X5 | ||||
|     4,  // ASTC_2D_5X4 | ||||
| @@ -443,6 +447,7 @@ constexpr std::array<u32, MaxPixelFormat> bpp_table = {{ | ||||
|     64,  // RG32UI | ||||
|     64,  // RGBX16F | ||||
|     32,  // R32UI | ||||
|     32,  // R32I | ||||
|     128, // ASTC_2D_8X8 | ||||
|     128, // ASTC_2D_8X5 | ||||
|     128, // ASTC_2D_5X4 | ||||
| @@ -546,6 +551,7 @@ constexpr std::array<SurfaceCompression, MaxPixelFormat> compression_type_table | ||||
|     SurfaceCompression::None,       // RG32UI | ||||
|     SurfaceCompression::None,       // RGBX16F | ||||
|     SurfaceCompression::None,       // R32UI | ||||
|     SurfaceCompression::None,       // R32I | ||||
|     SurfaceCompression::Converted,  // ASTC_2D_8X8 | ||||
|     SurfaceCompression::Converted,  // ASTC_2D_8X5 | ||||
|     SurfaceCompression::Converted,  // ASTC_2D_5X4 | ||||
|   | ||||
| @@ -41,7 +41,7 @@ struct Table { | ||||
|     ComponentType alpha_component; | ||||
|     bool is_srgb; | ||||
| }; | ||||
| constexpr std::array<Table, 74> DefinitionTable = {{ | ||||
| constexpr std::array<Table, 75> DefinitionTable = {{ | ||||
|     {TextureFormat::A8R8G8B8, C, UNORM, UNORM, UNORM, UNORM, PixelFormat::ABGR8U}, | ||||
|     {TextureFormat::A8R8G8B8, C, SNORM, SNORM, SNORM, SNORM, PixelFormat::ABGR8S}, | ||||
|     {TextureFormat::A8R8G8B8, C, UINT, UINT, UINT, UINT, PixelFormat::ABGR8UI}, | ||||
| @@ -89,6 +89,7 @@ constexpr std::array<Table, 74> DefinitionTable = {{ | ||||
|  | ||||
|     {TextureFormat::R32, C, FLOAT, FLOAT, FLOAT, FLOAT, PixelFormat::R32F}, | ||||
|     {TextureFormat::R32, C, UINT, UINT, UINT, UINT, PixelFormat::R32UI}, | ||||
|     {TextureFormat::R32, C, SINT, SINT, SINT, SINT, PixelFormat::R32I}, | ||||
|  | ||||
|     {TextureFormat::E5B9G9R9_SHAREDEXP, C, FLOAT, FLOAT, FLOAT, FLOAT, PixelFormat::E5B9G9R9F}, | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user