[PATCH 6/6] Add Present protocol specification

Keith Packard keithp at keithp.com
Tue Nov 5 16:39:06 PST 2013


Signed-off-by: Keith Packard <keithp at keithp.com>
---
 src/Makefile.am |   1 +
 src/present.xml | 221 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 src/xproto.xml  |   1 +
 3 files changed, 223 insertions(+)
 create mode 100644 src/present.xml

diff --git a/src/Makefile.am b/src/Makefile.am
index 5804fff..d81d818 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -9,6 +9,7 @@ xcbinclude_HEADERS = \
 	dri3.xml \
 	ge.xml \
 	glx.xml \
+	present.xml \
 	randr.xml \
 	record.xml \
 	render.xml \
diff --git a/src/present.xml b/src/present.xml
new file mode 100644
index 0000000..87b73f8
--- /dev/null
+++ b/src/present.xml
@@ -0,0 +1,221 @@
+<?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="present" extension-xname="Present" extension-name="Present"
+  major-version="1" minor-version="0">
+  <import>xproto</import>
+  <import>randr</import>
+  <import>xfixes</import>
+  <import>sync</import>
+
+  <!-- Types -->
+
+  <enum name="Event">
+    <item name="ConfigureNotify"><value>0</value></item>
+    <item name="CompleteNotify"><value>1</value></item>
+    <item name="IdleNotify"><value>2</value></item>
+    <item name="RedirectNotify"><value>3</value></item>
+  </enum>
+
+  <enum name="EventMask">
+    <item name="NoEvent"><value>0</value></item>
+    <item name="ConfigureNotify"><bit>0</bit></item>
+    <item name="CompleteNotify"><bit>1</bit></item>
+    <item name="IdleNotify"><bit>2</bit></item>
+    <item name="RedirectNotify"><bit>3</bit></item>
+  </enum>
+
+  <enum name="Option">
+    <item name="None"><value>0</value></item>
+    <item name="Async"><bit>0</bit></item>
+    <item name="Copy"><bit>1</bit></item>
+    <item name="UST"><bit>2</bit></item>
+  </enum>
+
+  <enum name="Capability">
+    <item name="None"><value>0</value></item>
+    <item name="Async"><bit>0</bit></item>
+    <item name="Fence"><bit>1</bit></item>
+    <item name="UST"><bit>2</bit></item>
+  </enum>
+
+  <enum name="CompleteKind">
+    <item name="Pixmap"><value>0</value></item>
+    <item name="NotifyMSC"><value>1</value></item>
+  </enum>
+
+  <enum name="CompleteMode">
+    <item name="Copy"><value>0</value></item>
+    <item name="Flip"><value>1</value></item>
+    <item name="Skip"><value>2</value></item>
+  </enum>
+
+  <struct name="Notify">
+    <field type="WINDOW" name="window" />
+    <field type="CARD32" name="serial" />
+  </struct>
+
+  <!-- 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="Pixmap" opcode="1">
+    <field type="WINDOW" name="window" />
+    <field type="PIXMAP" name="pixmap" />
+    <field type="CARD32" name="serial" />
+    <field type="REGION" name="valid" />
+    <field type="REGION" name="update" />
+    <field type="INT16" name="x_off" />
+    <field type="INT16" name="y_off" />
+    <field type="CRTC" name="target_crtc" />
+    <field type="FENCE" name="wait_fence" />
+    <field type="FENCE" name="idle_fence" />
+    <field type="CARD32" name="options" />
+    <pad bytes="4"/>
+    <field type="CARD64" name="target_msc" />
+    <field type="CARD64" name="divisor" />
+    <field type="CARD64" name="remainder" />
+    <list type="Notify" name="notifies"/>
+  </request>
+
+  <request name="NotifyMSC" opcode="2">
+    <field type="WINDOW" name="window" />
+    <field type="CARD32" name="serial" />
+    <pad bytes="4"/>
+    <field type="CARD64" name="target_msc" />
+    <field type="CARD64" name="divisor" />
+    <field type="CARD64" name="remainder" />
+  </request>
+
+  <xidtype name="EVENT"/>
+  
+  <request name="SelectInput" opcode="3">
+    <field type="EVENT" name="eid"/>
+    <field type="WINDOW" name="window" />
+    <field type="CARD32" name="event_mask" mask="EventMask" />
+  </request>
+
+  <request name="QueryCapabilities" opcode="4">
+    <field type="CARD32" name="target" />
+    <reply>
+      <pad bytes="1" />
+      <field type="CARD32" name="capabilities" />
+    </reply>
+  </request>
+
+  <!-- Events -->
+
+  <event name="Generic">
+    <field type="CARD8" name="extension" />
+    <field type="CARD32" name="length" />
+    <field type="CARD16" name="evtype" enum="EventType" />
+    <pad bytes="2" />
+    <field type="EVENT" name="event" />
+  </event>
+    
+  <event name="ConfigureNotify" number="0">
+    <field type="CARD8" name="extension" />
+    <field type="CARD32" name="length" />
+    <field type="CARD16" name="evtype" enum="EventType" />
+    <pad bytes="2" />
+    <field type="EVENT" name="event" />
+    <field type="WINDOW" name="window" />
+    <field type="INT16" name="x" />
+    <field type="INT16" name="y" />
+    <field type="CARD16" name="width" />
+    <field type="CARD16" name="height" />
+    <field type="INT16" name="off_x" />
+    <field type="INT16" name="off_y" />
+    <field type="CARD32" name="full_sequence"/>
+    <field type="CARD16" name="pixmap_width" />
+    <field type="CARD16" name="pixmap_height" />
+    <field type="CARD32" name="pixmap_flags" />
+  </event>
+
+  <event name="CompleteNotify" number="1">
+    <field type="CARD8" name="extension" />
+    <field type="CARD32" name="length" />
+    <field type="CARD16" name="evtype" enum="EventType" />
+    <field type="CARD8" name="kind" enum="CompleteKind" />
+    <field type="CARD8" name="mode" enum="CompleteMode" />
+    <field type="EVENT" name="event" />
+    <field type="WINDOW" name="window" />
+    <field type="CARD32" name="serial" />
+    <field type="CARD64" name="ust" />
+    <field type="CARD32" name="full_sequence" />
+    <field type="CARD64" name="msc" />
+  </event>
+
+  <event name="IdleNotify" number="2">
+    <field type="CARD8" name="extension" />
+    <field type="CARD32" name="length" />
+    <field type="CARD16" name="evtype" enum="EventType" />
+    <pad bytes="2"/>
+    <field type="EVENT" name="event" />
+    <field type="WINDOW" name="window" />
+    <field type="CARD32" name="serial" />
+    <field type="PIXMAP" name="pixmap" />
+    <field type="FENCE" name="idle_fence" />
+  </event>
+
+  <event name="RedirectNotify" number="3">
+    <field type="CARD8" name="extension" />
+    <field type="CARD32" name="length" />
+    <field type="CARD16" name="evtype" enum="EventType" />
+    <field type="BOOL" name="update_window"/>
+    <pad bytes="1"/>
+    <field type="EVENT" name="event" />
+    <field type="WINDOW" name="event_window" />
+    <field type="WINDOW" name="window" />
+    <field type="PIXMAP" name="pixmap" />
+    <field type="CARD32" name="serial" />
+
+    <field type="CARD32" name="full_sequence" />
+    
+    <field type="REGION" name="valid_region" />
+    <field type="REGION" name="update_region" />
+    <field type="RECTANGLE" name="valid_rect" />
+    <field type="RECTANGLE" name="update_rect" />
+
+    <field type="INT16" name="x_off" />
+    <field type="INT16" name="y_off" />
+    <field type="CRTC" name="target_crtc" />
+    <field type="FENCE" name="wait_fence" />
+    <field type="FENCE" name="idle_fence" />
+    <field type="CARD32" name="options" />
+    <pad bytes="4"/>
+    <field type="CARD64" name="target_msc" />
+    <field type="CARD64" name="divisor" />
+    <field type="CARD64" name="remainder" />
+    <list type="Notify" name="notifies"/>
+  </event>
+
+</xcb>
diff --git a/src/xproto.xml b/src/xproto.xml
index c9f6979..8a2e276 100644
--- a/src/xproto.xml
+++ b/src/xproto.xml
@@ -1085,6 +1085,7 @@ The number of keycodes altered.
     <field type="CARD32" name="length"/>
     <field type="CARD16" name="evtype"/>
     <pad bytes="22" />
+    <field type="CARD32" name="full_sequence"/>
     <doc>
       <brief>generic event (with length)</brief>
       <field name="extension"><![CDATA[
-- 
1.8.4.2



More information about the xorg-devel mailing list