<div dir="ltr"><div>It's up to you as long as you're OK with downgraded performance of triangle strips with primitive restart.</div><div><br></div><div>Marek<br></div><div><br><div class="gmail_quote"><div dir="ltr">On Tue, Dec 11, 2018 at 10:08 AM Samuel Pitoiset <<a href="mailto:samuel.pitoiset@gmail.com">samuel.pitoiset@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">ping?<br>
<br>
After looking into this again today, I can't find any better solutions. <br>
We should probably push this patch because at least two games are <br>
affected. My opinion is that correctness is more important than performance.<br>
<br>
On 10/11/18 10:42 AM, Samuel Pitoiset wrote:<br>
> WD_SWITCH_ON_EOP seems to be the only workaround that fixes<br>
> the GPU hangs with Yakuza and The Evil Within on Vega. I don't<br>
> like as it might decrease geometry performance as pointed out<br>
> by Marek, but I don't know how to implement a better one.<br>
> <br>
> Cc: <a href="mailto:mesa-stable@lists.freedesktop.org" target="_blank">mesa-stable@lists.freedesktop.org</a><br>
> Signed-off-by: Samuel Pitoiset <<a href="mailto:samuel.pitoiset@gmail.com" target="_blank">samuel.pitoiset@gmail.com</a>><br>
> ---<br>
>   src/amd/vulkan/radv_pipeline.c | 13 +++++++++++--<br>
>   1 file changed, 11 insertions(+), 2 deletions(-)<br>
> <br>
> diff --git a/src/amd/vulkan/radv_pipeline.c b/src/amd/vulkan/radv_pipeline.c<br>
> index 426b417e172..2256b2c58e9 100644<br>
> --- a/src/amd/vulkan/radv_pipeline.c<br>
> +++ b/src/amd/vulkan/radv_pipeline.c<br>
> @@ -3412,14 +3412,23 @@ radv_compute_ia_multi_vgt_param_helpers(struct radv_pipeline *pipeline,<br>
>       }<br>
>   <br>
>       /* Workaround for a VGT hang when strip primitive types are used with<br>
> -      * primitive restart.<br>
> +      * primitive restart. This fixes GPU hangs with Yakuza and The Evil<br>
> +      * Within, at least. Not sure if we can implement a better workaround.<br>
>        */<br>
>       if (pipeline->graphics.prim_restart_enable &&<br>
>           (prim == V_008958_DI_PT_LINESTRIP ||<br>
>            prim == V_008958_DI_PT_TRISTRIP ||<br>
>            prim == V_008958_DI_PT_LINESTRIP_ADJ ||<br>
>            prim == V_008958_DI_PT_TRISTRIP_ADJ)) {<br>
> -             ia_multi_vgt_param.partial_vs_wave = true;<br>
> +             if (device->physical_device->rad_info.chip_class >= GFX9) {<br>
> +                     /* XXX: This might decrease geometry performance by 2x,<br>
> +                      * but this appears to be the only workaround that<br>
> +                      * fixes the GPU hang.<br>
> +                      */<br>
> +                     ia_multi_vgt_param.wd_switch_on_eop = true;<br>
> +             } else {<br>
> +                     ia_multi_vgt_param.partial_vs_wave = true;<br>
> +             }<br>
>       }<br>
>   <br>
>       ia_multi_vgt_param.base =<br>
> <br>
_______________________________________________<br>
mesa-stable mailing list<br>
<a href="mailto:mesa-stable@lists.freedesktop.org" target="_blank">mesa-stable@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-stable" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/mesa-stable</a><br>
</blockquote></div></div></div>