ac/surface: reject modifiers with retile_dcc and bpe != 32

radv has a comment in radv_meta_dcc_retile.c:
   * BPE is always 4 at the moment and the rest is derived from the tilemode.
radeonsi has in si_retile_dcc:
   /* We have only 1 variant per bpp for now, so expect 32 bpp. */
   assert(tex->surface.bpe == 4);

This fixes ext_image_dma_buf_import-modifiers for radeonsi.

Cc: mesa-stable
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29612>
This commit is contained in:
Pierre-Eric Pelloux-Prayer
2024-06-07 16:16:55 +02:00
committed by Marge Bot
parent 9d8073a5fd
commit abd048124a
+7 -3
View File
@@ -291,9 +291,13 @@ bool ac_is_modifier_supported(const struct radeon_info *info,
if (!options->dcc)
return false;
if (ac_modifier_has_dcc_retile(modifier) &&
(!info->use_display_dcc_with_retile_blit || !options->dcc_retile))
return false;
if (ac_modifier_has_dcc_retile(modifier)) {
/* radeonsi and radv retiling shaders only support bpe == 32. */
if (util_format_get_blocksizebits(format) != 32)
return false;
if (!info->use_display_dcc_with_retile_blit || !options->dcc_retile)
return false;
}
}
return true;