isl: Update render CMF mapping (xe2)

Update mapping between render target surface formats and
compression formats.

Some preexisting correct mappings are also re-ordered to
the order of types in the spec for an easier verification
(top to bottom and left to right).

Signed-off-by: Jianxun Zhang <jianxun.zhang@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29905>
This commit is contained in:
Jianxun Zhang
2022-12-12 20:11:18 -08:00
committed by Marge Bot
parent a985576755
commit 7be1912625
+58 -27
View File
@@ -204,29 +204,41 @@ isl_get_qpitch(const struct isl_surf *surf)
UNUSED static uint8_t
isl_get_render_compression_format(enum isl_format format)
{
/* From the Bspec, Enumeration_UNIFIED_COMPRESSION_FORMAT section (63919): */
/* Bspec 63919 (r47142) Enumeration_UNIFIED_COMPRESSION_FORMAT:
*
* Table "[Enumeration] UNIFIED_COMPRESSION_FORMAT"
*/
switch(format) {
case ISL_FORMAT_R8_UNORM:
case ISL_FORMAT_R8_UINT:
case ISL_FORMAT_A8_UNORM:
case ISL_FORMAT_R8_SNORM:
case ISL_FORMAT_R8_SINT:
case ISL_FORMAT_A8_UNORM:
case ISL_FORMAT_R24_UNORM_X8_TYPELESS:
return CMF_R8;
case ISL_FORMAT_R8G8_UNORM:
case ISL_FORMAT_R8G8_UINT:
case ISL_FORMAT_R8G8_SNORM:
case ISL_FORMAT_R8G8_SINT:
case ISL_FORMAT_B5G6R5_UNORM:
case ISL_FORMAT_B5G6R5_UNORM_SRGB:
case ISL_FORMAT_B5G5R5A1_UNORM:
case ISL_FORMAT_B5G5R5A1_UNORM_SRGB:
case ISL_FORMAT_B4G4R4A4_UNORM:
case ISL_FORMAT_B4G4R4A4_UNORM_SRGB:
case ISL_FORMAT_B5G5R5X1_UNORM:
case ISL_FORMAT_B5G5R5X1_UNORM_SRGB:
case ISL_FORMAT_A1B5G5R5_UNORM:
case ISL_FORMAT_A4B4G4R4_UNORM:
return CMF_R8_G8;
case ISL_FORMAT_B8G8R8A8_UNORM:
case ISL_FORMAT_B8G8R8X8_UNORM:
case ISL_FORMAT_B8G8R8A8_UNORM_SRGB:
case ISL_FORMAT_B8G8R8X8_UNORM_SRGB:
case ISL_FORMAT_R8G8B8A8_UNORM:
case ISL_FORMAT_R8G8B8X8_UNORM:
case ISL_FORMAT_R8G8B8A8_UNORM_SRGB:
case ISL_FORMAT_R8G8B8X8_UNORM_SRGB:
case ISL_FORMAT_R8G8B8A8_UINT:
case ISL_FORMAT_R8G8B8A8_SNORM:
case ISL_FORMAT_R8G8B8A8_SINT:
case ISL_FORMAT_R8G8B8A8_UNORM_SRGB:
case ISL_FORMAT_B8G8R8A8_UNORM_SRGB:
case ISL_FORMAT_B8G8R8A8_UNORM:
case ISL_FORMAT_B8G8R8X8_UNORM:
return CMF_R8_G8_B8_A8;
case ISL_FORMAT_R10G10B10A2_UNORM:
case ISL_FORMAT_R10G10B10A2_UNORM_SRGB:
@@ -251,38 +263,57 @@ isl_get_render_compression_format(enum isl_format format)
case ISL_FORMAT_R16G16_FLOAT:
return CMF_R16_G16;
case ISL_FORMAT_R16G16B16A16_UNORM:
case ISL_FORMAT_R16G16B16X16_UNORM:
case ISL_FORMAT_R16G16B16A16_UINT:
case ISL_FORMAT_R16G16B16A16_SNORM:
case ISL_FORMAT_R16G16B16A16_SINT:
case ISL_FORMAT_R16G16B16A16_FLOAT:
case ISL_FORMAT_R16G16B16X16_FLOAT:
return CMF_R16_G16_B16_A16;
case ISL_FORMAT_R32_UNORM:
case ISL_FORMAT_R32_UINT:
case ISL_FORMAT_R32_SNORM:
case ISL_FORMAT_R32_SINT:
case ISL_FORMAT_R32_FLOAT:
case ISL_FORMAT_R32_UINT:
return CMF_R32;
case ISL_FORMAT_R32G32_FLOAT:
case ISL_FORMAT_R32G32_SINT:
case ISL_FORMAT_R32G32_UNORM:
case ISL_FORMAT_R32G32_UINT:
case ISL_FORMAT_R32G32_SNORM:
case ISL_FORMAT_R32G32_SINT:
case ISL_FORMAT_R32G32_FLOAT:
return CMF_R32_G32;
case ISL_FORMAT_R32G32B32A32_UNORM:
case ISL_FORMAT_R32G32B32A32_UINT:
case ISL_FORMAT_R32G32B32A32_SNORM:
case ISL_FORMAT_R32G32B32A32_SINT:
case ISL_FORMAT_R32G32B32A32_FLOAT:
case ISL_FORMAT_R32G32B32X32_FLOAT:
case ISL_FORMAT_R32G32B32A32_SINT:
case ISL_FORMAT_R32G32B32A32_UINT:
return CMF_R32_G32_B32_A32;
case ISL_FORMAT_B5G6R5_UNORM:
case ISL_FORMAT_B5G6R5_UNORM_SRGB:
case ISL_FORMAT_B5G5R5A1_UNORM:
case ISL_FORMAT_B5G5R5A1_UNORM_SRGB:
case ISL_FORMAT_B4G4R4A4_UNORM:
case ISL_FORMAT_B4G4R4A4_UNORM_SRGB:
case ISL_FORMAT_B5G5R5X1_UNORM:
case ISL_FORMAT_B5G5R5X1_UNORM_SRGB:
case ISL_FORMAT_A1B5G5R5_UNORM:
case ISL_FORMAT_A4B4G4R4_UNORM:
case ISL_FORMAT_R8G8_UNORM:
case ISL_FORMAT_R8G8_UINT:
case ISL_FORMAT_EAC_R11:
case ISL_FORMAT_EAC_RG11:
case ISL_FORMAT_EAC_SIGNED_R11:
case ISL_FORMAT_EAC_SIGNED_RG11:
case ISL_FORMAT_ETC1_RGB8:
case ISL_FORMAT_ETC2_RGB8:
case ISL_FORMAT_ETC2_SRGB8:
case ISL_FORMAT_ETC2_RGB8_PTA:
case ISL_FORMAT_ETC2_SRGB8_PTA:
case ISL_FORMAT_ETC2_EAC_RGBA8:
case ISL_FORMAT_ETC2_EAC_SRGB8_A8:
case ISL_FORMAT_BC1_UNORM:
case ISL_FORMAT_BC2_UNORM:
case ISL_FORMAT_BC3_UNORM:
case ISL_FORMAT_BC4_UNORM:
case ISL_FORMAT_BC5_UNORM:
case ISL_FORMAT_BC1_UNORM_SRGB:
case ISL_FORMAT_BC2_UNORM_SRGB:
case ISL_FORMAT_BC3_UNORM_SRGB:
case ISL_FORMAT_BC4_SNORM:
case ISL_FORMAT_BC5_SNORM:
case ISL_FORMAT_BC6H_SF16:
case ISL_FORMAT_BC7_UNORM:
case ISL_FORMAT_BC7_UNORM_SRGB:
case ISL_FORMAT_BC6H_UF16:
return CMF_ML8;
default:
unreachable("Unsupported render compression format!");
return 0;