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>
This commit is contained in:
Samuel Pitoiset 2018-10-10 14:04:42 +02:00
parent 3bc012a34e
commit d179312b53
1 changed files with 11 additions and 0 deletions

View File

@ -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. */