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 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel