dri2proto: Add DRI2GetParam request

Bump protocol version to 1.4.
Bump package version to 2.7.

This new protocol request effectively allows clients to perform feature
detection on the DDX.

If I had DRI2GetParam in June 2011, when I was implementing support in the
Intel DDX and Mesa for new hardware that required a new DRI2 attachment
format, then I could have avoided a week of pain caused by the necessity
to write a horrid feature detection hack [1] in Mesa. In the future, when
the work begins to add MSAA support to the Intel DDX, having a clean way
to do feature detection will allow us to avoid revisiting and expanding
that hack.

[1] mesa, commit aea2236a, function intel_verify_dri2_has_hi

Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Ian Romanick <idr@freedesktop.org>
Signed-off-by: Chad Versace <chad.versace@linux.intel.com>
This commit is contained in:
Chad Versace 2012-05-02 12:03:31 -07:00
parent 428688d1ea
commit 652fe8d9dd
3 changed files with 76 additions and 3 deletions

View file

@ -1,5 +1,5 @@
AC_PREREQ([2.60])
AC_INIT([DRI2Proto], [2.6], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg])
AC_INIT([DRI2Proto], [2.7], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg])
AM_INIT_AUTOMAKE([foreign dist-bzip2])
AM_MAINTAINER_MODE

View file

@ -35,11 +35,11 @@
#define DRI2_NAME "DRI2"
#define DRI2_MAJOR 1
#define DRI2_MINOR 3
#define DRI2_MINOR 4
#define DRI2NumberErrors 0
#define DRI2NumberEvents 2
#define DRI2NumberRequests 13
#define DRI2NumberRequests 14
#define X_DRI2QueryVersion 0
#define X_DRI2Connect 1
@ -54,6 +54,7 @@
#define X_DRI2WaitMSC 10
#define X_DRI2WaitSBC 11
#define X_DRI2SwapInterval 12
#define X_DRI2GetParam 13
/*
* Events
@ -330,4 +331,27 @@ typedef struct {
} xDRI2InvalidateBuffers;
#define sz_xDRI2InvalidateBuffers 32
typedef struct {
CARD8 reqType;
CARD8 dri2ReqType;
CARD16 length B16;
CARD32 drawable B32;
CARD32 param B32;
} xDRI2GetParamReq;
#define sz_xDRI2GetParamReq 12
typedef struct {
BYTE type; /*X_Reply*/
BOOL is_param_recognized;
CARD16 sequenceNumber B16;
CARD32 length B32;
CARD32 value_hi B32;
CARD32 value_lo B32;
CARD32 pad1 B32;
CARD32 pad2 B32;
CARD32 pad3 B32;
CARD32 pad4 B32;
} xDRI2GetParamReply;
#define sz_xDRI2GetParamReply 32
#endif

View file

@ -440,6 +440,36 @@ The name of this extension is "DRI2".
DRI2SwapBuffers requests to swap at most once per interval frames,
which is useful useful for limiting the frame rate.
┌───
DRI2GetParam
drawable: DRAWABLE
param: CARD32
is_param_recognized: BOOL
value: CARD64
└───
Errors: Drawable
Get the value of a parameter. The parameter's value is looked up on
the screen associated with 'drawable'.
Parameter names in which the value of the most significant byte is
0 are reserved for the X server. Currently, no such parameter names
are defined. (When any such names are defined, they will be defined in
this extension specification and its associated headers).
Parameter names in which the byte's value is 1 are reserved for the
DDX. Such names are private to each driver and shall be defined in the
respective driver's headers.
Parameter names in which the byte's value is neither 0 nor 1 are
reserved for future use.
Possible values of 'is_param_recognized' are true (1) and false (0).
If false, then 'value' is undefined.
This request is only available with protocol version 1.4 or later.
⚙ ⚙ ⚙ ⚙ ⚙ ⚙
9. Extension Events
@ -512,6 +542,8 @@ The DRI2 extension has undergone a number of revisions before
2.6: Enlightenment attained. Added the DRI2BufferHiz attachment.
2.7: Added the DRI2GetParam request.
Compatibility up to 2.0 is not preserved, but was also never released.
@ -830,6 +862,23 @@ A.2 Protocol Requests
└───
┌───
DRI2GetParam
1 CARD8 major opcode
1 13 DRI2 opcode
2 8 length
4 DRAWABLE drawable
4 CARD32 param
1 1 Reply
1 BOOL is_param_recognized
2 CARD16 sequence number
4 0 reply length
4 CARD32 value_hi
4 CARD32 value_lo
16 unused
└───
A.3 Protocol Events
The DRI2 extension specifies DRI2_BufferSwapComplete and