This part is pretty simple.  I think I've left it flexible enough to
accommodate triple buffering (or n-buffering) but would appreciate
feedback there.

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
 

------------------------------------------------------------------------------
This SF.net email is sponsored by:
High Quality Requirements in a Collaborative Environment.
Download a free trial of Rational Requirements Composer Now!
http://p.sf.net/sfu/www-ibm-com
--
_______________________________________________
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to