Re: [PATCH] staging: drm/omap: add rotation properties

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Jun 29, 2012 at 07:17:23AM -0500, Rob Clark wrote:
> On Fri, Jun 29, 2012 at 5:46 AM, Tomi Valkeinen <tomi.valkeinen@xxxxxx> wrote:
> > On Wed, 2012-06-27 at 09:06 -0500, Rob Clark wrote:
> >> From: Rob Clark <rob@xxxxxx>
> >>
> >> Use tiled buffers for rotated/reflected scanout, with CRTC and plane
> >> properties as the interface for userspace to configure rotation.
> >>
> >> Signed-off-by: Rob Clark <rob@xxxxxx>
> >
> >> +/* this should probably be in drm-core to standardize amongst drivers */
> >> +#define DRM_ROTATE_0 0
> >> +#define DRM_ROTATE_90        1
> >> +#define DRM_ROTATE_180       2
> >> +#define DRM_ROTATE_270       3
> >> +#define DRM_REFLECT_X        4
> >> +#define DRM_REFLECT_Y        5
> >
> > Are both reflect X and Y needed? You can get all the possible
> > orientations with just one of the reflects.
> >
> > And I think the word "mirror" represents nicely what the reflect does,
> > i.e. if you look at the mirror, the image you see is flipped
> > horizontally.
> 
> fwiw these values are aligned with what is used in userspace xrandr..
> an earlier version of this patch used just 3 bits, which where aligned
> with what the omap hw uses and can describe all possible combinations
> of mirroring and isomorphic rotation (x-invert, y-invert, and
> xy-flip).  But the advantage of the xrandr approach is you can more
> easily leave out bits for rotation/mirroring modes that your hw does
> not support.. for example if some hw supports only certain rotations
> or does not support mirror/reflect.

When I hear "mirror" I always think of it as the happening after
rotation, but that's not how xrandr does things. I suppose "reflection"
has more or less the same connotation for me, but since it's already
used by xrandr, I know I have to do the necessary mental gymnastics.

If you think about it in terms of matrix multiplication, xrandr does
things like this: x' = Rot * Ref * x, whereas for me the more natural
order (for whatever reason) would be x' = Ref * Rot * x, where x is the
source coordinates, and x' the destination coordinates.

IIRC in dss mirroring was specified in the post-rotation way, and
the direction of the rotation was also opposite to xrandr (cw in dss,
ccw in xrandr).

So FWIW, my vote goes to "reflect" if we want to match xrandr
semantics. Also I agree on the number of bits, six is better than
three since it allows you to describe the hw capabilities.

-- 
Ville Syrjälä
Intel OTC
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux