diff options
author | Samuel Pitoiset <samuel.pitoiset@gmail.com> | 2018-10-10 14:04:42 +0200 |
---|---|---|
committer | Samuel Pitoiset <samuel.pitoiset@gmail.com> | 2018-10-11 10:16:11 +0200 |
commit | d179312b53d94a4f0ffe1e88569525300afb4985 (patch) | |
tree | b5dfe10e4c423abc9fac4c9f5c42c527e13d758c | |
parent | 3bc012a34e710f4e6029b889b33536b1c6eb0092 (diff) |
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 <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
-rw-r--r-- | src/amd/vulkan/radv_pipeline.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/amd/vulkan/radv_pipeline.c b/src/amd/vulkan/radv_pipeline.c index 1e7d7dc945ff..426b417e172f 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. */ |