On 12/11/18 8:57 PM, Marek Olšák wrote:
It's up to you as long as you're OK with downgraded performance of triangle strips with primitive restart.

I'm OK with it, at least for now. From my point of view, it's definitely better to avoid GPU hangs.

Bas, what's your opinion?


Marek

On Tue, Dec 11, 2018 at 10:08 AM Samuel Pitoiset <samuel.pitoi...@gmail.com <mailto:samuel.pitoi...@gmail.com>> wrote:

    ping?

    After looking into this again today, I can't find any better solutions.
    We should probably push this patch because at least two games are
    affected. My opinion is that correctness is more important than
    performance.

    On 10/11/18 10:42 AM, Samuel Pitoiset wrote:
     > WD_SWITCH_ON_EOP seems to be the only workaround that fixes
     > the GPU hangs with Yakuza and The Evil Within on Vega. I don't
     > like as it might decrease geometry performance as pointed out
     > by Marek, but I don't know how to implement a better one.
     >
     > Cc: mesa-sta...@lists.freedesktop.org
    <mailto:mesa-sta...@lists.freedesktop.org>
     > Signed-off-by: Samuel Pitoiset <samuel.pitoi...@gmail.com
    <mailto:samuel.pitoi...@gmail.com>>
     > ---
     >   src/amd/vulkan/radv_pipeline.c | 13 +++++++++++--
     >   1 file changed, 11 insertions(+), 2 deletions(-)
     >
     > diff --git a/src/amd/vulkan/radv_pipeline.c
    b/src/amd/vulkan/radv_pipeline.c
     > index 426b417e172..2256b2c58e9 100644
     > --- a/src/amd/vulkan/radv_pipeline.c
     > +++ b/src/amd/vulkan/radv_pipeline.c
     > @@ -3412,14 +3412,23 @@
    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.
     > +      * primitive restart. This fixes GPU hangs with Yakuza and
    The Evil
     > +      * Within, at least. Not sure if we can implement a better
    workaround.
     >        */
     >       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;
     > +             if (device->physical_device->rad_info.chip_class >=
    GFX9) {
     > +                     /* XXX: This might decrease geometry
    performance by 2x,
     > +                      * but this appears to be the only
    workaround that
     > +                      * fixes the GPU hang.
     > +                      */
     > +                     ia_multi_vgt_param.wd_switch_on_eop = true;
     > +             } else {
     > +                     ia_multi_vgt_param.partial_vs_wave = true;
     > +             }
     >       }
     >
     >       ia_multi_vgt_param.base =
     >
    _______________________________________________
    mesa-stable mailing list
    mesa-sta...@lists.freedesktop.org
    <mailto:mesa-sta...@lists.freedesktop.org>
    https://lists.freedesktop.org/mailman/listinfo/mesa-stable

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to