diff options
author | Jesse Barnes <jbarnes@virtuousgeek.org> | 2009-05-01 14:41:55 -0700 |
---|---|---|
committer | Jesse Barnes <jbarnes@virtuousgeek.org> | 2009-05-01 14:41:55 -0700 |
commit | 9b5ef83c0b9ef0239ac82adfa9a816f195074dcb (patch) | |
tree | 3d20b49a6f37cbf17a512389c49cfa615a974387 | |
parent | 66c56ab10d917e3f47f93178d7eac6430970d3c4 (diff) |
Add SwapBuffers request
Add a SwapBuffers request for requesting a front<->back swap. Returns a
whole new set of buffers to the client to allow for triple buffering
etc.
-rw-r--r-- | dri2proto.h | 25 | ||||
-rw-r--r-- | dri2proto.txt | 41 |
2 files changed, 65 insertions, 1 deletions
diff --git a/dri2proto.h b/dri2proto.h index 8d76079..441155e 100644 --- a/dri2proto.h +++ b/dri2proto.h @@ -35,7 +35,7 @@ #define DRI2_NAME "DRI2" #define DRI2_MAJOR 1 -#define DRI2_MINOR 1 +#define DRI2_MINOR 2 #define DRI2NumberErrors 0 #define DRI2NumberEvents 0 @@ -49,6 +49,7 @@ #define X_DRI2GetBuffers 5 #define X_DRI2CopyRegion 6 #define X_DRI2GetBuffersWithFormat 7 +#define X_DRI2SwapBuffers 8 typedef struct { CARD32 attachment B32; @@ -191,4 +192,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 e931bfb..bad9567 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. + ⚙ ⚙ ⚙ ⚙ ⚙ ⚙ @@ -288,6 +293,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. ┌─── DRI2GetBuffersWithFormat @@ -542,6 +562,27 @@ A.3 Protocol Events The DRI2 extension specifies no events. +┌─── + 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.4 Protocol Errors |