[PATCH v2 1/2] drm/vc4: Fix negative X/Y positioning on SAND planes

Boris Brezillon boris.brezillon at bootlin.com
Thu Dec 6 19:29:19 UTC 2018


On Thu, 06 Dec 2018 10:59:17 -0800
Eric Anholt <eric at anholt.net> wrote:

> > +
> > +		/*
> > +		 * SCALER_PITCH0_SINK_PIX does not seem to work for SAND
> > +		 * formats. Specify a negative START_X instead, even if it's
> > +		 * less efficient.
> > +		 */
> > +		if (x_off)
> > +			vc4_state->crtc_x = -x_off;  
> 
> Wait. If we were supposed to start at a nonzero x position within the
> FB, then we instead put the image off the left hand side of the screen?
> That seems wrong.

Yep, I overlooked this case.

> 
> Did you test if we can just vc4_state->offsets[i] += x_off * cpp?

Yep, I tried, and it doesn't seem to work. We have to tell the HVS that
some pixels must be skipped at the beginning of each line of the first
tile. That's what SINK_PIX(x_off) is supposed to do, but it seems to be
broken for 2 reasons:

1/ the max value of SINK_PIX is 63, but the HVS supports 128 and 256
   bytes tiles.
2/ looks like the UV plane is truncated when we specify a SINK_PIX!=0.
   Don't know why exactly.


More information about the dri-devel mailing list