[Mesa-dev] [PATCH v2] radeonsi: update hack for HTILE corruption in ARK: Survival Evolved

Marek Olšák maraeo at gmail.com
Thu Oct 26 20:42:41 UTC 2017


Please "clear_db_cache_before_clear" and the option too. With that,
the patch is:

Reviewed-by: Marek Olšák <marek.olsak at amd.com>

Thanks,
Marek

On Thu, Oct 26, 2017 at 6:08 PM, Samuel Pitoiset
<samuel.pitoiset at gmail.com> wrote:
> It appears that flushing the DB metadata is actually not sufficient
> since the driver uses the new VS blit shaders. This looks quite
> strange though, but it seems like we need to flush DB for fixing
> the corruption.
>
> v2: rename the drirc option
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=102955
> Fixes: 69ccb9dae7 (radeonsi: use new VS blit shaders (VS inputs in SGPRs)
> Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
> ---
>  src/gallium/drivers/radeonsi/driinfo_radeonsi.h |  2 +-
>  src/gallium/drivers/radeonsi/si_blit.c          | 10 +++++-----
>  src/gallium/drivers/radeonsi/si_pipe.c          |  4 ++--
>  src/gallium/drivers/radeonsi/si_pipe.h          |  2 +-
>  src/util/drirc                                  |  2 +-
>  src/util/xmlpool/t_options.h                    |  6 +++---
>  6 files changed, 13 insertions(+), 13 deletions(-)
>
> diff --git a/src/gallium/drivers/radeonsi/driinfo_radeonsi.h b/src/gallium/drivers/radeonsi/driinfo_radeonsi.h
> index 402d3406d4..ef264b7d5e 100644
> --- a/src/gallium/drivers/radeonsi/driinfo_radeonsi.h
> +++ b/src/gallium/drivers/radeonsi/driinfo_radeonsi.h
> @@ -6,5 +6,5 @@ DRI_CONF_SECTION_PERFORMANCE
>  DRI_CONF_SECTION_END
>
>  DRI_CONF_SECTION_DEBUG
> -   DRI_CONF_RADEONSI_CLEAR_DB_META_BEFORE_CLEAR("false")
> +   DRI_CONF_RADEONSI_CLEAR_DB_BEFORE_CLEAR("false")
>  DRI_CONF_SECTION_END
> diff --git a/src/gallium/drivers/radeonsi/si_blit.c b/src/gallium/drivers/radeonsi/si_blit.c
> index fd8559ac98..ce1b5a3e1a 100644
> --- a/src/gallium/drivers/radeonsi/si_blit.c
> +++ b/src/gallium/drivers/radeonsi/si_blit.c
> @@ -901,16 +901,16 @@ static void si_clear(struct pipe_context *ctx, unsigned buffers,
>                  * corruption in ARK: Survival Evolved, but that may just be
>                  * a coincidence and the root cause is elsewhere.
>                  *
> -                * The corruption can be fixed by putting the DB metadata flush
> -                * before or after the depth clear. (suprisingly)
> +                * The corruption can be fixed by putting the DB flush before
> +                * or after the depth clear. (surprisingly)
>                  *
>                  * https://bugs.freedesktop.org/show_bug.cgi?id=102955 (apitrace)
>                  *
>                  * This hack decreases back-to-back ClearDepth performance.
>                  */
> -               if (sctx->screen->clear_db_meta_before_clear)
> -                       sctx->b.flags |= SI_CONTEXT_FLUSH_AND_INV_DB_META |
> -                                        SI_CONTEXT_PS_PARTIAL_FLUSH;
> +               if (sctx->screen->clear_db_before_clear) {
> +                       sctx->b.flags |= SI_CONTEXT_FLUSH_AND_INV_DB;
> +               }
>         }
>
>         si_blitter_begin(ctx, SI_CLEAR);
> diff --git a/src/gallium/drivers/radeonsi/si_pipe.c b/src/gallium/drivers/radeonsi/si_pipe.c
> index 759d539471..21266611c7 100644
> --- a/src/gallium/drivers/radeonsi/si_pipe.c
> +++ b/src/gallium/drivers/radeonsi/si_pipe.c
> @@ -1072,8 +1072,8 @@ struct pipe_screen *radeonsi_screen_create(struct radeon_winsys *ws,
>                 driQueryOptionb(config->options, "radeonsi_assume_no_z_fights");
>         sscreen->commutative_blend_add =
>                 driQueryOptionb(config->options, "radeonsi_commutative_blend_add");
> -       sscreen->clear_db_meta_before_clear =
> -               driQueryOptionb(config->options, "radeonsi_clear_db_meta_before_clear");
> +       sscreen->clear_db_before_clear =
> +               driQueryOptionb(config->options, "radeonsi_clear_db_before_clear");
>         sscreen->has_msaa_sample_loc_bug = (sscreen->b.family >= CHIP_POLARIS10 &&
>                                             sscreen->b.family <= CHIP_POLARIS12) ||
>                                            sscreen->b.family == CHIP_VEGA10 ||
> diff --git a/src/gallium/drivers/radeonsi/si_pipe.h b/src/gallium/drivers/radeonsi/si_pipe.h
> index c162a0fcd6..8138d4234a 100644
> --- a/src/gallium/drivers/radeonsi/si_pipe.h
> +++ b/src/gallium/drivers/radeonsi/si_pipe.h
> @@ -98,7 +98,7 @@ struct si_screen {
>         bool                            has_out_of_order_rast;
>         bool                            assume_no_z_fights;
>         bool                            commutative_blend_add;
> -       bool                            clear_db_meta_before_clear;
> +       bool                            clear_db_before_clear;
>         bool                            has_msaa_sample_loc_bug;
>         bool                            dpbb_allowed;
>         bool                            dfsm_allowed;
> diff --git a/src/util/drirc b/src/util/drirc
> index 39ac3c858c..2d1f53ccbc 100644
> --- a/src/util/drirc
> +++ b/src/util/drirc
> @@ -264,7 +264,7 @@ TODO: document the other workarounds.
>      </device>
>      <device driver="radeonsi">
>          <application name="ARK: Survival Evolved (and unintentionally the UE4 demo template)" executable="ShooterGame">
> -            <option name="radeonsi_clear_db_meta_before_clear" value="true" />
> +            <option name="radeonsi_clear_db_before_clear" value="true" />
>          </application>
>      </device>
>  </driconf>
> diff --git a/src/util/xmlpool/t_options.h b/src/util/xmlpool/t_options.h
> index 957ed61504..d5ea55efa5 100644
> --- a/src/util/xmlpool/t_options.h
> +++ b/src/util/xmlpool/t_options.h
> @@ -444,7 +444,7 @@ DRI_CONF_OPT_BEGIN_B(radeonsi_commutative_blend_add, def) \
>          DRI_CONF_DESC(en,gettext("Commutative additive blending optimizations (may cause rendering errors)")) \
>  DRI_CONF_OPT_END
>
> -#define DRI_CONF_RADEONSI_CLEAR_DB_META_BEFORE_CLEAR(def) \
> -DRI_CONF_OPT_BEGIN_B(radeonsi_clear_db_meta_before_clear, def) \
> -        DRI_CONF_DESC(en,"Clear DB metadata cache before fast depth clear") \
> +#define DRI_CONF_RADEONSI_CLEAR_DB_BEFORE_CLEAR(def) \
> +DRI_CONF_OPT_BEGIN_B(radeonsi_clear_db_before_clear, def) \
> +        DRI_CONF_DESC(en,"Clear DB cache before fast depth clear") \
>  DRI_CONF_OPT_END
> --
> 2.14.3
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list