From d179312b53d94a4f0ffe1e88569525300afb4985 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Wed, 10 Oct 2018 14:04:42 +0200 Subject: [PATCH] radv: add a workaround for a VGT hang with prim restart and strips Otherwise, Yakuza and The Evil Within hang the GPU with DXVK. This apparently only works on Polaris. Suggested by Marek. Cc: mesa-stable@lists.freedesktop.org Signed-off-by: Samuel Pitoiset Reviewed-by: Bas Nieuwenhuizen --- src/amd/vulkan/radv_pipeline.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/amd/vulkan/radv_pipeline.c b/src/amd/vulkan/radv_pipeline.c index 1e7d7dc945f..426b417e172 100644 --- a/src/amd/vulkan/radv_pipeline.c +++ b/src/amd/vulkan/radv_pipeline.c @@ -3411,6 +3411,17 @@ radv_compute_ia_multi_vgt_param_helpers(struct radv_pipeline *pipeline, } } + /* Workaround for a VGT hang when strip primitive types are used with + * primitive restart. + */ + if (pipeline->graphics.prim_restart_enable && + (prim == V_008958_DI_PT_LINESTRIP || + prim == V_008958_DI_PT_TRISTRIP || + prim == V_008958_DI_PT_LINESTRIP_ADJ || + prim == V_008958_DI_PT_TRISTRIP_ADJ)) { + ia_multi_vgt_param.partial_vs_wave = true; + } + ia_multi_vgt_param.base = S_028AA8_PRIMGROUP_SIZE(ia_multi_vgt_param.primgroup_size - 1) | /* The following field was moved to VGT_SHADER_STAGES_EN in GFX9. */ -- 2.30.2