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

x11proto-randr: Changes to 'debian-experimental'



 .gitignore                        |   77 ++++
 ChangeLog                         |  283 ++++++++++++++++
 Makefile.am                       |   16 
 README                            |   30 +
 configure.ac                      |   12 
 debian/README.source              |   73 ++++
 debian/changelog                  |   53 +++
 debian/control                    |   15 
 debian/rules                      |   31 -
 debian/watch                      |    1 
 debian/x11proto-randr-dev.install |    2 
 debian/xsfbs/repack.sh            |   32 +
 debian/xsfbs/xsfbs.sh             |   78 ----
 randr.h                           |   23 +
 randrproto.h                      |  120 +++++++
 randrproto.txt                    |  640 ++++++++++++++++++++++++++++++--------
 16 files changed, 1226 insertions(+), 260 deletions(-)

New commits:
commit 88ac88f5aa5bb895348a127b3041c2f0063d0d4e
Author: Julien Cristau <jcristau@debian.org>
Date:   Mon Feb 14 16:34:50 2011 +0100

    Upload to experimental

diff --git a/debian/changelog b/debian/changelog
index b377925..9a7f205 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,4 @@
-x11proto-randr (1.3.99.1-1) UNRELEASED; urgency=low
+x11proto-randr (1.3.99.1-1) experimental; urgency=low
 
   * New git snapshot.
   * Remove Andres Salomon and David Nusinow from Uploaders.  Thanks for your
@@ -6,7 +6,7 @@ x11proto-randr (1.3.99.1-1) UNRELEASED; urgency=low
   * debian/rules: stop using touch for stampfiles, random whitespace cleanup.
   * Bump Standards-Version to 3.9.1.
 
- -- Julien Cristau <jcristau@debian.org>  Mon, 03 Jan 2011 20:17:46 +0100
+ -- Julien Cristau <jcristau@debian.org>  Mon, 14 Feb 2011 16:34:33 +0100
 
 x11proto-randr (1.3.2-1) unstable; urgency=low
 

commit 08612c2d31a70dfe2141417ed2ad00ca6fa98a24
Author: Julien Cristau <jcristau@debian.org>
Date:   Mon Feb 14 16:34:29 2011 +0100

    Bump Standards-Version to 3.9.1.

diff --git a/debian/changelog b/debian/changelog
index b7e9b79..b377925 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -4,6 +4,7 @@ x11proto-randr (1.3.99.1-1) UNRELEASED; urgency=low
   * Remove Andres Salomon and David Nusinow from Uploaders.  Thanks for your
     work!
   * debian/rules: stop using touch for stampfiles, random whitespace cleanup.
+  * Bump Standards-Version to 3.9.1.
 
  -- Julien Cristau <jcristau@debian.org>  Mon, 03 Jan 2011 20:17:46 +0100
 
diff --git a/debian/control b/debian/control
index 0ececab..e7c2f3e 100644
--- a/debian/control
+++ b/debian/control
@@ -8,7 +8,7 @@ Build-Depends:
  automake,
  pkg-config,
  xutils-dev (>= 1:7.5~1)
-Standards-Version: 3.8.3
+Standards-Version: 3.9.1
 Vcs-Git: git://git.debian.org/git/pkg-xorg/proto/x11proto-randr
 Vcs-Browser: http://git.debian.org/?p=pkg-xorg/proto/x11proto-randr.git
 

commit 6a0715f5239b6ea64b4a8d53a8656246784b5c5c
Author: Julien Cristau <jcristau@debian.org>
Date:   Mon Feb 14 16:33:23 2011 +0100

    debian/rules: stop using touch for stampfiles, random whitespace cleanup.

diff --git a/debian/changelog b/debian/changelog
index 5b1400e..b7e9b79 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -3,6 +3,7 @@ x11proto-randr (1.3.99.1-1) UNRELEASED; urgency=low
   * New git snapshot.
   * Remove Andres Salomon and David Nusinow from Uploaders.  Thanks for your
     work!
+  * debian/rules: stop using touch for stampfiles, random whitespace cleanup.
 
  -- Julien Cristau <jcristau@debian.org>  Mon, 03 Jan 2011 20:17:46 +0100
 
diff --git a/debian/rules b/debian/rules
index 1c98497..12d0ea3 100755
--- a/debian/rules
+++ b/debian/rules
@@ -15,34 +15,29 @@ include debian/xsfbs/xsfbs.mk
 autogen: autogen-stamp
 autogen-stamp:
 	dh_testdir
-
 	autoreconf -vfi
-	touch autogen-stamp
+	>$@
 
 .PHONY: configure
 configure: configure-stamp
 configure-stamp: autogen-stamp
 	dh_testdir
-
 	mkdir -p build
 	cd build && \
 	../configure --prefix=/usr --mandir=\$${prefix}/share/man \
 	             --infodir=\$${prefix}/share/info
-	touch configure-stamp
+	>$@
 
 build: build-stamp
 build-stamp: configure-stamp
 	dh_testdir
-
 	cd build && $(MAKE)
-
-	touch build-stamp
+	>$@
 
 clean:
 	dh_testdir
 	dh_testroot
 	rm -f *-stamp
-
 	rm -f config.cache config.log config.status
 	rm -f */config.cache */config.log */config.status
 	rm -f conftest* */conftest*
@@ -51,7 +46,6 @@ clean:
 	rm -f aclocal.m4 configure install-sh missing
 	rm -f config.guess config.sub
 	rm -f Makefile.in
-
 	dh_clean
 
 install: build
@@ -59,14 +53,12 @@ install: build
 	dh_testroot
 	dh_clean -k
 	dh_installdirs
-
 	cd build && $(MAKE) DESTDIR=$(CURDIR)/debian/tmp PACKAGE=$(PACKAGE) install
 
 # Build architecture-independent files here.
 binary-indep: build install
 	dh_testdir
 	dh_testroot
-
 	dh_installdocs
 	dh_installman
 	dh_install --sourcedir=debian/tmp --fail-missing

commit f14390b5b12e1bac0ab76feb7606050090812878
Author: Julien Cristau <jcristau@debian.org>
Date:   Mon Feb 14 16:20:22 2011 +0100

    Remove Andres Salomon and David Nusinow from Uploaders.
    
    Thanks for your work!

diff --git a/debian/changelog b/debian/changelog
index 320c4fe..5b1400e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,6 +1,8 @@
-x11proto-randr (1.3.99.1) UNRELEASED; urgency=low
+x11proto-randr (1.3.99.1-1) UNRELEASED; urgency=low
 
   * New git snapshot.
+  * Remove Andres Salomon and David Nusinow from Uploaders.  Thanks for your
+    work!
 
  -- Julien Cristau <jcristau@debian.org>  Mon, 03 Jan 2011 20:17:46 +0100
 
diff --git a/debian/control b/debian/control
index 6f45c65..0ececab 100644
--- a/debian/control
+++ b/debian/control
@@ -2,7 +2,7 @@ Source: x11proto-randr
 Section: x11
 Priority: optional
 Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
-Uploaders: David Nusinow <dnusinow@debian.org>, Andres Salomon <dilinger@debian.org>, Cyril Brulebois <kibi@debian.org>
+Uploaders: Cyril Brulebois <kibi@debian.org>
 Build-Depends:
  debhelper (>= 5.0.0),
  automake,

commit 555b493cacdc808a6c7504c6e0ec05e957678d33
Author: Julien Cristau <jcristau@debian.org>
Date:   Mon Feb 14 16:13:03 2011 +0100

    Bump changelogs

diff --git a/ChangeLog b/ChangeLog
index 2318c74..7caf475 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,57 @@
+commit 0d32bb0780db35cec31e423faffa7061ec3e697f
+Author: Keith Packard <keithp@keithp.com>
+Date:   Mon Dec 6 22:39:07 2010 -0800
+
+    Define new semantics for scanout pixmap destruction.
+    
+    This is not yet implemented in the X server...
+    
+    Signed-off-by: Keith Packard <keithp@keithp.com>
+
+commit 3e28d3098faa1a420cd0eb0474b2959cecc8813a
+Author: Keith Packard <keithp@keithp.com>
+Date:   Mon Dec 6 10:01:21 2010 -0800
+
+    Fix spelling errors, add description of SCANOUTPIXMAPINFO fields.
+    
+    Review results from Aaron Plattner.
+    
+    Signed-off-by: Keith Packard <keithp@keithp.com>
+
+commit ebab32deea654d2ceb0538177e78d8ad48cf2a82
+Author: Keith Packard <keithp@keithp.com>
+Date:   Sun Dec 5 23:22:26 2010 -0800
+
+    Add some informative text about the reasons for the PCP and ST bits
+    
+    Signed-off-by: Keith Packard <keithp@keithp.com>
+
+commit dd14a2275521b4cc50a588c95cc34cca7db51a91
+Author: Keith Packard <keithp@keithp.com>
+Date:   Sun Dec 5 20:31:18 2010 -0800
+
+    RandR version 1.4 additions
+    
+    This adds the specification and protocol header definitions for the
+    RandR 1.4 protocol changes, including
+    
+     * Per crtc pixmaps and pixmap origins
+     * Sprite position and image transforms
+     * SetCrtcConfigs request
+    
+    Signed-off-by: Keith Packard <keithp@keithp.com>
+
+commit 1325b011247e52cd8ffd0ca96408d77ea22ffaaa
+Author: Keith Packard <keithp@keithp.com>
+Date:   Sun Dec 5 20:30:43 2010 -0800
+
+    Whitespace cleanups in randrproto.txt
+    
+    This just eliminates some ugly space/tab combos
+    
+    Signed-off-by: Keith Packard <keithp@keithp.com>
+    Reviewed-by: Cyril Brulebois <kibi@debian.org>
+
 commit 75b7c5feed818291c8ba8ac1ee5b6a6ee4b61851
 Author: Alan Coopersmith <alan.coopersmith@oracle.com>
 Date:   Fri Oct 29 23:12:30 2010 -0700
