[Intel-gfx] [PATCH] dri2proto: support buffer swaps

Jesse Barnes jbarnes at virtuousgeek.org
Wed Feb 25 21:36:03 CET 2009


Protocol documentation and support for the new buffer swap request.

diff --git a/dri2proto.h b/dri2proto.h
index dc3f2d1..6f5ddf0 100644
--- a/dri2proto.h
+++ b/dri2proto.h
@@ -35,7 +35,7 @@
 
 #define DRI2_NAME			"DRI2"
 #define DRI2_MAJOR			1
-#define DRI2_MINOR			0
+#define DRI2_MINOR			1
 
 #define DRI2NumberErrors		0
 #define DRI2NumberEvents		0
@@ -48,6 +48,7 @@
 #define X_DRI2DestroyDrawable		4
 #define X_DRI2GetBuffers		5
 #define X_DRI2CopyRegion		6
+#define X_DRI2SwapBuffers		7
 
 typedef struct {
     CARD32  attachment B32;
@@ -190,4 +191,26 @@ typedef struct {
 } xDRI2CopyRegionReply;
 #define sz_xDRI2CopyRegionReply	32
 
+typedef struct {
+    CARD8   reqType;
+    CARD8   dri2ReqType;
+    CARD16  length B16;
+    CARD32  drawable B32;
+} xDRI2SwapBuffersReq;
+#define sz_xDRI2SwapBuffersReq   8
+
+typedef struct {
+    BYTE    type;   /* X_Reply */
+    BYTE    pad1;
+    CARD16  sequenceNumber B16;
+    CARD32  length B32;
+    CARD32  count B32;
+    CARD32  pad3 B32;
+    CARD32  pad4 B32;
+    CARD32  pad5 B32;
+    CARD32  pad6 B32;
+    CARD32  pad7 B32;
+} xDRI2SwapBuffersReply;
+#define sz_xDRI2SwapBuffersReply	32
+
 #endif
diff --git a/dri2proto.txt b/dri2proto.txt
index 106f8d8..30a2157 100644
--- a/dri2proto.txt
+++ b/dri2proto.txt
@@ -105,6 +105,11 @@ DRI2 implementation of direct rendering GLX, should use these enty
 points to copy contents back and forth to as necessary to ensure
 consistent rendering.
 
+The client may also use the DRI2SwapBuffers function to request a swap
+of the front and back buffers.  If the display server supports it, this
+operation may be preferred, since it may be easier and/or more performant
+for the server to perform a simple buffer swap rather than a blit.
+
 
 			     ⚙ ⚙ ⚙  ⚙ ⚙ ⚙
 
@@ -280,6 +285,21 @@ The name of this extension is "DRI2".
 	the server has seen the request before proceeding with
 	rendering the next frame.
 
+┌───
+    DRI2SwapBuffers
+	drawable: DRAWABLE
+      ▶	
+	buffers: LISTofDRI2BUFFER
+└───
+	Errors: Window
+
+	Schedule a swap of the front and back buffers with the display
+	server.
+
+	In reply, the display server is expected to provide new front
+	and back buffers to the client following this request.  The
+	display server should process this request asynchronously
+	if possible, to prevent the client from blocking.
 
 			     ⚙ ⚙ ⚙  ⚙ ⚙ ⚙
 
@@ -474,6 +494,27 @@ A.2 Protocol Requests
 	24				unused	
 └───
 
+┌───
+    DRI2SwapBuffers
+	1	CARD8			major opcode
+	1	7			DRI2 opcode
+	2	8			length
+	4	DRAWABLE		drawable
+      ▶	
+	1	1			Reply
+        1				unused
+	2	CARD16			sequence number
+	4	0			reply length
+	4	CARD32			buffer count
+	4	CARD32			unused
+	4	CARD32			unused
+	4	CARD32			unused
+	4	CARD32			unused
+	4	CARD32			unused
+	4	CARD32			unused
+	5n	LISTofDRI2BUFFER	buffers
+└───
+
 
 A.3 Protocol Events
 




More information about the Intel-gfx mailing list