[PATCH 5/6] Add DRI3
Keith Packard
keithp at keithp.com
Tue Nov 5 16:39:05 PST 2013
Signed-off-by: Keith Packard <keithp at keithp.com>
---
src/Makefile.am | 1 +
src/dri3.xml | 97 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/xproto.xml | 19 ++++++++++-
xcbgen/xtypes.py | 24 ++++++++++++++
4 files changed, 140 insertions(+), 1 deletion(-)
create mode 100644 src/dri3.xml
diff --git a/src/Makefile.am b/src/Makefile.am
index eef2dbc..5804fff 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -6,6 +6,7 @@ xcbinclude_HEADERS = \
damage.xml \
dpms.xml \
dri2.xml \
+ dri3.xml \
ge.xml \
glx.xml \
randr.xml \
diff --git a/src/dri3.xml b/src/dri3.xml
new file mode 100644
index 0000000..34c4f4b
--- /dev/null
+++ b/src/dri3.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Copyright © 2013 Keith Packard
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting documentation, and
+that the name of the copyright holders not be used in advertising or
+publicity pertaining to distribution of the software without specific,
+written prior permission. The copyright holders make no representations
+about the suitability of this software for any purpose. It is provided "as
+is" without express or implied warranty.
+
+THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
+OF THIS SOFTWARE.
+-->
+
+<xcb header="dri3" extension-xname="DRI3" extension-name="DRI3"
+ major-version="1" minor-version="0">
+ <import>xproto</import>
+
+ <!-- Types -->
+
+ <!-- Requests -->
+ <request name="QueryVersion" opcode="0">
+ <field type="CARD32" name="major_version" />
+ <field type="CARD32" name="minor_version" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="major_version" />
+ <field type="CARD32" name="minor_version" />
+ </reply>
+ </request>
+
+ <request name="Open" opcode="1">
+ <field type="WINDOW" name="window" />
+ <field type="CARD32" name="provider" />
+ <reply>
+ <field type="CARD8" name="nfd"/>
+ <fd name="device_fd" />
+ <pad bytes="24" />
+ </reply>
+ </request>
+
+ <request name="PixmapFromBuffer" opcode="2">
+ <field type="PIXMAP" name="pixmap" />
+ <field type="DRAWABLE" name="drawable" />
+ <field type="CARD32" name="size" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ <field type="CARD16" name="stride" />
+ <field type="CARD8" name="depth" />
+ <field type="CARD8" name="bpp" />
+ <fd name="pixmap_fd" />
+ </request>
+
+ <request name="BufferFromPixmap" opcode="3">
+ <field type="PIXMAP" name="pixmap" />
+ <reply>
+ <field type="CARD8" name="nfd"/>
+ <field type="CARD32" name="size" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ <field type="CARD16" name="stride" />
+ <field type="CARD8" name="depth" />
+ <field type="CARD8" name="bpp" />
+ <fd name="pixmap_fd" />
+ <pad bytes="12"/>
+ </reply>
+ </request>
+
+ <request name="FenceFromFD" opcode="4">
+ <field type="DRAWABLE" name="drawable" />
+ <field type="CARD32" name="fence"/>
+ <field type="BOOL" name="initially_triggered"/>
+ <pad bytes="3"/>
+ <fd name="fence_fd"/>
+ </request>
+
+ <request name="FDFromFence" opcode="5">
+ <field type="DRAWABLE" name="drawable" />
+ <field type="CARD32" name="fence"/>
+ <reply>
+ <field type="CARD8" name="nfd"/>
+ <fd name="fence_fd" />
+ <pad bytes="24"/>
+ </reply>
+ </request>
+
+</xcb>
diff --git a/src/xproto.xml b/src/xproto.xml
index bf4dcbf..c9f6979 100644
--- a/src/xproto.xml
+++ b/src/xproto.xml
@@ -1080,7 +1080,24 @@ The number of keycodes altered.
</doc>
</event>
-
+ <event name="ge" number="35">
+ <field type="CARD8" name="extension"/>
+ <field type="CARD32" name="length"/>
+ <field type="CARD16" name="evtype"/>
+ <pad bytes="22" />
+ <doc>
+ <brief>generic event (with length)</brief>
+ <field name="extension"><![CDATA[
+The major opcode of the extension creating this event
+ ]]></field>
+ <field name="length"><![CDATA[
+The amount (in 4-byte units) of data beyond 32 bytes
+ ]]></field>
+ <field name="evtype"><![CDATA[
+The extension-specific event type
+ ]]></field>
+ </doc>
+ </event>
<!-- Core error types -->
diff --git a/xcbgen/xtypes.py b/xcbgen/xtypes.py
index d007635..a68e8b8 100644
--- a/xcbgen/xtypes.py
+++ b/xcbgen/xtypes.py
@@ -34,6 +34,7 @@ class Type(object):
self.is_pad = False
self.is_switch = False
self.is_bitcase = False
+ self.is_event_align = False
def resolve(self, module):
'''
@@ -314,6 +315,24 @@ class PadType(Type):
return True
+class EventAlignType(Type):
+ '''
+ Derived class which represents the end of a normal 32-byte
+ X event. Fields after this are extended fields.
+ '''
+ def __init__(self, elt):
+ Type.__init__(self, tcard8.name)
+ self.is_event_align = True
+ self.size = 0
+ self.nmemb = 0
+
+ def resolve(self, module):
+ self.resolved = True
+
+ def fixed_size(self):
+ return True
+
+
class ComplexType(Type):
'''
Derived class which represents a structure. Base type for all structure types.
@@ -345,6 +364,11 @@ class ComplexType(Type):
type = PadType(child)
pads = pads + 1
visible = False
+ elif child.tag == 'eventalign':
+ field_name = 'eventalign'
+ fkey = 'CARD8'
+ type = EventAlignType(child)
+ visible = False
elif child.tag == 'field':
field_name = child.get('name')
enum = child.get('enum')
--
1.8.4.2
More information about the xorg-devel
mailing list