radeonsi: add workarounds for DCC MSAA for gfx9-10

Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28846>
This commit is contained in:
Marek Olšák
2024-04-16 15:12:36 -04:00
committed by Marge Bot
parent 1929bb0d8d
commit eb7d747651
+29
View File
@@ -280,12 +280,41 @@ static int si_init_surface(struct si_screen *sscreen, struct radeon_surf *surfac
*/
if (sscreen->info.family == CHIP_RAVEN && ptex->nr_storage_samples >= 2 && bpe < 4)
flags |= RADEON_SURF_DISABLE_DCC;
/* Vega10 fails these 2x and 4x MSAA tests with DCC:
* piglit/bin/ext_framebuffer_multisample-formats 2 GL_EXT_texture_snorm
* piglit/bin/ext_framebuffer_multisample-formats 4 GL_EXT_texture_snorm
*/
if ((ptex->nr_storage_samples == 2 || ptex->nr_storage_samples == 4) && bpe <= 2 &&
util_format_is_snorm(ptex->format))
flags |= RADEON_SURF_DISABLE_DCC;
/* Vega10 fails these MSAA tests with DCC:
* piglit/bin/ext_framebuffer_multisample-formats 2 GL_ARB_texture_float
* piglit/bin/ext_framebuffer_multisample-formats 2 GL_ARB_texture_rg-float
*/
if (ptex->nr_storage_samples == 2 && bpe == 2 && util_format_is_float(ptex->format))
flags |= RADEON_SURF_DISABLE_DCC;
/* We allow S8_UINT as a color format, and piglit/draw-pixels fails if we enable DCC. */
if (ptex->format == PIPE_FORMAT_S8_UINT)
flags |= RADEON_SURF_DISABLE_DCC;
break;
case GFX10:
case GFX10_3:
if (ptex->nr_storage_samples >= 2 && !sscreen->options.dcc_msaa)
flags |= RADEON_SURF_DISABLE_DCC;
/* Navi10 fails these MSAA tests with DCC:
* piglit/bin/arb_sample_shading-samplemask 2 all all
* piglit/bin/arb_sample_shading-samplemask 4 all all
* piglit/bin/ext_framebuffer_multisample-formats 2 GL_ARB_texture_float
* piglit/bin/ext_framebuffer_multisample-formats 2 GL_EXT_texture_integer
*/
if (sscreen->info.gfx_level == GFX10 &&
(ptex->nr_storage_samples == 2 || ptex->nr_storage_samples == 4))
flags |= RADEON_SURF_DISABLE_DCC;
break;
case GFX11: