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
of writing 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_hiz

CC: Keith Packard <[email protected]>
CC: Kristian Høgsberg <[email protected]>
CC: Ian Romanick <[email protected]>
CC: Eric Anholt <[email protected]>
CC: Ville Syrjälä <[email protected]>
CC: Michel Dänzer <[email protected]>
CC: Chris Wilson <[email protected]>
CC: Jesse Barnes <[email protected]>
Signed-off-by: Chad Versace <[email protected]>
---
 configure.ac  |    2 +-
 dri2proto.h   |   33 +++++++++++++++++++++++++++++--
 dri2proto.txt |   60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dri2tokens.h  |    4 ++++
 4 files changed, 96 insertions(+), 3 deletions(-)

diff --git a/configure.ac b/configure.ac
index d671f5a..aeb86a9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -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
 
diff --git a/dri2proto.h b/dri2proto.h
index cd82afb..8098568 100644
--- a/dri2proto.h
+++ b/dri2proto.h
@@ -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,32 @@ typedef struct {
 } xDRI2InvalidateBuffers;
 #define sz_xDRI2InvalidateBuffers 32
 
+typedef struct {
+    CARD8   reqType;
+    CARD8   dri2ReqType;
+    CARD16  length B16;
+    CARD32  drawable B32;
+    CARD32  namespace_ B32;
+    CARD32  param_hi B32;
+    CARD32  param_lo B32;
+} xDRI2GetParamReq;
+#define sz_xDRI2GetParamReq 20
+
+typedef struct {
+    BYTE    type; /*X_Reply*/
+    BYTE    pad1;
+    CARD16  sequenceNumber B16;
+    CARD32  length B32;
+    BOOL    is_param_recognized;
+    BYTE    pad2;
+    BYTE    pad3;
+    BYTE    pad4;
+    CARD32  value_hi B32;
+    CARD32  value_lo B32;
+    CARD32  pad5 B32;
+    CARD32  pad6 B32;
+    CARD32  pad7 B32;
+} xDRI2GetParamReply;
+#define sz_xDRI2GetParamReply 32
+
 #endif
diff --git a/dri2proto.txt b/dri2proto.txt
index 7bde067..df3758c 100644
--- a/dri2proto.txt
+++ b/dri2proto.txt
@@ -203,6 +203,14 @@ DRI2ATTACH_FORMAT { attachment: CARD32
        format.  'attachment' describes the attachment point for the buffer,
        'format' describes an opaque, device-dependent format for the buffer.
 
+DRI2PARAM_NAMESPACE { DRI2ParamNamespaceServer
+                     DRI2ParamNamespaceDriver }
+
+       These values describe the target namespace of a DRI2GetParam request.
+        Parameter names in the server namespace are invariant with respect to
+        the loaded driver. Parameter names in the driver namespace are
+       specific to the loaded driver.
+
                             ⚙ ⚙ ⚙  ⚙ ⚙ ⚙
 
 
@@ -440,6 +448,28 @@ 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
+       namespace: DRI2PARAM_NAMESPACE
+       param: CARD64
+      ▶
+       is_param_recognized: BOOL
+       unused: 3 bytes
+       value: CARD64
+└───
+       Errors: Drawable, Value
+
+        Get the value of a parameter. The parameter's value is looked up in
+       the 'namespace' on the screen associated with the 'drawable'.
+
+        Possible values of 'param_is_recognized' are true (1) and
+       false(0).  If false, then 'value' is undefined.
+
+       If 'namespace' has a bad value, the a Value error is emitted.
+
+       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.
 
 
@@ -599,6 +631,14 @@ A.1 Common Types
        This data type is only available with protocol version 1.1 or
        later.
 
+┌───
+    DRI2PARAM_NAMESPACE
+       0x0     DRI2ParamNamespaceServer
+       0x1     DRI2ParamNamespaceDriver
+└───
+       Indicates the target namespace of a DRI2GetParam request. This data
+       type is only available with protocol version 1.4 or later.
+
 A.2 Protocol Requests
 
 ┌───
@@ -830,6 +870,26 @@ A.2 Protocol Requests
      ▶
 └───
 
+┌───
+    DRI2GetParam
+       1       CARD8                   major opcode
+       1       13                      DRI2 opcode
+       2       8                       length
+       4       CARD32                  namespace
+       4       CARD32                  param_hi
+       4       CARD32                  param_lo
+     ▶
+       1       1                       Reply
+       1                               unused
+       2       CARD16                  sequence number
+       4       0                       reply length
+       1       BOOL                    is_param_recognized
+       3                               unused
+       4       CARD32                  value_hi
+       4       CARD32                  value_lo
+       12                              unused
+└───
+
 A.3 Protocol Events
 
 The DRI2 extension specifies DRI2_BufferSwapComplete and
diff --git a/dri2tokens.h b/dri2tokens.h
index 16c9008..2bd10eb 100644
--- a/dri2tokens.h
+++ b/dri2tokens.h
@@ -53,4 +53,8 @@
 #define DRI2_BLIT_COMPLETE             0x2
 #define DRI2_FLIP_COMPLETE             0x3
 
+/* Target namespaces for the DRI2GetParam request. */
+#define DRI2ParamNamespaceServer       0
+#define DRI2ParamNamespaceDriver       1
+
 #endif
-- 
1.7.10.1

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to