intel: Disable CCS_E support for YCRCB on gfx12

The table in Bspec 47715 lists these formats as "Not Supported" in the
"Lossless Compression Support" column.

Reviewed-by: Iván Briano <ivan.briano@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39628>
This commit is contained in:
Nanley Chery 2024-11-12 10:13:50 -05:00 committed by Marge Bot
parent a66d19b691
commit 23a3c8c972
3 changed files with 14 additions and 20 deletions

View file

@ -2789,18 +2789,6 @@ get_ccs_compatible_uint_format(const struct isl_format_layout *fmtl)
case ISL_FORMAT_R8G8_SINT:
return ISL_FORMAT_R8G8_UINT;
case ISL_FORMAT_YCRCB_NORMAL:
case ISL_FORMAT_YCRCB_SWAPY:
case ISL_FORMAT_YCRCB_SWAPUV:
case ISL_FORMAT_YCRCB_SWAPUVY:
/* Tiger Lake starts claiming CCS_E support for certain YCRCB formats.
* BLORP chooses to take the CCS-compatible format path whenever ISL
* claims CCS_E support on a format, not when CCS_E is actually used.
* Therefore, if these formats are going to be used with BLORP, we need
* a CCS-compatible format. R8G8_UINT seems as good as any.
*/
return ISL_FORMAT_R8G8_UINT;
case ISL_FORMAT_R8_SNORM:
case ISL_FORMAT_R8_SINT:
return ISL_FORMAT_R8_UINT;

View file

@ -3931,13 +3931,19 @@ _isl_surf_info_supports_ccs(const struct isl_device *dev,
enum isl_format format,
isl_surf_usage_flags_t usage)
{
if (!isl_format_supports_ccs_d(dev->info, format) &&
!isl_format_supports_ccs_e(dev->info, format))
return false;
/* CCS is only for color images on Gfx7-11 */
if (ISL_GFX_VER(dev) <= 11 && isl_surf_usage_is_depth_or_stencil(usage))
return false;
/* On ICL and prior, CCS is only for RGB images.
* RGB images must support either CCS_D or CCS_E.
*/
if (isl_format_is_yuv(format) ||
isl_surf_usage_is_depth_or_stencil(usage)) {
if (ISL_GFX_VER(dev) <= 11)
return false;
} else {
if (!isl_format_supports_ccs_d(dev->info, format) &&
!isl_format_supports_ccs_e(dev->info, format))
return false;
}
/* With depth surfaces on gfx12, HIZ is required for CCS. */
if (ISL_GFX_VER(dev) == 12 && isl_surf_usage_is_depth(usage) &&

View file

@ -266,7 +266,7 @@ static const struct surface_format_info format_info[] = {
SF( 90, x, x, x, x, x, x, x, x, x, x, x, x, I8_SINT)
SF( 45, 45, x, x, x, x, x, x, x, x, x, x, x, DXT1_RGB_SRGB)
SF( Y, Y, x, x, x, x, x, x, x, x, x, x, x, R1_UNORM)
SF( Y, Y, x, Y, Y, x, x, x, 60, x, x, 120, x, YCRCB_NORMAL)
SF( Y, Y, x, Y, Y, x, x, x, 60, x, x, x, x, YCRCB_NORMAL)
SF( Y, Y, x, Y, Y, x, x, x, 60, x, x, x, x, YCRCB_SWAPUVY)
SF( 45, 45, x, x, x, x, x, x, x, x, x, x, x, P2_UNORM_PALETTE0)
SF( 45, 45, x, x, x, x, x, x, x, x, x, x, x, P2_UNORM_PALETTE1)
@ -280,7 +280,7 @@ static const struct surface_format_info format_info[] = {
SF( Y, Y, x, x, x, x, x, x, x, x, x, x, x, BC3_UNORM_SRGB)
SF( Y, x, x, x, x, x, x, x, x, x, x, x, x, MONO8)
SF( Y, Y, x, x, Y, x, x, x, 60, x, x, x, x, YCRCB_SWAPUV)
SF( Y, Y, x, x, Y, x, x, x, 60, x, x, 120, x, YCRCB_SWAPY)
SF( Y, Y, x, x, Y, x, x, x, 60, x, x, x, x, YCRCB_SWAPY)
SF( Y, Y, x, x, x, x, x, x, x, x, x, x, x, DXT1_RGB)
/* smpl filt shad CK RT AB VB SO color TW TR ccs_e TA */
SF( Y, Y, x, x, x, x, x, x, x, x, x, x, x, FXT1)