ac/gpu_info: add has_smem_with_null_prt_bug

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38698>
This commit is contained in:
Samuel Pitoiset 2025-08-07 15:44:50 +02:00 committed by Marge Bot
parent ecfda339ca
commit 978605fd06
2 changed files with 11 additions and 1 deletions

View file

@ -413,6 +413,13 @@ ac_fill_compiler_info(struct radeon_info *info, const struct drm_amdgpu_info_dev
out->has_cs_regalloc_hang_bug = info->gfx_level == GFX6 ||
info->family == CHIP_BONAIRE ||
info->family == CHIP_KABINI;
/* On GFX6-8, SMEM loads on a NULL PRT page return garbage instead of zero.
* On GFX10-12, SMEM loads on a NULL PRT page throws a VM fault and hangs the GPU.
*
* Only GFX9 works as expected.
*/
out->has_smem_with_null_prt_bug = info->gfx_level <= GFX12 && info->gfx_level != GFX9;
}
void
@ -2087,6 +2094,7 @@ void ac_print_gpu_info(FILE *f, const struct radeon_info *info, int fd)
fprintf(f, " has_attr_ring_wait_bug = %i\n", info->compiler_info.has_attr_ring_wait_bug);
fprintf(f, " has_primid_instancing_bug = %i\n", info->compiler_info.has_primid_instancing_bug);
fprintf(f, " has_cs_regalloc_hang_bug = %i\n", info->compiler_info.has_cs_regalloc_hang_bug);
fprintf(f, " has_smem_with_null_prt_bug = %i\n", info->compiler_info.has_smem_with_null_prt_bug);
fprintf(f, "Ring info:\n");
if (info->gfx_level >= GFX11) {

View file

@ -200,8 +200,10 @@ struct ac_compiler_info {
uint32_t has_primid_instancing_bug : 1;
/* GFX6 and certain GFX7 chips: bug with compute workgroups larger 256 invocations. */
uint32_t has_cs_regalloc_hang_bug : 1;
/* GFX6-GFX12, except GFX9: SMEM loads on NULL PRT page don't work. */
uint32_t has_smem_with_null_prt_bug : 1;
uint32_t reserved : 4;
uint32_t reserved : 3;
};
struct radeon_info {