From 8ea08747b86bba88998333dc04d983c2a2391e48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timur=20Krist=C3=B3f?= Date: Wed, 15 Oct 2025 14:12:54 +0200 Subject: [PATCH] radv: Mitigate GPU hang on Hawaii in Dota 2 and RotTR Mitigate a GPU hang in Dota 2 and Rise of the Tomb Raider by reducing the primitive rate for triangle lists. This workaround is not documented by AMD and may not be correct. The problem isn't well understood and needs further investigation to narrow down what the root cause is. Until then, it's better to give users something that works, even if not optimal. Cc: mesa-stable Part-of: --- src/amd/vulkan/radv_cmd_buffer.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index 75d1abf0429..fb712487b37 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -6868,8 +6868,19 @@ radv_get_ia_multi_vgt_param(struct radv_cmd_buffer *cmd_buffer, bool instanced_d /* Hawaii hangs if instancing is enabled and WD_SWITCH_ON_EOP is 0. * We don't know that for indirect drawing, so treat it as * always problematic. */ - if (gpu_info->family == CHIP_HAWAII && (instanced_draw || indirect_draw)) - wd_switch_on_eop = true; + if (gpu_info->family == CHIP_HAWAII) { + if (instanced_draw || indirect_draw) + wd_switch_on_eop = true; + + /* Mitigate a GPU hang in Dota 2 and Rise of the Tomb Raider. + * This workaround is not documented by AMD and may not be correct. + * Further investigation is necessary to understand it better. + */ + if (topology == V_008958_DI_PT_TRILIST) { + ia_switch_on_eop = true; + wd_switch_on_eop = true; + } + } /* Performance recommendation for 4 SE Gfx7-8 parts if * instances are smaller than a primgroup.