diff --git a/debian/changelog b/debian/changelog
index f9906da..320c4fe 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+x11proto-randr (1.3.99.1) UNRELEASED; urgency=low
+
+  * New git snapshot.
+
+ -- Julien Cristau <jcristau@debian.org>  Mon, 03 Jan 2011 20:17:46 +0100
+
 x11proto-randr (1.3.2-1) unstable; urgency=low
 
   [ Julien Cristau ]

commit 0d32bb0780db35cec31e423faffa7061ec3e697f
Author: Keith Packard <keithp@keithp.com>
Date:   Mon Dec 6 22:39:07 2010 -0800

    Define new semantics for scanout pixmap destruction.
    
    This is not yet implemented in the X server...
    
    Signed-off-by: Keith Packard <keithp@keithp.com>

diff --git a/randrproto.txt b/randrproto.txt
index e15a798..ee513e7 100644
--- a/randrproto.txt
+++ b/randrproto.txt
@@ -406,6 +406,12 @@ CRTCCONFIG { crtc: CRTC
 	included as a part of its creation paramaeters, or a Match
 	error results.
 
+	If 'pixmap' is destroyed while still being used as a scanout
+	pixmap, then the associated CRTC will have its scanout pixmap
+	set back to None, the CRTC origin set back to 0,0 (to make
+	sure it fits) and the screen pixmap width and height increased
+	to be at least as big as the current CRTC mode.
+
 			      ❧❧❧❧❧❧❧❧❧❧❧
 
 6. Extension Initialization

commit 3e28d3098faa1a420cd0eb0474b2959cecc8813a
Author: Keith Packard <keithp@keithp.com>
Date:   Mon Dec 6 10:01:21 2010 -0800

    Fix spelling errors, add description of SCANOUTPIXMAPINFO fields.
    
    Review results from Aaron Plattner.
    
    Signed-off-by: Keith Packard <keithp@keithp.com>

diff --git a/randrproto.h b/randrproto.h
index 54abafc..ba9b703 100644
--- a/randrproto.h
+++ b/randrproto.h
@@ -897,6 +897,7 @@ typedef struct {
 } xRRSetPanningReply;
 #define sz_xRRSetPanningReply	32
 
+#undef PictFormat
 #undef RRModeFlags
 #undef RRCrtc
 #undef RRMode
diff --git a/randrproto.txt b/randrproto.txt
index f700a84..e15a798 100644
--- a/randrproto.txt
+++ b/randrproto.txt
@@ -131,8 +131,7 @@ underlying hardware to clients
 
    • Per-crtc pixmaps. This provides for multiple scan-out buffers
      which applications can create and assign to arbitrary collections
-     of crtcs. These pixmaps can be associated with a window for use
-     with OpenGL or drawn to directly.
+     of crtcs.
 
    • Sprite position and image transforms. These provide a projective
      transform for both the hot spot location and the sprite image
@@ -356,6 +355,22 @@ SCANOUTPIXMAPINFO { format: PICTFORMAT
 		    maxWidth, maxHeight: CARD16
 		    rotations: SETofROTATION }
 
+	'format' is the format of the pixels within the scanout
+	pixmap. Only 'Direct' formats are supported, this will never
+	be an 'Indexed' format.
+
+	'maxWidth' and 'maxHeight' define the largest supported
+	scanout pixmap. There is no minimum size; scanout pixmaps down
+	to 1x1 may be created.
+
+	'rotations' lists the set of rotations which can be provided
+	without additional latency or memory usage within the
+	environment. This typically means that they are supported
+	directly by the hardware. It is expected that a compositing
+	manager will perform other transforms as a part of the
+	compositing process in conjunction with the sprite transforms
+	described in this extension.
+
 CRTCCONFIG { crtc: CRTC
 	     x, y: INT16
 	     mode: MODE
@@ -363,7 +378,7 @@ CRTCCONFIG { crtc: CRTC
 	     sprite-position-transform: TRANSFORM
 	     sprite-image-transform: TRANSFORM
 	     outputs: LISTofOUTPUT
-	     pixmap: PIXMAP, None or CurrenScanoutPixmap
+	     pixmap: PIXMAP, None or CurrentScanoutPixmap
 	     pixmap-x, pixmap-y: INT16 }
 
 	The sprite-position-transform and sprite-image-transform
@@ -373,7 +388,7 @@ CRTCCONFIG { crtc: CRTC
 	'pixmap' specifies the origin of the pixel data to be presented on
 	'crtc'. If 'pixmap' is None, then data will be presented from
 	the screen pixmap. If 'pixmap' is 'CurrentScanoutPixmap', then
-	whatever source is current in use will remain in use, whether
+	whatever source is currently in use will remain in use, whether
 	that is the screen pixmap or some other allocated scanout pixmap.
 
 	'pixmap-x' and 'pixmap-y' specify the origin of the scanout

commit ebab32deea654d2ceb0538177e78d8ad48cf2a82
Author: Keith Packard <keithp@keithp.com>
Date:   Sun Dec 5 23:22:26 2010 -0800

    Add some informative text about the reasons for the PCP and ST bits
    
    Signed-off-by: Keith Packard <keithp@keithp.com>

diff --git a/randrproto.txt b/randrproto.txt
index 0d537ac..f700a84 100644
--- a/randrproto.txt
+++ b/randrproto.txt
@@ -134,12 +134,44 @@ underlying hardware to clients
      of crtcs. These pixmaps can be associated with a window for use
      with OpenGL or drawn to directly.
 
+   • Sprite position and image transforms. These provide a projective
+     transform for both the hot spot location and the sprite image
+     itself for each CRTC.
+
    • RRSetCrtcConfigs request. This supplies a set of
      crtc configurations to the server that must be applied together
      or not at all. This can reduce screen flicker while also
      providing the server a complete configuration for appropriate
      resource management.
 
+The first two additions, per-crtc pixmaps and sprite transforms are
+designed to solve two problems:
+
+ 1) Screen transforms. The software transform code in the X server
+    uses a shadow frame buffer, adding another copy to every graphics
+    operation. Worse, the server has no idea about when clients are
+    done drawing a frame, so the user gets additional latency and
+    judder.
+
+    The goal is to move this operation out to the compositing manager
+    which already deals with an extra copy of the frame buffer for
+    many operations. Have the compositing manager create and draw to a
+    separate pixmap for scanout. It can perform whatever transforms
+    are required to get the image in the right orientation for the
+    user.
+
+ 2) Hardware scanout engine size limits. With a single scanout buffer
+    for the entire screen, it's possible for the user to ask for a
+    configuration which requires that scanout buffer to be larger than
+    the hardware is capable of scanning out from. Again, having the
+    compositing manager create a pixmap for each CRTC will allow for
+    any configuration where monitor position within the virtual space
+    isn't limited by the scanout limits.
+
+In both of these cases, the Sprite transforms are necessary to ensure
+that the sprite appears at the desired spot on each CRTC and with the
+right shape.
+
 1.99 Acknowledgements
 
 Our thanks to the contributors to the design found on the xpert mailing

commit dd14a2275521b4cc50a588c95cc34cca7db51a91
Author: Keith Packard <keithp@keithp.com>
Date:   Sun Dec 5 20:31:18 2010 -0800

    RandR version 1.4 additions
    
    This adds the specification and protocol header definitions for the
    RandR 1.4 protocol changes, including
    
     * Per crtc pixmaps and pixmap origins
     * Sprite position and image transforms
     * SetCrtcConfigs request
    
    Signed-off-by: Keith Packard <keithp@keithp.com>

diff --git a/configure.ac b/configure.ac
index 4ef4bb6..0c71460 100644
--- a/configure.ac
+++ b/configure.ac
@@ -22,7 +22,7 @@ dnl
 dnl Process this file with autoconf to create configure.
 
 AC_PREREQ([2.60])
-AC_INIT([RandrProto], [1.3.2],
+AC_INIT([RandrProto], [1.4.0],
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg])
 AM_INIT_AUTOMAKE([foreign dist-bzip2])
 AM_MAINTAINER_MODE
diff --git a/randr.h b/randr.h
index 1ee95f9..4480f5c 100644
--- a/randr.h
+++ b/randr.h
@@ -40,11 +40,11 @@ typedef unsigned long	XRandrModeFlags;
 
 #define RANDR_NAME		"RANDR"
 #define RANDR_MAJOR		1
-#define RANDR_MINOR		3
+#define RANDR_MINOR		4
 
 #define RRNumberErrors		3
 #define RRNumberEvents		2
-#define RRNumberRequests	32
+#define RRNumberRequests	37
 
 #define X_RRQueryVersion	0
 /* we skip 1 to make old clients fail pretty immediately */
@@ -92,6 +92,13 @@ typedef unsigned long	XRandrModeFlags;
 #define RRTransformScaleDown	    (1L << 2)
 #define RRTransformProjective	    (1L << 3)
 
+/* V1.4 additions */
+#define X_RRQueryScanoutPixmaps	    32
+#define X_RRCreateScanoutPixmap	    33
+#define X_RRSetCrtcSpriteTransform  34
+#define X_RRGetCrtcSpriteTransform  35
+#define X_RRSetCrtcConfigs	    36
+
 /* Event selection bits */
 #define RRScreenChangeNotifyMask  (1L << 0)
 /* V1.2 additions */
@@ -149,6 +156,9 @@ typedef unsigned long	XRandrModeFlags;
 #define BadRRCrtc		1
 #define BadRRMode		2
 
+/* new in 1.4 protocol */
+#define RR_CurrentScanoutPixmap	1	/* current scanout pixmap in RRSetCrtcConfigs */
+
 /* Conventional RandR output properties */
 
 #define RR_PROPERTY_BACKLIGHT		"Backlight"
diff --git a/randrproto.h b/randrproto.h
index 3b98a9f..54abafc 100644
--- a/randrproto.h
+++ b/randrproto.h
@@ -49,6 +49,7 @@
 #define RRMode CARD32
 #define RRCrtc CARD32
 #define RRModeFlags CARD32
+#define PictFormat CARD32
 
 #define Rotation CARD16
 #define SizeID CARD16
@@ -646,6 +647,124 @@ typedef struct {
 #define sz_xRRGetOutputPrimaryReply	32
 
 /*
+ * Additions for 1.4
+ */
+
+typedef struct {
+    PictFormat format B32;
+    CARD16 maxWidth B16, maxHeight B16;
+    Rotation rotations B16;
+    CARD16 pad0 B16;
+    CARD32 pad1 B32;
+} xRRScanoutPixmapInfo;
+#define sz_xRRScanoutPixmapInfo	16
+
+typedef struct {
+    RRCrtc crtc B32;
+    INT16 x B16, y B16;
+    RRMode mode B32;
+    Rotation rotation B16;
+    CARD16 nOutput B16;
+    xRenderTransform spritePositionTransform;
+    xRenderTransform spriteImageTransform;
+    Pixmap pixmap B32;
+    INT16 xPixmap B16, yPixmap B16;
+} xRRCrtcConfig;
+#define sz_xRRCrtcConfig (2*sz_xRenderTransform + 24)
+
+typedef struct {
+    CARD8 reqType;
+    CARD8 randrReqType;
+    CARD16 length B16;
+    Drawable drawable B32;
+} xRRQueryScanoutPixmapsReq;
+#define sz_xRRQueryScanoutPixmapsReq	8
+
+typedef struct {
+    BYTE	type;
+    CARD8	pad;
+    CARD16	sequenceNumber B16;
+    CARD32	length B32;
+    CARD32	pad0 B32;
+    CARD32	pad1 B32;
+    CARD32	pad2 B32;
+    CARD32	pad3 B32;
+    CARD32	pad4 B32;
+    CARD32	pad5 B32;
+} xRRQueryScanoutPixmapsReply;
+#define sz_xRRQueryScanoutPixmapsReply	32
+
+typedef struct {
+    CARD8 reqType;
+    CARD8 randrReqType;
+    CARD16 length B16;
+    Pixmap pid B32;
+    Drawable drawable B32;
+    CARD16 width B16, height B16;
+    PictFormat format B32;
+    Rotation rotations B16;
+    CARD16 pad B16;
+} xRRCreateScanoutPixmapReq;
+#define sz_xRRCreateScanoutPixmapReq	24
+
+typedef struct {
+    CARD8 reqType;
+    CARD8 randrReqType;
+    CARD16 length B16;
+    RRCrtc crtc B32;
+    xRenderTransform positionTransform;
+    xRenderTransform imageTransform;
+} xRRSetCrtcSpriteTransformReq;
+#define sz_xRRSetCrtcSpriteTransformReq	(2*sz_xRenderTransform + 8)
+
+typedef struct {
+    CARD8 reqType;
+    CARD8 randrReqType;
+    CARD16 length B16;
+    RRCrtc crtc B32;
+} xRRGetCrtcSpriteTransformReq;
+#define sz_xRRGetCrtcSpriteTransformReq	8
+
+typedef struct {
+    BYTE type;
+    CARD8 pad;
+    CARD16 sequenceNumber B16;
+    CARD32 length B32;
+    xRenderTransform positionTransform;
+    xRenderTransform imageTransform;
+} xRRGetCrtcSpriteTransformReply;
+#define sz_xRRGetCrtcSpriteTransformReply	(2*sz_xRenderTransform + 8)
+
+typedef struct {
+    CARD8 reqType;
+    CARD8 randrReqType;
+    CARD16 length B16;
+    Drawable drawable B32;
+    CARD16 screenPixmapWidth B16, screenPixmapHeight B16;
+    CARD16 screenWidth B16, screenHeight B16;
+    CARD32 widthInMillimeters B32;
+    CARD32 heightInMillimeters B32;
+    CARD16 nConfigs B16;
+    CARD16 pad0 B16;
+    CARD32 pad1 B32;
+} xRRSetCrtcConfigsReq;
+#define sz_xRRSetCrtcConfigsReq 32
+
+typedef struct {
+    BYTE	type;
+    CARD8	status;
+    CARD16	sequenceNumber B16;
+    CARD32	length B32;
+    CARD32	pad0 B32;
+    CARD32	pad1 B32;
+    CARD32	pad2 B16;
+    CARD32	pad3 B32;
+    CARD32	pad4 B32;
+    CARD32	pad5 B32;
+} xRRSetCrtcConfigsReply;
+#define sz_xRRSetCrtcConfigsReply	32
+
+/*
  * event
  */
 typedef struct {
diff --git a/randrproto.txt b/randrproto.txt
index 9f3d4a1..0d537ac 100644
--- a/randrproto.txt
+++ b/randrproto.txt
@@ -124,7 +124,23 @@ following features are added in this version:
    • Panning. It was removed with RandR 1.2 because the old semantics didn't
      fit any longer. With RandR 1.3 panning can be specified per crtc.
 
-1.1 Acknowledgements
+1.4 Introduction to version 1.4 of the extension
+
+Version 1.4 adds a couple more capabilities to further expose the
+underlying hardware to clients
+
+   • Per-crtc pixmaps. This provides for multiple scan-out buffers
+     which applications can create and assign to arbitrary collections
+     of crtcs. These pixmaps can be associated with a window for use
+     with OpenGL or drawn to directly.
+
+   • RRSetCrtcConfigs request. This supplies a set of
+     crtc configurations to the server that must be applied together
+     or not at all. This can reduce screen flicker while also
+     providing the server a complete configuration for appropriate
+     resource management.
+
+1.99 Acknowledgements
 
 Our thanks to the contributors to the design found on the xpert mailing
 list, in particular:
@@ -302,6 +318,49 @@ REFRESH { rates: LISTofCARD16 }
 
 			      ❧❧❧❧❧❧❧❧❧❧❧
 
+5.4. Protocol Types added in version 1.4 of the extension
+
+SCANOUTPIXMAPINFO { format: PICTFORMAT
+		    maxWidth, maxHeight: CARD16
+		    rotations: SETofROTATION }
+
+CRTCCONFIG { crtc: CRTC
+	     x, y: INT16
+	     mode: MODE
+	     rotation: ROTATION
+	     sprite-position-transform: TRANSFORM
+	     sprite-image-transform: TRANSFORM
+	     outputs: LISTofOUTPUT
+	     pixmap: PIXMAP, None or CurrenScanoutPixmap
+	     pixmap-x, pixmap-y: INT16 }
+
+	The sprite-position-transform and sprite-image-transform
+	values are used as in the RRSetCrtcSpriteTransform request
+	position-transform and image-transform parameters.
+
+	'pixmap' specifies the origin of the pixel data to be presented on
+	'crtc'. If 'pixmap' is None, then data will be presented from
+	the screen pixmap. If 'pixmap' is 'CurrentScanoutPixmap', then
+	whatever source is current in use will remain in use, whether
+	that is the screen pixmap or some other allocated scanout pixmap.
+
+	'pixmap-x' and 'pixmap-y' specify the origin of the scanout
+	data within the pixmap, the area from that location to
+	pixmap-x + width-of(mode), pixmap-y + height-of(mode) is what
+	will be seen on the connected outputs.
+
+	The pixmap value must specify a scanout pixmap as created by
+	RRCreateScanoutPixmap, or a Match error results.
+
+	The specified pixmap must be at least as large as the area to
+	be scanned out, or a Match error results.
+
+	The specified pixmap must have had the specified 'rotation'
+	included as a part of its creation paramaeters, or a Match
+	error results.
+
+			      ❧❧❧❧❧❧❧❧❧❧❧
+
 6. Extension Initialization
 
 The name of this extension is "RANDR".
@@ -1238,6 +1297,92 @@ dynamic changes in the display environment.
 
 			      ❧❧❧❧❧❧❧❧❧❧❧
 
+7.3. Extension Requests added in version 1.4 of the extension.
+
+┌───
+    RRQueryScanoutPixmaps
+	window: WINDOW
+      ▶
+	infos: LISTofSCANOUTPIXMAPINFO
+└───
+	Errors: Window
+
+	This request returns information about the server support for
+	alternate scanout pixmaps. For each pictformat, there is a set
+	of rotations and a maximum supported size. The rotations here
+	are those provided by the scanout hardware itself, not by
+	software emulation.
+
+┌───
+    RRCreateScanoutPixmap
+	pixmap: PIXMAP
+	drawable: DRAWABLE
+	width, height: CARD16
+	format: PICTFORMAT
+	rotations: SETofROTATION
+└───
+	Errors: Drawable, Match, Value
+
+	Creates a pixmap which can subsequently be used as a scanout
+	buffer for the screen associated with 'drawable'. 'rotations'
+	is the set of rotation values which may be used with the
+	resulting scanout buffer when it is associated with a CRTC.
+
+	'format' must be one of the supported scanout formats, or a
+	Match error results.
+
+	'width' and 'height' must be within the supported range for
+	the specified format or a Value error results.
+
+	'rotations' must be a subset of those supported for the
+	specified format or a Match error results.
+
+┌───
+    RRSetCrtcSpriteTransform
+	crtc: CRTC
+	position-transform: TRANSFORM
+	image-transform: TRANSFORM
+└───
+	Sets the sprite transforms for the specified crtc, any sprites
+	presented on this crtc will have their positions transformed
+	by the position-transform matrix. Sprite images displayed on the crtc
+	will be transformed by the image-transform matrix.
+
+┌───
+    RRGetCrtcSpriteTransform
+	crtc: CRTC
+      ▶
+	position-transform: TRANSFORM
+	image-transform: TRANSFORM
+└───
+	Gets the sprite transforms for the specified crtc.
+
+┌───
+    RRSetCrtcConfigs
+	drawable: DRAWABLE
+	screen-pixmap-width: CARD16
+	screen-pixmap-height: CARD16
+	screen-width: CARD16
+	screen-height: CARD16
+	width-in-millimeters: CARD32
+	height-in-millimeters: CARD32
+	configs: LISTofCRTCCONFIG
+      ▶
+	status: RRCONFIGSTATUS
+└───
+	Errors: Value, Match
+
+	This works much like RRSetScreenSize followed by a sequence of
+	RRSetCrtcConfig, except that the entire configuration is set
+	in a single operation, either succeeding or failing without
+	any partial execution.
+
+	In addition to the pre-1.4 semantics, this request adds the
+	ability to specific a scanout pixmap for each crtc, and
+	integrates the 1.4 sprite transform request as well.
+
+			      ❧❧❧❧❧❧❧❧❧❧❧
+
 8. Extension Events
 
 Clients MAY select for ConfigureNotify on the root window to be

commit 1325b011247e52cd8ffd0ca96408d77ea22ffaaa
Author: Keith Packard <keithp@keithp.com>
Date:   Sun Dec 5 20:30:43 2010 -0800

    Whitespace cleanups in randrproto.txt
    
    This just eliminates some ugly space/tab combos
    
    Signed-off-by: Keith Packard <keithp@keithp.com>
    Reviewed-by: Cyril Brulebois <kibi@debian.org>

diff --git a/randrproto.txt b/randrproto.txt
index 016532c..9f3d4a1 100644
--- a/randrproto.txt
+++ b/randrproto.txt
@@ -29,14 +29,14 @@ protocol described here, as it has been overtaken by events.
 
 These events include:
       ► Modern toolkits (in this case, GTK+ 2.x) have progressed to the point
-        of implementing migration between screens of arbitrary depths
+	of implementing migration between screens of arbitrary depths
       ► The continued advance of Moore's law has made limited amounts of VRAM
-        less of an issue, reducing the pressure to implement depth switching
+	less of an issue, reducing the pressure to implement depth switching
 	on laptops or desktop systems
       ► The continued decline of legacy toolkits whose design would have
-        required depth switching to support migration
+	required depth switching to support migration
       ► The lack of depth switching implementation experience in the
-        intervening time, due to events beyond our control
+	intervening time, due to events beyond our control
 
 Additionally, the requirement to support depth switching might
 complicate other re-engineering of the device independent part of the
@@ -138,7 +138,7 @@ Thomas Winischhofer for the hardware-accelerated SiS rotation implementation
 Matthew Tippett and Kevin Martin for splitting outputs and CRTCs to more
 fully expose what video hardware can do
 
-                              ❧❧❧❧❧❧❧❧❧❧❧
+			      ❧❧❧❧❧❧❧❧❧❧❧
 
 2. Screen change model
 
@@ -182,7 +182,7 @@ pop-up menus and other pop up windows will position themselves correctly in
 the face of screen configuration changes (the issue is ensuring that pop-ups
 are visible on the reconfigured screen).
 
-                              ❧❧❧❧❧❧❧❧❧❧❧
+			      ❧❧❧❧❧❧❧❧❧❧❧
 
 3. Data Types
 
@@ -190,7 +190,7 @@ The subpixel order is shared with the Render extension, and is documented
 there. The only datatype defined is the screen size, defined in the normal
 (0 degree) orientation.
 
-                              ❧❧❧❧❧❧❧❧❧❧❧
+			      ❧❧❧❧❧❧❧❧❧❧❧
 
 4. Errors
 
@@ -203,7 +203,7 @@ CRTC
 Mode
 	A value for a MODE argument does not name a defined MODE.
 
-                              ❧❧❧❧❧❧❧❧❧❧❧
+			      ❧❧❧❧❧❧❧❧❧❧❧
 
 5. Protocol Types
 
@@ -266,11 +266,11 @@ CONNECTION { Connected, Disconnected, UnknownConnection }
 	connected to a monitor or other presentation device.
 
 SUBPIXELORDER { SubPixelUnknown		The subpixel order uses the Render
-	        SubPixelHorizontalRGB	extensions definitions; they are here
-	        SubPixelHorizontalBGR	only for convenience.
-	        SubPixelVerticalRGB
-	        SubPixelVerticalBGR
-	        SubPixelNone }
+		SubPixelHorizontalRGB	extensions definitions; they are here
+		SubPixelHorizontalBGR	only for convenience.
+		SubPixelVerticalRGB
+		SubPixelVerticalBGR
+		SubPixelNone }
 
 SCREENSIZE { widthInPixels, heightInPixels: CARD16
 	     widthInMillimeters, heightInMillimeters: CARD16 }
@@ -292,15 +292,15 @@ MODEFLAG { HSyncPositive
 
 MODEINFO { id: MODE
 	   name: STRING
-           width, height: CARD16
-           dotClock: CARD32
-           hSyncStart, hSyncEnd, hTotal, hSkew: CARD16
-           vSyncStart, vSyncEnd, vTotal: CARD16
-           modeFlags: SETofMODEFLAG }
+	   width, height: CARD16
+	   dotClock: CARD32
+	   hSyncStart, hSyncEnd, hTotal, hSkew: CARD16
+	   vSyncStart, vSyncEnd, vTotal: CARD16
+	   modeFlags: SETofMODEFLAG }
 
 REFRESH { rates: LISTofCARD16 }
 
-                              ❧❧❧❧❧❧❧❧❧❧❧
+			      ❧❧❧❧❧❧❧❧❧❧❧
 
 6. Extension Initialization
 
@@ -323,7 +323,7 @@ The name of this extension is "RANDR".
 	It is the clients responsibility to ensure that the server
 	supports a version which is compatible with its expectations.
 
-                              ❧❧❧❧❧❧❧❧❧❧❧
+			      ❧❧❧❧❧❧❧❧❧❧❧
 
 7. Extension Requests
 
@@ -564,7 +564,7 @@ dynamic changes in the display environment.
 	name: STRING
 	connection: CONNECTION
 	subpixel-order: SUBPIXELORDER
-        widthInMillimeters, heightInMillimeters: CARD32
+	widthInMillimeters, heightInMillimeters: CARD32
 	crtcs: LISTofCRTC
 	clones: LISTofOUTPUT
 	modes: LISTofMODE
@@ -619,9 +619,9 @@ dynamic changes in the display environment.
 
 ┌───
     RRListOutputProperties
-    	output:OUTPUT
+	output:OUTPUT
       ▶
-      	atoms: LISTof ATOM
+	atoms: LISTof ATOM
 └───
 	Errors: Output
 
@@ -633,7 +633,7 @@ dynamic changes in the display environment.
 	output: OUTPUT
 	property: ATOM
       ▶
-      	pending: BOOL
+	pending: BOOL
 	range: BOOL
 	immutable: BOOL
 	valid-values: LISTofINT32
@@ -663,7 +663,7 @@ dynamic changes in the display environment.
     RRConfigureOutputProperty
 	output: OUTPUT
 	property: ATOM
-      	pending: BOOL
+	pending: BOOL
 	range: BOOL
 	valid-values: LISTofINT32
 └───
@@ -680,7 +680,7 @@ dynamic changes in the display environment.
 
 ┌───
     RRChangeOutputProperty
-    	output: OUTPUT
+	output: OUTPUT
 	property, type: ATOM
 	format: {8, 16, 32}
 	mode: { Replace, Prepend, Append }
@@ -717,7 +717,7 @@ dynamic changes in the display environment.
 
 ┌───
     RRDeleteOutputProperty
-    	output: OUTPUT
+	output: OUTPUT
 	property: ATOM
 └───
 	Errors: Atom, Output
@@ -728,7 +728,7 @@ dynamic changes in the display environment.


Reply to: