texture: Implement R32I
This commit is contained in:
parent
f552d553ba
commit
14c2a4a2ec
6 changed files with 46 additions and 34 deletions
|
@ -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},
|
||||
|
||||
|
|
Loading…
Reference in a new issue