ac/gpu_info: add has_cp_dma_with_null_prt_bug

CP DMA is broken on GFX8-9 with NULL PRT pages. The workaround is to
use compute instead.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35071>
This commit is contained in:
Samuel Pitoiset 2025-05-20 14:10:14 +02:00 committed by Marge Bot
parent 85d2c8f8ae
commit 235f70e475
2 changed files with 6 additions and 0 deletions

View file

@ -1315,6 +1315,11 @@ ac_query_gpu_info(int fd, void *dev_p, struct radeon_info *info,
*/ */
info->has_attr_ring_wait_bug = info->gfx_level == GFX11 || info->gfx_level == GFX11_5; info->has_attr_ring_wait_bug = info->gfx_level == GFX11 || info->gfx_level == GFX11_5;
/* On GFX8-9, CP DMA is broken with NULL PRT page, it doesn't read 0 and it
* doesn't discard writes which causes GPU hangs.
*/
info->has_cp_dma_with_null_prt_bug = info->family >= CHIP_POLARIS10 && info->gfx_level <= GFX9;
/* When LLVM is fixed to handle multiparts shaders, this value will depend /* When LLVM is fixed to handle multiparts shaders, this value will depend
* on the known good versions of LLVM. Until then, enable the equivalent WA * on the known good versions of LLVM. Until then, enable the equivalent WA
* in the nir -> llvm backend. * in the nir -> llvm backend.

View file

@ -120,6 +120,7 @@ struct radeon_info {
bool has_ngg_passthru_no_msg; bool has_ngg_passthru_no_msg;
bool has_export_conflict_bug; bool has_export_conflict_bug;
bool has_attr_ring_wait_bug; bool has_attr_ring_wait_bug;
bool has_cp_dma_with_null_prt_bug;
bool has_vrs_ds_export_bug; bool has_vrs_ds_export_bug;
bool has_taskmesh_indirect0_bug; bool has_taskmesh_indirect0_bug;
bool sdma_supports_sparse; /* Whether SDMA can safely access sparse resources. */ bool sdma_supports_sparse; /* Whether SDMA can safely access sparse resources. */