[Intel-gfx] [PATCH 2/2] drm/i915: Add 90/270 rotation for NV12 format.

Runyan, Arthur J arthur.j.runyan at intel.com
Mon May 18 12:19:19 PDT 2015


The statement is correct - " the X offset must always be even for YUV422+NV12, and the Y offset must be even when rotated 90/270 degrees."

>From: Konduru, Chandra
>> From: Runyan, Arthur J
>>
>> I'll take a look.
>
>Art, Any update to close on this?
>
>[snip]
>
>> > > > @@ -13144,6 +13149,10 @@ intel_check_primary_plane(struct
>> > > > drm_plane
>> > > *plane,
>> > > >  	if (fb && format_is_yuv(fb->pixel_format)) {
>> > > >  		src->x1 &= ~0x10000;
>> > > >  		src->x2 &= ~0x10000;
>> > > > +		if (intel_rotation_90_or_270(state->base.rotation)) {
>> > > > +			src->y1 &= ~0x10000;
>> > > > +			src->y2 &= ~0x10000;
>> > > > +		}
>> > >
>> > > This feels fishy. Why do we need to make the Y coordinates even? The
>> > > reson for making the X coordinates even is to make them macropixel
>> > > aligned, but there are no macropixels in the Y direction so this
>> > > doesn't make much sense to me.
>> >
>> > Hi Ville,
>> > Per skl spec, it is expecting even lines aligned with 90/270 rotation
>> > not only for NV12 but also for 422 formats. Perhaps we might have
>> > missed when 90/270 enabled for packed YUV formats.
>>
>> The src coordinates are always in the fb orientation, so macropixels appear in
>> the src.x direction only. And when we do 90/270 rotation the hardware Y offset
>> comes from src.x coordinates.
>>
>> The spec does seem a bit confused though; It claims the X offset must always be
>> even for YUV422+NV12, and the Y offset must be even when rotated 90/270
>> degrees. I suspect the X offset text just didn't get updated when 90/270 rotation
>> was added.
>>
>> Art, can you confirm?
>>
>> --
>> Ville Syrjälä
>> Intel OTC


More information about the Intel-gfx mailing list