[Intel-gfx] [PATCH] drm/i915/dg2: Implement WM0 cursor WA for DG2
Lisovskiy, Stanislav
stanislav.lisovskiy at intel.com
Wed Nov 24 10:33:00 UTC 2021
On Wed, Nov 24, 2021 at 12:23:08PM +0200, Jani Nikula wrote:
> On Thu, 18 Nov 2021, Stanislav Lisovskiy <stanislav.lisovskiy at intel.com> wrote:
> > Bug in the register unit which results in WM1 register
> > used when only WM0 is enabled on cursor.
> > Software workaround is when only WM0 enabled on cursor,
> > copy contents of CUR_WM_0[30:0] (exclude the enable bit)
> > into CUR_WM_1[30:0].
> >
> > v2: - s/dev_priv/i915/ (Ville Syrjälä)
> > - Removed unneeded brackets (Ville Syrjälä)
> >
> > HSDES: 14012656716
> >
> > Reviewed-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> > Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy at intel.com>
> > ---
> > drivers/gpu/drm/i915/intel_pm.c | 18 +++++++++++++-----
> > 1 file changed, 13 insertions(+), 5 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> > index 89dc7f69baf3..01fa3fac1b57 100644
> > --- a/drivers/gpu/drm/i915/intel_pm.c
> > +++ b/drivers/gpu/drm/i915/intel_pm.c
> > @@ -5095,6 +5095,18 @@ skl_check_nv12_wm_level(struct skl_wm_level *wm, struct skl_wm_level *uv_wm,
> > }
> > }
> >
> > +static bool icl_need_wm1_wa(struct drm_i915_private *i915,
> > + enum plane_id plane_id)
>
> Commit subject having "WM0 cursor WA" and the function saying "wm1_wa"
> looks like a discrepancy to the casual reader.
Agree, not the best naming. Should be either WM0 or WM1.
Thing is that due to nature of that W/A both can be correct.
Patch has been pushed week ago, after r-b from Ville.
I will send a fix anyway.
Stan
>
> BR,
> Jani.
>
> > +{
> > + /*
> > + * Wa_1408961008:icl, ehl
> > + * Wa_14012656716:tgl, adl
> > + * Underruns with WM1+ disabled
> > + */
> > + return DISPLAY_VER(i915) == 11 ||
> > + (IS_DISPLAY_VER(i915, 12, 13) && plane_id == PLANE_CURSOR);
> > +}
> > +
> > static int
> > skl_allocate_plane_ddb(struct intel_atomic_state *state,
> > struct intel_crtc *crtc)
> > @@ -5265,11 +5277,7 @@ skl_allocate_plane_ddb(struct intel_atomic_state *state,
> > skl_check_nv12_wm_level(&wm->wm[level], &wm->uv_wm[level],
> > total[plane_id], uv_total[plane_id]);
> >
> > - /*
> > - * Wa_1408961008:icl, ehl
> > - * Underruns with WM1+ disabled
> > - */
> > - if (DISPLAY_VER(dev_priv) == 11 &&
> > + if (icl_need_wm1_wa(dev_priv, plane_id) &&
> > level == 1 && wm->wm[0].enable) {
> > wm->wm[level].blocks = wm->wm[0].blocks;
> > wm->wm[level].lines = wm->wm[0].lines;
>
> --
> Jani Nikula, Intel Open Source Graphics Center
More information about the Intel-gfx
mailing list