1f591e195Smrg<?xml version="1.0" encoding="utf-8"?>
2f591e195Smrg<!--
3f591e195Smrg
4f591e195SmrgCopyright © 2013 Keith Packard
5f591e195Smrg
6f591e195SmrgPermission to use, copy, modify, distribute, and sell this software and its
7f591e195Smrgdocumentation for any purpose is hereby granted without fee, provided that
8f591e195Smrgthe above copyright notice appear in all copies and that both that copyright
9f591e195Smrgnotice and this permission notice appear in supporting documentation, and
10f591e195Smrgthat the name of the copyright holders not be used in advertising or
11f591e195Smrgpublicity pertaining to distribution of the software without specific,
12f591e195Smrgwritten prior permission.  The copyright holders make no representations
13f591e195Smrgabout the suitability of this software for any purpose.  It is provided "as
14f591e195Smrgis" without express or implied warranty.
15f591e195Smrg
16f591e195SmrgTHE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
17f591e195SmrgINCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
18f591e195SmrgEVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
19f591e195SmrgCONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
20f591e195SmrgDATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
21f591e195SmrgTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
22f591e195SmrgOF THIS SOFTWARE.
23f591e195Smrg-->
24f591e195Smrg
25f591e195Smrg<xcb header="present" extension-xname="Present" extension-name="Present"
2618ea056eSmrg  major-version="1" minor-version="4">
27f591e195Smrg  <import>xproto</import>
28f591e195Smrg  <import>randr</import>
29f591e195Smrg  <import>xfixes</import>
30f591e195Smrg  <import>sync</import>
3118ea056eSmrg  <import>dri3</import>
32f591e195Smrg
33f591e195Smrg  <!-- Types -->
34f591e195Smrg
35f591e195Smrg  <enum name="Event">
36f591e195Smrg    <item name="ConfigureNotify"><value>0</value></item>
37f591e195Smrg    <item name="CompleteNotify"><value>1</value></item>
38f591e195Smrg    <item name="IdleNotify"><value>2</value></item>
39f591e195Smrg    <item name="RedirectNotify"><value>3</value></item>
40f591e195Smrg  </enum>
41f591e195Smrg
42f591e195Smrg  <enum name="EventMask">
43f591e195Smrg    <item name="NoEvent"><value>0</value></item>
44f591e195Smrg    <item name="ConfigureNotify"><bit>0</bit></item>
45f591e195Smrg    <item name="CompleteNotify"><bit>1</bit></item>
46f591e195Smrg    <item name="IdleNotify"><bit>2</bit></item>
47f591e195Smrg    <item name="RedirectNotify"><bit>3</bit></item>
48f591e195Smrg  </enum>
49f591e195Smrg
50f591e195Smrg  <enum name="Option">
51f591e195Smrg    <item name="None"><value>0</value></item>
52f591e195Smrg    <item name="Async"><bit>0</bit></item>
53f591e195Smrg    <item name="Copy"><bit>1</bit></item>
54f591e195Smrg    <item name="UST"><bit>2</bit></item>
55a27842ffSmrg    <item name="Suboptimal"><bit>3</bit></item>
5618ea056eSmrg    <item name="AsyncMayTear"><bit>4</bit></item>
57f591e195Smrg  </enum>
58f591e195Smrg
59f591e195Smrg  <enum name="Capability">
60f591e195Smrg    <item name="None"><value>0</value></item>
61f591e195Smrg    <item name="Async"><bit>0</bit></item>
62f591e195Smrg    <item name="Fence"><bit>1</bit></item>
63f591e195Smrg    <item name="UST"><bit>2</bit></item>
6418ea056eSmrg    <item name="AsyncMayTear"><bit>3</bit></item>
6518ea056eSmrg    <!-- PresentCapabilitySyncobj is new in version 1.4 -->
6618ea056eSmrg    <item name="Syncobj"><bit>4</bit></item>
67f591e195Smrg  </enum>
68f591e195Smrg
69f591e195Smrg  <enum name="CompleteKind">
70f591e195Smrg    <item name="Pixmap"><value>0</value></item>
71f591e195Smrg    <item name="NotifyMSC"><value>1</value></item>
72f591e195Smrg  </enum>
73f591e195Smrg
74f591e195Smrg  <enum name="CompleteMode">
75f591e195Smrg    <item name="Copy"><value>0</value></item>
76f591e195Smrg    <item name="Flip"><value>1</value></item>
77f591e195Smrg    <item name="Skip"><value>2</value></item>
78a27842ffSmrg    <item name="SuboptimalCopy"><value>3</value></item>
79f591e195Smrg  </enum>
80f591e195Smrg
81f591e195Smrg  <struct name="Notify">
82f591e195Smrg    <field type="WINDOW" name="window" />
83f591e195Smrg    <field type="CARD32" name="serial" />
84f591e195Smrg  </struct>
85f591e195Smrg
86f591e195Smrg  <!-- Requests -->
87f591e195Smrg  <request name="QueryVersion" opcode="0">
88f591e195Smrg    <field type="CARD32" name="major_version" />
89f591e195Smrg    <field type="CARD32" name="minor_version" />
90f591e195Smrg    <reply>
91f591e195Smrg      <pad bytes="1" />
92f591e195Smrg      <field type="CARD32" name="major_version" />
93f591e195Smrg      <field type="CARD32" name="minor_version" />
94f591e195Smrg    </reply>
95f591e195Smrg  </request>
96f591e195Smrg
97f591e195Smrg  <request name="Pixmap" opcode="1">
98891601f5Smrg    <required_start_align align="8" />
99f591e195Smrg    <field type="WINDOW" name="window" />
100f591e195Smrg    <field type="PIXMAP" name="pixmap" />
101f591e195Smrg    <field type="CARD32" name="serial" />
102f591e195Smrg    <field type="REGION" name="valid" />
103f591e195Smrg    <field type="REGION" name="update" />
104f591e195Smrg    <field type="INT16" name="x_off" />
105f591e195Smrg    <field type="INT16" name="y_off" />
106f591e195Smrg    <field type="CRTC" name="target_crtc" />
107f591e195Smrg    <field type="FENCE" name="wait_fence" />
108f591e195Smrg    <field type="FENCE" name="idle_fence" />
109f591e195Smrg    <field type="CARD32" name="options" />
110f591e195Smrg    <pad bytes="4"/>
111f591e195Smrg    <field type="CARD64" name="target_msc" />
112f591e195Smrg    <field type="CARD64" name="divisor" />
113f591e195Smrg    <field type="CARD64" name="remainder" />
114f591e195Smrg    <list type="Notify" name="notifies"/>
115f591e195Smrg  </request>
116f591e195Smrg
117f591e195Smrg  <request name="NotifyMSC" opcode="2">
118891601f5Smrg    <required_start_align align="8" />
119f591e195Smrg    <field type="WINDOW" name="window" />
120f591e195Smrg    <field type="CARD32" name="serial" />
121f591e195Smrg    <pad bytes="4"/>
122f591e195Smrg    <field type="CARD64" name="target_msc" />
123f591e195Smrg    <field type="CARD64" name="divisor" />
124f591e195Smrg    <field type="CARD64" name="remainder" />
125f591e195Smrg  </request>
126f591e195Smrg
127f591e195Smrg  <xidtype name="EVENT"/>
128f591e195Smrg  
129f591e195Smrg  <request name="SelectInput" opcode="3">
130f591e195Smrg    <field type="EVENT" name="eid"/>
131f591e195Smrg    <field type="WINDOW" name="window" />
132f591e195Smrg    <field type="CARD32" name="event_mask" mask="EventMask" />
133f591e195Smrg  </request>
134f591e195Smrg
135f591e195Smrg  <request name="QueryCapabilities" opcode="4">
136f591e195Smrg    <field type="CARD32" name="target" />
137f591e195Smrg    <reply>
138f591e195Smrg      <pad bytes="1" />
139f591e195Smrg      <field type="CARD32" name="capabilities" />
140f591e195Smrg    </reply>
141f591e195Smrg  </request>
142f591e195Smrg
14318ea056eSmrg  <!-- PresentPixmapSynced is new in version 1.4 -->
14418ea056eSmrg  <request name="PixmapSynced" opcode="5">
14518ea056eSmrg    <required_start_align align="8" />
14618ea056eSmrg    <field type="WINDOW" name="window" />
14718ea056eSmrg    <field type="PIXMAP" name="pixmap" />
14818ea056eSmrg    <field type="CARD32" name="serial" />
14918ea056eSmrg    <field type="REGION" name="valid" />
15018ea056eSmrg    <field type="REGION" name="update" />
15118ea056eSmrg    <field type="INT16" name="x_off" />
15218ea056eSmrg    <field type="INT16" name="y_off" />
15318ea056eSmrg    <field type="CRTC" name="target_crtc" />
15418ea056eSmrg    <field type="SYNCOBJ" name="acquire_syncobj" />
15518ea056eSmrg    <field type="SYNCOBJ" name="release_syncobj" />
15618ea056eSmrg    <field type="CARD64" name="acquire_point" />
15718ea056eSmrg    <field type="CARD64" name="release_point" />
15818ea056eSmrg    <field type="CARD32" name="options" />
15918ea056eSmrg    <pad bytes="4"/>
16018ea056eSmrg    <field type="CARD64" name="target_msc" />
16118ea056eSmrg    <field type="CARD64" name="divisor" />
16218ea056eSmrg    <field type="CARD64" name="remainder" />
16318ea056eSmrg    <list type="Notify" name="notifies"/>
16418ea056eSmrg  </request>
16518ea056eSmrg
166f591e195Smrg  <!-- Events -->
167f591e195Smrg
168f591e195Smrg  <event name="Generic" number="0">
169f591e195Smrg    <field type="CARD8" name="extension" />
170f591e195Smrg    <field type="CARD32" name="length" />
171f591e195Smrg    <field type="CARD16" name="evtype" />
172f591e195Smrg    <pad bytes="2" />
173f591e195Smrg    <field type="EVENT" name="event" />
174f591e195Smrg  </event>
175f591e195Smrg    
176f591e195Smrg  <event name="ConfigureNotify" number="0" xge="true">
177f591e195Smrg    <pad bytes="2" />
178f591e195Smrg    <field type="EVENT" name="event" />
179f591e195Smrg    <field type="WINDOW" name="window" />
180f591e195Smrg    <field type="INT16" name="x" />
181f591e195Smrg    <field type="INT16" name="y" />
182f591e195Smrg    <field type="CARD16" name="width" />
183f591e195Smrg    <field type="CARD16" name="height" />
184f591e195Smrg    <field type="INT16" name="off_x" />
185f591e195Smrg    <field type="INT16" name="off_y" />
186f591e195Smrg    <field type="CARD16" name="pixmap_width" />
187f591e195Smrg    <field type="CARD16" name="pixmap_height" />
188f591e195Smrg    <field type="CARD32" name="pixmap_flags" />
189f591e195Smrg  </event>
190f591e195Smrg
191f591e195Smrg  <event name="CompleteNotify" number="1" xge="true">
192891601f5Smrg    <required_start_align align="8" />
193f591e195Smrg    <field type="CARD8" name="kind" enum="CompleteKind" />
194f591e195Smrg    <field type="CARD8" name="mode" enum="CompleteMode" />
195f591e195Smrg    <field type="EVENT" name="event" />
196f591e195Smrg    <field type="WINDOW" name="window" />
197f591e195Smrg    <field type="CARD32" name="serial" />
198f591e195Smrg    <field type="CARD64" name="ust" />
199f591e195Smrg    <field type="CARD64" name="msc" />
200f591e195Smrg  </event>
201f591e195Smrg
202f591e195Smrg  <event name="IdleNotify" number="2" xge="true">
203f591e195Smrg    <pad bytes="2"/>
204f591e195Smrg    <field type="EVENT" name="event" />
205f591e195Smrg    <field type="WINDOW" name="window" />
206f591e195Smrg    <field type="CARD32" name="serial" />
207f591e195Smrg    <field type="PIXMAP" name="pixmap" />
208f591e195Smrg    <field type="FENCE" name="idle_fence" />
209f591e195Smrg  </event>
210f591e195Smrg
211f591e195Smrg  <event name="RedirectNotify" number="3" xge="true">
212891601f5Smrg    <required_start_align align="8" />
213f591e195Smrg    <field type="BOOL" name="update_window"/>
214f591e195Smrg    <pad bytes="1"/>
215f591e195Smrg    <field type="EVENT" name="event" />
216f591e195Smrg    <field type="WINDOW" name="event_window" />
217f591e195Smrg    <field type="WINDOW" name="window" />
218f591e195Smrg    <field type="PIXMAP" name="pixmap" />
219f591e195Smrg    <field type="CARD32" name="serial" />
220f591e195Smrg
221f591e195Smrg    <field type="REGION" name="valid_region" />
222f591e195Smrg    <field type="REGION" name="update_region" />
223f591e195Smrg    <field type="RECTANGLE" name="valid_rect" />
224f591e195Smrg    <field type="RECTANGLE" name="update_rect" />
225f591e195Smrg
226f591e195Smrg    <field type="INT16" name="x_off" />
227f591e195Smrg    <field type="INT16" name="y_off" />
228f591e195Smrg    <field type="CRTC" name="target_crtc" />
229f591e195Smrg    <field type="FENCE" name="wait_fence" />
230f591e195Smrg    <field type="FENCE" name="idle_fence" />
231f591e195Smrg    <field type="CARD32" name="options" />
232f591e195Smrg    <pad bytes="4"/>
233f591e195Smrg    <field type="CARD64" name="target_msc" />
234f591e195Smrg    <field type="CARD64" name="divisor" />
235f591e195Smrg    <field type="CARD64" name="remainder" />
236891601f5Smrg    <list type="Notify" name="notifies" />
237f591e195Smrg  </event>
238f591e195Smrg
239f591e195Smrg</xcb>
240