From c5bb3d685d50fdd5bdb0d2b711954959cc604579 Mon Sep 17 00:00:00 2001 From: Samuliak Date: Sun, 6 Oct 2024 18:29:22 +0200 Subject: [PATCH] implement all BC pixel formats --- .../renderer_metal/maxwell_to_mtl.h | 204 +++++++++--------- 1 file changed, 102 insertions(+), 102 deletions(-) diff --git a/src/video_core/renderer_metal/maxwell_to_mtl.h b/src/video_core/renderer_metal/maxwell_to_mtl.h index 24c5b365d3..97af37d238 100644 --- a/src/video_core/renderer_metal/maxwell_to_mtl.h +++ b/src/video_core/renderer_metal/maxwell_to_mtl.h @@ -24,108 +24,108 @@ struct PixelFormatInfo { // directly // TODO: set the sizes of other formats as well constexpr std::array FORMAT_TABLE = {{ - {MTL::PixelFormatRGBA8Unorm, 4}, // A8B8G8R8_UNORM TODO - {MTL::PixelFormatRGBA8Snorm, 4}, // A8B8G8R8_SNORM TODO - {MTL::PixelFormatRGBA8Sint, 4}, // A8B8G8R8_SINT TODO - {MTL::PixelFormatRGBA8Uint, 4}, // A8B8G8R8_UINT TODO - {MTL::PixelFormatB5G6R5Unorm, 2}, // R5G6B5_UNORM TODO - {MTL::PixelFormatB5G6R5Unorm, 2}, // B5G6R5_UNORM - {MTL::PixelFormatA1BGR5Unorm, 2}, // A1R5G5B5_UNORM TODO - {MTL::PixelFormatRGBA8Unorm, 4}, // A2B10G10R10_UNORM (hack) - {MTL::PixelFormatRGB10A2Uint, 4}, // A2B10G10R10_UINT TODO - {MTL::PixelFormatRGB10A2Unorm, 4}, // A2R10G10B10_UNORM TODO - {MTL::PixelFormatA1BGR5Unorm, 2}, // A1B5G5R5_UNORM TODO - {MTL::PixelFormatInvalid, 0}, // A5B5G5R1_UNORM TODO - {MTL::PixelFormatR8Unorm, 1}, // R8_UNORM - {MTL::PixelFormatR8Snorm, 1}, // R8_SNORM - {MTL::PixelFormatR8Sint, 1}, // R8_SINT - {MTL::PixelFormatR8Uint, 1}, // R8_UINT - {MTL::PixelFormatRGBA16Float, 8}, // R16G16B16A16_FLOAT - {MTL::PixelFormatRGBA16Unorm, 8}, // R16G16B16A16_UNORM - {MTL::PixelFormatRGBA16Snorm, 8}, // R16G16B16A16_SNORM - {MTL::PixelFormatRGBA16Sint, 8}, // R16G16B16A16_SINT - {MTL::PixelFormatRGBA16Uint, 8}, // R16G16B16A16_UINT - {MTL::PixelFormatRG11B10Float, 4}, // B10G11R11_FLOAT TODO - {MTL::PixelFormatRGBA32Uint, 16}, // R32G32B32A32_UINT - {MTL::PixelFormatBC1_RGBA, 8, {4, 4}, false}, // BC1_RGBA_UNORM - {MTL::PixelFormatInvalid, 0}, // BC2_UNORM TODO - {MTL::PixelFormatInvalid, 0}, // BC3_UNORM TODO - {MTL::PixelFormatBC4_RUnorm, 8, {4, 4}, false}, // BC4_UNORM - {MTL::PixelFormatBC4_RSnorm, 0, {0, 0}, false}, // BC4_SNORM TODO - {MTL::PixelFormatInvalid, 0}, // BC5_UNORM TODO - {MTL::PixelFormatInvalid, 0}, // BC5_SNORM TODO - {MTL::PixelFormatInvalid, 0}, // BC7_UNORM TODO - {MTL::PixelFormatInvalid, 0}, // BC6H_UFLOAT TODO - {MTL::PixelFormatInvalid, 0}, // BC6H_SFLOAT TODO - {MTL::PixelFormatASTC_4x4_LDR, 0, {0, 0}, false}, // ASTC_2D_4X4_UNORM TODO - {MTL::PixelFormatBGRA8Unorm, 4}, // B8G8R8A8_UNORM - {MTL::PixelFormatRGBA32Float, 16}, // R32G32B32A32_FLOAT - {MTL::PixelFormatRGBA32Sint, 16}, // R32G32B32A32_SINT - {MTL::PixelFormatRG32Float, 8}, // R32G32_FLOAT - {MTL::PixelFormatRG32Sint, 8}, // R32G32_SINT - {MTL::PixelFormatR32Float, 4}, // R32_FLOAT - {MTL::PixelFormatR16Float, 2}, // R16_FLOAT - {MTL::PixelFormatR16Unorm, 2}, // R16_UNORM - {MTL::PixelFormatR16Snorm, 2}, // R16_SNORM - {MTL::PixelFormatR16Uint, 2}, // R16_UINT - {MTL::PixelFormatR16Sint, 2}, // R16_SINT - {MTL::PixelFormatRG16Unorm, 4}, // R16G16_UNORM - {MTL::PixelFormatRG16Float, 4}, // R16G16_FLOAT - {MTL::PixelFormatRG16Uint, 4}, // R16G16_UINT - {MTL::PixelFormatRG16Sint, 4}, // R16G16_SINT - {MTL::PixelFormatRG16Snorm, 4}, // R16G16_SNORM - {MTL::PixelFormatRGBA32Float, 16}, // R32G32B32_FLOAT TODO - {MTL::PixelFormatRGBA8Unorm, 4}, // A8B8G8R8_SRGB - {MTL::PixelFormatRG8Unorm, 2}, // R8G8_UNORM - {MTL::PixelFormatRG8Snorm, 2}, // R8G8_SNORM - {MTL::PixelFormatRG8Sint, 2}, // R8G8_SINT - {MTL::PixelFormatRG8Uint, 2}, // R8G8_UINT - {MTL::PixelFormatRG32Uint, 8}, // R32G32_UINT - {MTL::PixelFormatRGBA16Float, 8}, // R16G16B16X16_FLOAT TODO - {MTL::PixelFormatR32Uint, 4}, // R32_UINT - {MTL::PixelFormatR32Sint, 4}, // R32_SINT - {MTL::PixelFormatASTC_8x8_LDR, 16, {8, 8}, false}, // ASTC_2D_8X8_UNORM - {MTL::PixelFormatASTC_8x5_LDR, 0, {0, 0}, false}, // ASTC_2D_8X5_UNORM TODO - {MTL::PixelFormatASTC_5x4_LDR, 0, {0, 0}, false}, // ASTC_2D_5X4_UNORM TODO - {MTL::PixelFormatBGRA8Unorm_sRGB, 0}, // B8G8R8A8_SRGB - {MTL::PixelFormatBC1_RGBA_sRGB, 0, {0, 0}, false}, // BC1_RGBA_SRGB TODO - {MTL::PixelFormatInvalid, 0}, // BC2_SRGB TODO - {MTL::PixelFormatInvalid, 0}, // BC3_SRGB TODO - {MTL::PixelFormatBC7_RGBAUnorm_sRGB, 0, {0, 0}, false}, // BC7_SRGB TODO - {MTL::PixelFormatABGR4Unorm, 0}, // A4B4G4R4_UNORM - {MTL::PixelFormatRG8Unorm, 2}, // G4R4_UNORM TODO - {MTL::PixelFormatASTC_4x4_sRGB, 16, {4, 4}, false}, // ASTC_2D_4X4_SRGB - {MTL::PixelFormatASTC_8x8_sRGB, 0, {0, 0}, false}, // ASTC_2D_8X8_SRGB TODO - {MTL::PixelFormatASTC_8x5_sRGB, 0, {0, 0}, false}, // ASTC_2D_8X5_SRGB TODO - {MTL::PixelFormatASTC_5x4_sRGB, 0, {0, 0}, false}, // ASTC_2D_5X4_SRGB TODO - {MTL::PixelFormatASTC_5x5_LDR, 0, {0, 0}, false}, // ASTC_2D_5X5_UNORM TODO - {MTL::PixelFormatASTC_5x5_sRGB, 0, {0, 0}, false}, // ASTC_2D_5X5_SRGB TODO - {MTL::PixelFormatASTC_10x8_LDR, 0, {0, 0}, false}, // ASTC_2D_10X8_UNORM TODO - {MTL::PixelFormatASTC_10x8_sRGB, 0, {0, 0}, false}, // ASTC_2D_10X8_SRGB TODO - {MTL::PixelFormatASTC_6x6_LDR, 0, {0, 0}, false}, // ASTC_2D_6X6_UNORM TODO - {MTL::PixelFormatASTC_6x6_sRGB, 0, {0, 0}, false}, // ASTC_2D_6X6_SRGB TODO - {MTL::PixelFormatASTC_10x6_LDR, 0, {0, 0}, false}, // ASTC_2D_10X6_UNORM TODO - {MTL::PixelFormatASTC_10x6_sRGB, 0, {0, 0}, false}, // ASTC_2D_10X6_SRGB TODO - {MTL::PixelFormatASTC_10x5_LDR, 0, {0, 0}, false}, // ASTC_2D_10X5_UNORM TODO - {MTL::PixelFormatASTC_10x5_sRGB, 0, {0, 0}, false}, // ASTC_2D_10X5_SRGB TODO - {MTL::PixelFormatASTC_10x10_LDR, 0, {0, 0}, false}, // ASTC_2D_10X10_UNORM TODO - {MTL::PixelFormatASTC_10x10_sRGB, 0, {0, 0}, false}, // ASTC_2D_10X10_SRGB TODO - {MTL::PixelFormatASTC_12x10_LDR, 0, {0, 0}, false}, // ASTC_2D_12X10_UNORM TODO - {MTL::PixelFormatASTC_12x10_sRGB, 0, {0, 0}, false}, // ASTC_2D_12X10_SRGB TODO - {MTL::PixelFormatASTC_12x12_LDR, 0, {0, 0}, false}, // ASTC_2D_12X12_UNORM TODO - {MTL::PixelFormatASTC_12x12_sRGB, 0, {0, 0}, false}, // ASTC_2D_12X12_SRGB TODO - {MTL::PixelFormatASTC_8x6_LDR, 0, {0, 0}, false}, // ASTC_2D_8X6_UNORM TODO - {MTL::PixelFormatASTC_8x6_sRGB, 0, {0, 0}, false}, // ASTC_2D_8X6_SRGB TODO - {MTL::PixelFormatASTC_6x5_LDR, 0, {0, 0}, false}, // ASTC_2D_6X5_UNORM TODO - {MTL::PixelFormatASTC_6x5_sRGB, 0, {0, 0}, false}, // ASTC_2D_6X5_SRGB TODO - {MTL::PixelFormatInvalid, 0}, // E5B9G9R9_FLOAT TODO - {MTL::PixelFormatDepth32Float, 0}, // D32_FLOAT - {MTL::PixelFormatDepth16Unorm, 0}, // D16_UNORM - {MTL::PixelFormatInvalid, 0}, // X8_D24_UNORM TODO - {MTL::PixelFormatStencil8, 0}, // S8_UINT - {MTL::PixelFormatDepth24Unorm_Stencil8, 0}, // D24_UNORM_S8_UINT - {MTL::PixelFormatInvalid, 0}, // S8_UINT_D24_UNORM TODO - {MTL::PixelFormatDepth32Float_Stencil8, 0}, // D32_FLOAT_S8_UINT + {MTL::PixelFormatRGBA8Unorm, 4}, // A8B8G8R8_UNORM TODO + {MTL::PixelFormatRGBA8Snorm, 4}, // A8B8G8R8_SNORM TODO + {MTL::PixelFormatRGBA8Sint, 4}, // A8B8G8R8_SINT TODO + {MTL::PixelFormatRGBA8Uint, 4}, // A8B8G8R8_UINT TODO + {MTL::PixelFormatB5G6R5Unorm, 2}, // R5G6B5_UNORM TODO + {MTL::PixelFormatB5G6R5Unorm, 2}, // B5G6R5_UNORM + {MTL::PixelFormatA1BGR5Unorm, 2}, // A1R5G5B5_UNORM TODO + {MTL::PixelFormatRGBA8Unorm, 4}, // A2B10G10R10_UNORM (hack) + {MTL::PixelFormatRGB10A2Uint, 4}, // A2B10G10R10_UINT TODO + {MTL::PixelFormatRGB10A2Unorm, 4}, // A2R10G10B10_UNORM TODO + {MTL::PixelFormatA1BGR5Unorm, 2}, // A1B5G5R5_UNORM TODO + {MTL::PixelFormatInvalid, 0}, // A5B5G5R1_UNORM TODO + {MTL::PixelFormatR8Unorm, 1}, // R8_UNORM + {MTL::PixelFormatR8Snorm, 1}, // R8_SNORM + {MTL::PixelFormatR8Sint, 1}, // R8_SINT + {MTL::PixelFormatR8Uint, 1}, // R8_UINT + {MTL::PixelFormatRGBA16Float, 8}, // R16G16B16A16_FLOAT + {MTL::PixelFormatRGBA16Unorm, 8}, // R16G16B16A16_UNORM + {MTL::PixelFormatRGBA16Snorm, 8}, // R16G16B16A16_SNORM + {MTL::PixelFormatRGBA16Sint, 8}, // R16G16B16A16_SINT + {MTL::PixelFormatRGBA16Uint, 8}, // R16G16B16A16_UINT + {MTL::PixelFormatRG11B10Float, 4}, // B10G11R11_FLOAT TODO + {MTL::PixelFormatRGBA32Uint, 16}, // R32G32B32A32_UINT + {MTL::PixelFormatBC1_RGBA, 8, {4, 4}, false}, // BC1_RGBA_UNORM + {MTL::PixelFormatBC2_RGBA, 16, {4, 4}, false}, // BC2_UNORM TODO + {MTL::PixelFormatBC3_RGBA, 16, {4, 4}, false}, // BC3_UNORM TODO + {MTL::PixelFormatBC4_RUnorm, 8, {4, 4}, false}, // BC4_UNORM + {MTL::PixelFormatBC4_RSnorm, 8, {4, 4}, false}, // BC4_SNORM TODO + {MTL::PixelFormatBC5_RGUnorm, 16, {4, 4}, false}, // BC5_UNORM TODO + {MTL::PixelFormatBC5_RGSnorm, 16, {4, 4}, false}, // BC5_SNORM TODO + {MTL::PixelFormatBC7_RGBAUnorm, 16, {4, 4}, false}, // BC7_UNORM TODO + {MTL::PixelFormatBC6H_RGBUfloat, 16, {4, 4}, false}, // BC6H_UFLOAT TODO + {MTL::PixelFormatBC6H_RGBFloat, 16, {4, 4}, false}, // BC6H_SFLOAT TODO + {MTL::PixelFormatASTC_4x4_LDR, 0, {0, 0}, false}, // ASTC_2D_4X4_UNORM TODO + {MTL::PixelFormatBGRA8Unorm, 4}, // B8G8R8A8_UNORM + {MTL::PixelFormatRGBA32Float, 16}, // R32G32B32A32_FLOAT + {MTL::PixelFormatRGBA32Sint, 16}, // R32G32B32A32_SINT + {MTL::PixelFormatRG32Float, 8}, // R32G32_FLOAT + {MTL::PixelFormatRG32Sint, 8}, // R32G32_SINT + {MTL::PixelFormatR32Float, 4}, // R32_FLOAT + {MTL::PixelFormatR16Float, 2}, // R16_FLOAT + {MTL::PixelFormatR16Unorm, 2}, // R16_UNORM + {MTL::PixelFormatR16Snorm, 2}, // R16_SNORM + {MTL::PixelFormatR16Uint, 2}, // R16_UINT + {MTL::PixelFormatR16Sint, 2}, // R16_SINT + {MTL::PixelFormatRG16Unorm, 4}, // R16G16_UNORM + {MTL::PixelFormatRG16Float, 4}, // R16G16_FLOAT + {MTL::PixelFormatRG16Uint, 4}, // R16G16_UINT + {MTL::PixelFormatRG16Sint, 4}, // R16G16_SINT + {MTL::PixelFormatRG16Snorm, 4}, // R16G16_SNORM + {MTL::PixelFormatRGBA32Float, 16}, // R32G32B32_FLOAT TODO + {MTL::PixelFormatRGBA8Unorm, 4}, // A8B8G8R8_SRGB + {MTL::PixelFormatRG8Unorm, 2}, // R8G8_UNORM + {MTL::PixelFormatRG8Snorm, 2}, // R8G8_SNORM + {MTL::PixelFormatRG8Sint, 2}, // R8G8_SINT + {MTL::PixelFormatRG8Uint, 2}, // R8G8_UINT + {MTL::PixelFormatRG32Uint, 8}, // R32G32_UINT + {MTL::PixelFormatRGBA16Float, 8}, // R16G16B16X16_FLOAT TODO + {MTL::PixelFormatR32Uint, 4}, // R32_UINT + {MTL::PixelFormatR32Sint, 4}, // R32_SINT + {MTL::PixelFormatASTC_8x8_LDR, 16, {8, 8}, false}, // ASTC_2D_8X8_UNORM + {MTL::PixelFormatASTC_8x5_LDR, 0, {0, 0}, false}, // ASTC_2D_8X5_UNORM TODO + {MTL::PixelFormatASTC_5x4_LDR, 0, {0, 0}, false}, // ASTC_2D_5X4_UNORM TODO + {MTL::PixelFormatBGRA8Unorm_sRGB, 0}, // B8G8R8A8_SRGB + {MTL::PixelFormatBC1_RGBA_sRGB, 1, {4, 4}, false}, // BC1_RGBA_SRGB TODO + {MTL::PixelFormatBC2_RGBA_sRGB, 16, {4, 4}, false}, // BC2_SRGB TODO + {MTL::PixelFormatBC3_RGBA_sRGB, 16, {4, 4}, false}, // BC3_SRGB TODO + {MTL::PixelFormatBC7_RGBAUnorm_sRGB, 16, {4, 4}, false}, // BC7_SRGB TODO + {MTL::PixelFormatABGR4Unorm, 2}, // A4B4G4R4_UNORM + {MTL::PixelFormatRG8Unorm, 2}, // G4R4_UNORM TODO + {MTL::PixelFormatASTC_4x4_sRGB, 16, {4, 4}, false}, // ASTC_2D_4X4_SRGB + {MTL::PixelFormatASTC_8x8_sRGB, 0, {0, 0}, false}, // ASTC_2D_8X8_SRGB TODO + {MTL::PixelFormatASTC_8x5_sRGB, 0, {0, 0}, false}, // ASTC_2D_8X5_SRGB TODO + {MTL::PixelFormatASTC_5x4_sRGB, 0, {0, 0}, false}, // ASTC_2D_5X4_SRGB TODO + {MTL::PixelFormatASTC_5x5_LDR, 0, {0, 0}, false}, // ASTC_2D_5X5_UNORM TODO + {MTL::PixelFormatASTC_5x5_sRGB, 0, {0, 0}, false}, // ASTC_2D_5X5_SRGB TODO + {MTL::PixelFormatASTC_10x8_LDR, 0, {0, 0}, false}, // ASTC_2D_10X8_UNORM TODO + {MTL::PixelFormatASTC_10x8_sRGB, 0, {0, 0}, false}, // ASTC_2D_10X8_SRGB TODO + {MTL::PixelFormatASTC_6x6_LDR, 0, {0, 0}, false}, // ASTC_2D_6X6_UNORM TODO + {MTL::PixelFormatASTC_6x6_sRGB, 0, {0, 0}, false}, // ASTC_2D_6X6_SRGB TODO + {MTL::PixelFormatASTC_10x6_LDR, 0, {0, 0}, false}, // ASTC_2D_10X6_UNORM TODO + {MTL::PixelFormatASTC_10x6_sRGB, 0, {0, 0}, false}, // ASTC_2D_10X6_SRGB TODO + {MTL::PixelFormatASTC_10x5_LDR, 0, {0, 0}, false}, // ASTC_2D_10X5_UNORM TODO + {MTL::PixelFormatASTC_10x5_sRGB, 0, {0, 0}, false}, // ASTC_2D_10X5_SRGB TODO + {MTL::PixelFormatASTC_10x10_LDR, 0, {0, 0}, false}, // ASTC_2D_10X10_UNORM TODO + {MTL::PixelFormatASTC_10x10_sRGB, 0, {0, 0}, false}, // ASTC_2D_10X10_SRGB TODO + {MTL::PixelFormatASTC_12x10_LDR, 0, {0, 0}, false}, // ASTC_2D_12X10_UNORM TODO + {MTL::PixelFormatASTC_12x10_sRGB, 0, {0, 0}, false}, // ASTC_2D_12X10_SRGB TODO + {MTL::PixelFormatASTC_12x12_LDR, 0, {0, 0}, false}, // ASTC_2D_12X12_UNORM TODO + {MTL::PixelFormatASTC_12x12_sRGB, 0, {0, 0}, false}, // ASTC_2D_12X12_SRGB TODO + {MTL::PixelFormatASTC_8x6_LDR, 0, {0, 0}, false}, // ASTC_2D_8X6_UNORM TODO + {MTL::PixelFormatASTC_8x6_sRGB, 0, {0, 0}, false}, // ASTC_2D_8X6_SRGB TODO + {MTL::PixelFormatASTC_6x5_LDR, 0, {0, 0}, false}, // ASTC_2D_6X5_UNORM TODO + {MTL::PixelFormatASTC_6x5_sRGB, 0, {0, 0}, false}, // ASTC_2D_6X5_SRGB TODO + {MTL::PixelFormatInvalid, 0}, // E5B9G9R9_FLOAT TODO + {MTL::PixelFormatDepth32Float, 0}, // D32_FLOAT + {MTL::PixelFormatDepth16Unorm, 0}, // D16_UNORM + {MTL::PixelFormatInvalid, 0}, // X8_D24_UNORM TODO + {MTL::PixelFormatStencil8, 0}, // S8_UINT + {MTL::PixelFormatDepth24Unorm_Stencil8, 0}, // D24_UNORM_S8_UINT + {MTL::PixelFormatInvalid, 0}, // S8_UINT_D24_UNORM TODO + {MTL::PixelFormatDepth32Float_Stencil8, 0}, // D32_FLOAT_S8_UINT }}; inline const PixelFormatInfo GetPixelFormatInfo(VideoCore::Surface::PixelFormat pixel_format) {