[PATCH] drm/i915/gt: Disable Redundant HZ Plane expansions for MTL/ARL and DG2
Chery, Nanley G
nanley.g.chery at intel.com
Mon Aug 26 22:58:07 UTC 2024
> -----Original Message-----
> From: Roper, Matthew D <matthew.d.roper at intel.com>
> Sent: Friday, August 23, 2024 3:26 PM
> To: Bhadane, Dnyaneshwar <dnyaneshwar.bhadane at intel.com>
> Cc: intel-gfx at lists.freedesktop.org; Chery, Nanley G <nanley.g.chery at intel.com>
> Subject: Re: [PATCH] drm/i915/gt: Disable Redundant HZ Plane expansions for MTL/ARL and DG2
>
> On Fri, Aug 23, 2024 at 03:40:09PM +0530, Dnyaneshwar Bhadane wrote:
> > Program HZ Plane disable bit to 1 to stop sending the redundant
> > plane expansions.
> >
> > Bspec: 68331
> >
> > Signed-off-by: Dnyaneshwar Bhadane <dnyaneshwar.bhadane at intel.com>
> > ---
> > drivers/gpu/drm/i915/gt/intel_gt_regs.h | 5 +++--
> > drivers/gpu/drm/i915/gt/intel_workarounds.c | 17 +++++++++++++++--
> > 2 files changed, 18 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/gt/intel_gt_regs.h b/drivers/gpu/drm/i915/gt/intel_gt_regs.h
> > index e42b3a5d4e63..74b633a78eda 100644
> > --- a/drivers/gpu/drm/i915/gt/intel_gt_regs.h
> > +++ b/drivers/gpu/drm/i915/gt/intel_gt_regs.h
> > @@ -446,8 +446,9 @@
> >
> > /* GEN7 chicken */
> > #define GEN7_COMMON_SLICE_CHICKEN1 _MMIO(0x7010)
> > -#define GEN7_CSC1_RHWO_OPT_DISABLE_IN_RCC (1 << 10)
> > -#define GEN9_RHWO_OPTIMIZATION_DISABLE (1 << 14)
> > +#define GEN9_RHWO_OPTIMIZATION_DISABLE REG_BIT(14)
> > +#define GEN7_CSC1_RHWO_OPT_DISABLE_IN_RCC REG_BIT(10)
> > +#define HIZ_PLANE_OPTIMIZATION_DISABLE REG_BIT(9)
> >
> > #define COMMON_SLICE_CHICKEN2 _MMIO(0x7014)
> > #define GEN9_PBE_COMPRESSED_HASH_SELECTION (1 << 13)
> > diff --git a/drivers/gpu/drm/i915/gt/intel_workarounds.c b/drivers/gpu/drm/i915/gt/intel_workarounds.c
> > index bfe6d8fc820f..ff257bb2d15a 100644
> > --- a/drivers/gpu/drm/i915/gt/intel_workarounds.c
> > +++ b/drivers/gpu/drm/i915/gt/intel_workarounds.c
> > @@ -1550,6 +1550,13 @@ dg2_gt_workarounds_init(struct intel_gt *gt, struct i915_wa_list *wal)
> >
> > /* Wa_14010648519:dg2 */
> > wa_mcr_write_or(wal, XEHP_L3NODEARBCFG, XEHP_LNESPARE);
> > +
> > + /*
> > + * DisableHIZPlaneOptimizationForRedundantZPlaneUnit
> > + * This is not WA,THis is required by recommended tuning setting.
> > + */
> > + wa_masked_dis(wal,
> > + GEN7_COMMON_SLICE_CHICKEN1, HIZ_PLANE_OPTIMIZATION_DISABLE);
>
> The bspec's performance guide page says that this should be done
> selectively, on a workload-specific basis when certain conditions are
> met. So we don't want to set the value of this bit directly in the KMD
> because we don't know anything about the workloads being executed. We
> just want to make the register writable from userspace so that they can
> flip this bit themselves when it's appropriate. The
> {dg2,xelp}_whitelist_build changes you have farther down take care of
> granting userspace access to do this; we can drop the changes here to
> the {dg2,xelpg}_gt_workarounds_init functions.
>
> From a quick skim of the Mesa source code, it looks like Mesa is only
> setting this register bit right now on the older gen12 platforms to
> address Wa_1808121037 (in src/intel/vulkan/genX_cmd_buffer.c and
> src/gallium/drivers/iris/iris_state.c), but I don't see them setting
> this anywhere that isn't guarded by "#if INTEL_NEEDS_WA_1808121037" yet.
> They might not have seen the update in the performance guide, or they
> might have been waiting for us to whitelist the register on these
> platforms before adding their implementation.
>
> +Cc Nanley from the Mesa team since he implemented the Wa_1808121037
> code and will probably know best if/how the Mesa code should be updated
> to also address the DG2 + MTL performance tuning setting recommended on
> bspec 68331.
>
Thanks for the heads up! I'll file an mesa issue about this.
-Nanley
>
> Matt
>
> > }
> >
> > static void
> > @@ -1570,6 +1577,12 @@ xelpg_gt_workarounds_init(struct intel_gt *gt, struct i915_wa_list *wal)
> > /* Wa_14015795083 */
> > wa_write_clr(wal, GEN7_MISCCPCTL, GEN12_DOP_CLOCK_GATE_RENDER_ENABLE);
> > }
> > + /*
> > + * DisableHIZPlaneOptimizationForRedundantZPlaneUnit
> > + * This is not WA, This is required by recommended tuning setting.
> > + */
> > + wa_masked_dis(wal,
> > + GEN7_COMMON_SLICE_CHICKEN1, HIZ_PLANE_OPTIMIZATION_DISABLE);
> >
> > /*
> > * Unlike older platforms, we no longer setup implicit steering here;
> > @@ -2072,7 +2085,7 @@ static void dg2_whitelist_build(struct intel_engine_cs *engine)
> > case RENDER_CLASS:
> > /* Required by recommended tuning setting (not a workaround) */
> > whitelist_mcr_reg(w, XEHP_COMMON_SLICE_CHICKEN3);
> > -
> > + whitelist_reg(w, GEN7_COMMON_SLICE_CHICKEN1);
> > break;
> > default:
> > break;
> > @@ -2087,7 +2100,7 @@ static void xelpg_whitelist_build(struct intel_engine_cs *engine)
> > case RENDER_CLASS:
> > /* Required by recommended tuning setting (not a workaround) */
> > whitelist_mcr_reg(w, XEHP_COMMON_SLICE_CHICKEN3);
> > -
> > + whitelist_reg(w, GEN7_COMMON_SLICE_CHICKEN1);
> > break;
> > default:
> > break;
> > --
> > 2.34.1
> >
>
> --
> Matt Roper
> Graphics Software Engineer
> Linux GPU Platform Enablement
> Intel Corporation
More information about the Intel-gfx
mailing list