[Intel-gfx] [PATCH 49/89] drm/i915/skl: Program the DDB allocation
Damien Lespiau
damien.lespiau at intel.com
Sat Sep 27 16:17:58 CEST 2014
On Fri, Sep 19, 2014 at 01:03:15PM +0300, Ville Syrjälä wrote:
> > diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> > index 0ddcbad..756ff16 100644
> > --- a/drivers/gpu/drm/i915/intel_pm.c
> > +++ b/drivers/gpu/drm/i915/intel_pm.c
> > @@ -3393,6 +3393,15 @@ static void skl_write_wm_values(struct drm_i915_private *dev_priv,
> > I915_WRITE(PLANE_WM_TRANS(pipe, i),
> > new->plane_trans[pipe][i]);
> > I915_WRITE(CUR_WM_TRANS(pipe), new->cursor_trans[pipe]);
> > +
> > + for (i = 0; i < intel_num_planes(crtc); i++)
> > + I915_WRITE(PLANE_BUF_CFG(pipe, i),
> > + new->ddb.plane[pipe][i].end << 16 |
>
> The spec doesn't say if end is inclusive or exclusive. Someone actually
> confirmed that from someone or tested it?
I remember testing it and having the end of a plane match the start of
another produces artefacts.
> > + new->ddb.plane[pipe][i].start);
> > +
> > + I915_WRITE(CUR_BUF_CFG(pipe),
> > + new->ddb.cursor[pipe].end << 16 |
> > + new->ddb.cursor[pipe].start);
> > }
> > }
>
> And here we land in deep doodoo wrt. changing the DDB allocation
> for active pipes. Someone needs to implement the correct logic to
> sequence the DDB allocation changes so that the allocations don't
> overlap at any point in time.
>
> So this needs a big FIXME at the very least.
As seen on IRC, the DDB regs are double buffered and the "flush" patch
is supposed to take care of that.
--
Damien
More information about the Intel-gfx
mailing list