From: Daniel Stone <[email protected]>

Add a full rotate hook for drivers that can implement rotation on their
own.

Signed-off-by: Daniel Stone <[email protected]>
---

Daniel:
Do you mean this patch?

 hw/xfree86/modes/xf86Crtc.h   |    9 +++++++++
 hw/xfree86/modes/xf86Rotate.c |    3 +++
 2 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/hw/xfree86/modes/xf86Crtc.h b/hw/xfree86/modes/xf86Crtc.h
index 6ca0254..55bc1e9 100644
--- a/hw/xfree86/modes/xf86Crtc.h
+++ b/hw/xfree86/modes/xf86Crtc.h
@@ -47,6 +47,8 @@
 #define HARDWARE_CURSOR_ARGB                           0x00004000
 #endif
 
+#define RANDR_ROTATE_MAJOR_INTERFACE
+
 typedef struct _xf86Crtc xf86CrtcRec, *xf86CrtcPtr;
 typedef struct _xf86Output xf86OutputRec, *xf86OutputPtr;
 
@@ -148,6 +150,13 @@ typedef struct _xf86CrtcFuncs {
                 int size);
 
     /**
+     * Rotate the CRTC: avoids shadow_* hooks; driver must handle
+     * everything itself.  Optional.
+     */
+    int
+    (*rotate) (xf86CrtcPtr crtc, Rotation rotate);
+
+    /**
      * Allocate the shadow area, delay the pixmap creation until needed
      */
     void *
diff --git a/hw/xfree86/modes/xf86Rotate.c b/hw/xfree86/modes/xf86Rotate.c
index dcc3ec0..656305d 100644
--- a/hw/xfree86/modes/xf86Rotate.c
+++ b/hw/xfree86/modes/xf86Rotate.c
@@ -408,6 +408,9 @@ xf86CrtcRotate (xf86CrtcPtr crtc)
     RRTransformPtr     transform = NULL;
     Bool               damage = FALSE;
 
+    if (crtc->funcs->rotate)
+        return crtc->funcs->rotate(crtc, crtc->rotation);
+
     if (crtc->transformPresent)
        transform = &crtc->transform;
 
-- 
1.7.0.4

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to