From 41045095bddfe460a76fb560e1d087430d8fd76f Mon Sep 17 00:00:00 2001 From: Francisco Jerez Date: Mon, 8 Feb 2010 19:24:37 +0100 Subject: Define an event to notify clients about the validity of their buffers. Bumps the protocol and package versions. Signed-off-by: Francisco Jerez --- configure.ac | 2 +- dri2proto.h | 19 +++++++++++++++++-- dri2proto.txt | 31 ++++++++++++++++++++++++------- 3 files changed, 42 insertions(+), 10 deletions(-) diff --git a/configure.ac b/configure.ac index fc96197..c5affe3 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@ AC_PREREQ([2.57]) -AC_INIT([DRI2Proto], [2.2], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg]) +AC_INIT([DRI2Proto], [2.3], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg]) AM_INIT_AUTOMAKE([foreign dist-bzip2]) AM_MAINTAINER_MODE diff --git a/dri2proto.h b/dri2proto.h index 43152c2..9708a4a 100644 --- a/dri2proto.h +++ b/dri2proto.h @@ -35,10 +35,10 @@ #define DRI2_NAME "DRI2" #define DRI2_MAJOR 1 -#define DRI2_MINOR 2 +#define DRI2_MINOR 3 #define DRI2NumberErrors 0 -#define DRI2NumberEvents 1 +#define DRI2NumberEvents 2 #define DRI2NumberRequests 13 #define X_DRI2QueryVersion 0 @@ -59,6 +59,7 @@ * Events */ #define DRI2_BufferSwapComplete 0 +#define DRI2_InvalidateBuffers 1 typedef struct { CARD32 attachment B32; @@ -299,4 +300,18 @@ typedef struct { } xDRI2BufferSwapComplete; #define sz_xDRI2BufferSwapComplete 32 +typedef struct { + CARD8 type; + CARD8 pad; + CARD16 sequenceNumber B16; + CARD32 drawable B32; + CARD32 pad1 B32; + CARD32 pad2 B32; + CARD32 pad3 B32; + CARD32 pad4 B32; + CARD32 pad5 B32; + CARD32 pad6 B32; +} xDRI2InvalidateBuffers; +#define sz_xDRI2InvalidateBuffers 32 + #endif diff --git a/dri2proto.txt b/dri2proto.txt index de58289..3d3eec4 100644 --- a/dri2proto.txt +++ b/dri2proto.txt @@ -125,9 +125,12 @@ or by using the OML swap buffers routine. 2.7 Events -DRI2 provides a single event to indicate when a DRI2SwapBuffers request has -been completed. This can be used to throttle drawing on the client side and -tie into application main loops. +DRI2 provides an event to indicate when a DRI2SwapBuffers request has +been completed. This can be used to throttle drawing on the client +side and tie into application main loops. + +Another event is generated when the validity of the requested buffers +changes. ⚙ ⚙ ⚙ ⚙ ⚙ ⚙ @@ -333,10 +336,6 @@ The name of this extension is "DRI2". Returns the swap count value when the swap will actually occur (e.g. the last queued swap count + (pending swap count * swap interval)). - The client should invalidate its render buffers after sending this - request, causing a subsequent GetBuffers request to get updated buffer - info. - This request is only available with protocol version 1.2 or later. @@ -459,6 +458,22 @@ The name of this extension is "DRI2". the swap was performed with a blit, and DRI2_FLIP_COMPLETE, indicating a full page flip was completed. +┌─── + DRI2InvalidateBuffers + ▶ + drawable: CARD32 +└─── + + This event is generated when the buffers the client had + requested for 'drawable' (with DRI2GetBuffers or + DRI2GetBuffersWithFormat) become inappropriate because they + don't match the drawable dimensions anymore, or a buffer swap + has been performed. + + Note that the server is only required to warn the client once + about this condition, until the client takes care of bringing + them back up-to-date with another GetBuffers request. + ⚙ ⚙ ⚙ ⚙ ⚙ ⚙ 10. Extension Versioning @@ -491,6 +506,8 @@ The DRI2 extension has undergone a number of revisions before 2.2: Approaching perfection. Added requests for swapbuffers, MSC and SBC related requests, and events. + 2.3: Added the DRI2InvalidateBuffers event. + Compatibility up to 2.0 is not preserved, but was also never released. -- cgit v1.2.1