glx: Use FBCONFIG type for fbconfig parameter of CreateNewContext and CreatePixmap
[free-sw/xcb/proto] / src / randr.xml
index 352b1e1..4f0716f 100644 (file)
@@ -27,9 +27,15 @@ authorization from the authors.
 -->
 
 <xcb header="randr" extension-xname="RANDR" extension-name="RandR"
-    major-version="1" minor-version="2">
+    major-version="1" minor-version="3">
 
        <import>xproto</import>
+       <import>render</import>
+
+       <!-- XIDs -->
+       <xidtype name="MODE" />
+       <xidtype name="CRTC" />
+       <xidtype name="OUTPUT" />
        
        <!-- Errors -->
 
@@ -49,10 +55,10 @@ authorization from the authors.
        </enum>
 
        <struct name="ScreenSize">
-               <field type="INT16" name="width" />   <!-- pixels -->
-               <field type="INT16" name="height" />
-               <field type="INT16" name="mwidth" />  <!-- millimeters -->
-               <field type="INT16" name="mheight" />
+               <field type="CARD16" name="width" />   <!-- pixels -->
+               <field type="CARD16" name="height" />
+               <field type="CARD16" name="mwidth" />  <!-- millimeters -->
+               <field type="CARD16" name="mheight" />
        </struct>
        
        <struct name="RefreshRates">
@@ -75,40 +81,48 @@ authorization from the authors.
        
        <!-- Skip obsolete opcode 1 so old clients fail immediately -->
 
+       <enum name="SetConfig">
+               <item name="Success"><value>0</value></item>
+               <item name="InvalidConfigTime"><value>1</value></item>
+               <item name="InvalidTime"><value>2</value></item>
+               <item name="Failed"><value>3</value></item>
+       </enum>
+
        <!-- This is for the 1.1 version request.  I don't believe we need to specify a 1.0 request
        as few things used randr 1.0.  The only difference is the removal of refresh and padding I think.
        BEWARE: the docs lie!
        -->
        <request name="SetScreenConfig" opcode="2">
-               <field type="DRAWABLE" name="drawable" />
+               <field type="WINDOW" name="window" />
                <field type="TIMESTAMP" name="timestamp" />
                <field type="TIMESTAMP" name="config_timestamp" />
                <field type="CARD16" name="sizeID" />
-               <field type="INT16" name="rotation" />
+               <field type="CARD16" name="rotation" mask="Rotation" />
                <field type="CARD16" name="rate" />
                <pad bytes="2" />
                <reply>
-                       <field type="CARD8" name="status" />    <!-- enum SetConfig -->
+                       <field type="CARD8" name="status" enum="SetConfig" />
                        <field type="TIMESTAMP" name="new_timestamp" />
                        <field type="TIMESTAMP" name="config_timestamp" />
                        <field type="WINDOW" name="root" />
-                       <field type="CARD16" name="subpixel_order" />
+                       <field type="CARD16" name="subpixel_order" enum="SubPixel" />
                        <pad bytes="10" />
                </reply>
        </request>
        
        <!-- opcode 3 is obsolete -->
 
-       <enum name="SetConfig">
-               <item name="Success"><value>0</value></item>
-               <item name="InvalidConfigTime"><value>1</value></item>
-               <item name="InvalidTime"><value>2</value></item>
-               <item name="Failed"><value>3</value></item>
+       <enum name="NotifyMask" >
+               <item name="ScreenChange">  <bit>0</bit></item>
+               <!-- new in 1.2 -->
+               <item name="CrtcChange">    <bit>1</bit></item>
+               <item name="OutputChange">  <bit>2</bit></item>
+               <item name="OutputProperty"><bit>3</bit></item>
        </enum>
 
        <request name="SelectInput" opcode="4"> 
                <field type="WINDOW" name="window" />
-               <field type="CARD16" name="enable" />  <!-- enum SetConfig -->
+               <field type="CARD16" name="enable" mask="NotifyMask" />
                <pad bytes="2" />
        </request>
 
@@ -118,13 +132,13 @@ authorization from the authors.
        <request name="GetScreenInfo" opcode="5">
                <field type="WINDOW" name="window" />
                <reply>
-                       <field type="CARD8" name="rotations" />
+                       <field type="CARD8" name="rotations" mask="Rotation" />
                        <field type="WINDOW" name="root" />
                        <field type="TIMESTAMP" name="timestamp" />
                        <field type="TIMESTAMP" name="config_timestamp" />
                        <field type="CARD16" name="nSizes" />
                        <field type="CARD16" name="sizeID" />
-                       <field type="INT16" name="rotation" />
+                       <field type="CARD16" name="rotation" mask="Rotation" />
                        <field type="CARD16" name="rate" />
                        <field type="CARD16" name="nInfo" />
                        <pad bytes="2" />
@@ -150,6 +164,7 @@ authorization from the authors.
                        <field type="CARD16" name="min_height" />
                        <field type="CARD16" name="max_width" />
                        <field type="CARD16" name="max_height" />
+                       <pad bytes="16" />
                </reply>
        </request>
 
@@ -192,7 +207,7 @@ authorization from the authors.
                <field type="CARD16" name="vsync_end" />
                <field type="CARD16" name="vtotal" />
                <field type="CARD16" name="name_len" />
-               <field type="CARD32" name="mode_flags" />       <!-- enum ModeFlag -->
+               <field type="CARD32" name="mode_flags" mask="ModeFlag" />
                <!-- the mode name itself -->
        </struct>
 
@@ -207,10 +222,10 @@ authorization from the authors.
                        <field type="CARD16" name="num_modes" />
                        <field type="CARD16" name="names_len" />
                        <pad bytes="8" />
-                       <list type="CARD32" name="crtcs">
+                       <list type="CRTC" name="crtcs">
                            <fieldref>num_crtcs</fieldref>
                        </list>
-                       <list type="CARD32" name="outputs">
+                       <list type="OUTPUT" name="outputs">
                            <fieldref>num_outputs</fieldref>
                        </list>
                        <list type="ModeInfo" name="modes">
@@ -233,28 +248,28 @@ authorization from the authors.
        </enum>
 
        <request name="GetOutputInfo" opcode="9">
-               <field type="CARD32" name="output" />
+               <field type="OUTPUT" name="output" />
                <field type="TIMESTAMP" name="config_timestamp" />
                <reply>
-                       <field type="CARD8" name="status" />    <!-- enum SetConfig -->
+                       <field type="CARD8" name="status" enum="SetConfig" />
                        <field type="TIMESTAMP" name="timestamp" />
-                       <field type="CARD32" name="crtc" />
+                       <field type="CRTC" name="crtc" />
                        <field type="CARD32" name="mm_width" />  <!-- millimeters -->
                        <field type="CARD32" name="mm_height" />
-                       <field type="CARD8" name="connection" /> <!-- enum Connection -->
-                       <field type="CARD8" name="subpixel_order" />
+                       <field type="CARD8" name="connection" enum="Connection" />
+                       <field type="CARD8" name="subpixel_order" enum="SubPixel" />
                        <field type="CARD16" name="num_crtcs" />
                        <field type="CARD16" name="num_modes" />
                        <field type="CARD16" name="num_preferred" />
                        <field type="CARD16" name="num_clones" />
                        <field type="CARD16" name="name_len" />
-                       <list type="CARD32" name="crtcs">
+                       <list type="CRTC" name="crtcs">
                            <fieldref>num_crtcs</fieldref>
                        </list>
-                       <list type="CARD32" name="modes">
+                       <list type="MODE" name="modes">
                            <fieldref>num_modes</fieldref>
                        </list>
-                       <list type="CARD32" name="clones">
+                       <list type="OUTPUT" name="clones">
                            <fieldref>num_clones</fieldref>
                        </list>
                        <list type="BYTE" name="name">
@@ -264,7 +279,7 @@ authorization from the authors.
        </request>
 
        <request name="ListOutputProperties" opcode="10">
-               <field type="CARD32" name="output" />
+               <field type="OUTPUT" name="output" />
                <reply>
                        <pad bytes="1" />
                        <field type="CARD16" name="num_atoms" />
@@ -276,7 +291,7 @@ authorization from the authors.
        </request>
 
        <request name="QueryOutputProperty" opcode="11">
-               <field type="CARD32" name="output" />
+               <field type="OUTPUT" name="output" />
                <field type="ATOM" name="property" />
                <reply>
                        <pad bytes="1" />
@@ -284,45 +299,58 @@ authorization from the authors.
                        <field type="BOOL" name="range" />
                        <field type="BOOL" name="immutable" />
                        <pad bytes="21" />
-                       <list type="INT32" name="validValues" />
+                       <list type="INT32" name="validValues">
+                               <fieldref>length</fieldref>
+                       </list>
                </reply>
        </request>
 
        <request name="ConfigureOutputProperty" opcode="12">
-               <field type="CARD32" name="output" />
+               <field type="OUTPUT" name="output" />
                <field type="ATOM" name="property" />
                <field type="BOOL" name="pending" />
                <field type="BOOL" name="range" />
                <pad bytes="2" />
+               <list type="INT32" name="values" />
        </request>
 
        <request name="ChangeOutputProperty" opcode="13">
-               <field type="CARD32" name="output" />
+               <field type="OUTPUT" name="output" />
                <field type="ATOM" name="property" />
                <field type="ATOM" name="type" />
                <field type="CARD8" name="format" />
-               <field type="CARD8" name="mode" />
+               <field type="CARD8" name="mode" enum="PropMode" />
                <pad bytes="2" />
                <field type="CARD32" name="num_units" />
+               <list type="void" name="data">
+                   <op op="/">
+                       <op op="*">
+                           <fieldref>num_units</fieldref>
+                           <fieldref>format</fieldref>
+                       </op>
+                       <value>8</value>
+                   </op>
+               </list>
        </request>
 
        <request name="DeleteOutputProperty" opcode="14">
-               <field type="CARD32" name="output" />
+               <field type="OUTPUT" name="output" />
                <field type="ATOM" name="property" />
        </request>
 
        <!-- NOTE: num_items depends on format (8/16/32) -->
        <request name="GetOutputProperty" opcode="15">
-               <field type="CARD32" name="output" />
+               <field type="OUTPUT" name="output" />
                <field type="ATOM" name="property" />
-               <field type="ATOM" name="type" />
+               <field type="ATOM" name="type" altenum="GetPropertyType" />
                <field type="CARD32" name="long_offset" />
                <field type="CARD32" name="long_length" />
                <field type="BOOL" name="delete" />
                <field type="BOOL" name="pending" />
+               <pad bytes="2" />
                <reply>
                        <field type="CARD8" name="format" />
-                       <field type="ATOM" name="type" />
+                       <field type="ATOM" name="type" altenum="Atom" />
                        <field type="CARD32" name="bytes_after" />
                        <field type="CARD32" name="num_items" />
                        <pad bytes="12" />
@@ -342,74 +370,82 @@ authorization from the authors.
        <request name="CreateMode" opcode="16">
                <field type="WINDOW" name="window" />
                <field type="ModeInfo" name="mode_info" />
+               <list type="char" name="name" />
                <reply>
-                       <field type="CARD8" name="status" />    <!-- enum SetConfig -->
-                       <field type="CARD32" name="mode" />
+                       <pad bytes="1" />
+                       <field type="MODE" name="mode" />
+                       <pad bytes="20" />
                </reply>
        </request>
 
        <request name="DestroyMode" opcode="17">
-               <field type="CARD32" name="mode" />
+               <field type="MODE" name="mode" />
        </request>
 
        <request name="AddOutputMode" opcode="18">
-               <field type="CARD32" name="output" />
-               <field type="CARD32" name="mode" />
+               <field type="OUTPUT" name="output" />
+               <field type="MODE" name="mode" />
        </request>
 
        <request name="DeleteOutputMode" opcode="19">
-               <field type="CARD32" name="output" />
-               <field type="CARD32" name="mode" />
+               <field type="OUTPUT" name="output" />
+               <field type="MODE" name="mode" />
        </request>
 
        <request name="GetCrtcInfo" opcode="20">
-               <field type="CARD32" name="crtc" />
+               <field type="CRTC" name="crtc" />
                <field type="TIMESTAMP" name="config_timestamp" />
                <reply>
-                       <field type="CARD8" name="status" />    <!-- enum SetConfig -->
+                       <field type="CARD8" name="status" enum="SetConfig" />
                        <field type="TIMESTAMP" name="timestamp" />
-                       <field type="CARD32" name="crtc" />
                        <field type="INT16" name="x" />
                        <field type="INT16" name="y" />
                        <field type="CARD16" name="width" />
                        <field type="CARD16" name="height" />
-                       <field type="CARD32" name="mode" />
-                       <field type="CARD16" name="rotation" />         <!-- enum Rotation -->
-                       <field type="CARD16" name="rotations" />        <!-- mask of enum Rotation -->
+                       <field type="MODE" name="mode" />
+                       <field type="CARD16" name="rotation" mask="Rotation" />
+                       <field type="CARD16" name="rotations" mask="Rotation" />
                        <field type="CARD16" name="num_outputs" />
                        <field type="CARD16" name="num_possible_outputs" />
-                       <list type="CARD32" name="outputs">
+                       <list type="OUTPUT" name="outputs">
                                <fieldref>num_outputs</fieldref>
                        </list>
+                       <list type="OUTPUT" name="possible">
+                               <fieldref>num_possible_outputs</fieldref>
+                       </list>
                </reply>
        </request>
 
        <request name="SetCrtcConfig" opcode="21">
-               <field type="CARD32" name="crtc" />
+               <field type="CRTC" name="crtc" />
                <field type="TIMESTAMP" name="timestamp" />
                <field type="TIMESTAMP" name="config_timestamp" />
                <field type="INT16" name="x" />
                <field type="INT16" name="y" />
-               <field type="CARD32" name="mode" />
-               <field type="CARD16" name="rotation" />         <!-- enum Rotation -->
+               <field type="MODE" name="mode" />
+               <field type="CARD16" name="rotation" mask="Rotation" />
+               <pad bytes="2" />
+               <list type="OUTPUT" name="outputs" />
                <reply>
-                       <field type="CARD8" name="status" />    <!-- enum SetConfig -->
+                       <field type="CARD8" name="status" enum="SetConfig" />
                        <field type="TIMESTAMP" name="timestamp" />
+                       <pad bytes="20" />
                </reply>
        </request>
 
        <request name="GetCrtcGammaSize" opcode="22">
-               <field type="CARD32" name="crtc" />
+               <field type="CRTC" name="crtc" />
                <reply>
-                       <field type="CARD8" name="status" />    <!-- enum SetConfig -->
+                       <pad bytes="1" />
                        <field type="CARD16" name="size" />
+                       <pad bytes="22" />
                </reply>
        </request>
 
        <request name="GetCrtcGamma" opcode="23">
-               <field type="CARD32" name="crtc" />
+               <field type="CRTC" name="crtc" />
                <reply>
-                       <field type="CARD8" name="status" />    <!-- enum SetConfig -->
+                       <pad bytes="1" />
                        <field type="CARD16" name="size" />
                        <pad bytes="22" />
                        <list type="CARD16" name="red">
@@ -425,7 +461,7 @@ authorization from the authors.
        </request>
 
        <request name="SetCrtcGamma" opcode="24">
-               <field type="CARD32" name="crtc" />
+               <field type="CRTC" name="crtc" />
                <field type="CARD16" name="size" />
                <pad bytes="2"/>
                <list type="CARD16" name="red">
@@ -439,24 +475,140 @@ authorization from the authors.
                </list>
        </request>
 
+       <!-- new in 1.3 -->
+
+       <request name="GetScreenResourcesCurrent" opcode="25">
+               <field type="WINDOW" name="window" />
+               <reply>
+                       <pad bytes="1" />
+                       <field type="TIMESTAMP" name="timestamp" />
+                       <field type="TIMESTAMP" name="config_timestamp" />
+                       <field type="CARD16" name="num_crtcs" />
+                       <field type="CARD16" name="num_outputs" />
+                       <field type="CARD16" name="num_modes" />
+                       <field type="CARD16" name="names_len" />
+                       <pad bytes="8" />
+                       <list type="CRTC" name="crtcs">
+                           <fieldref>num_crtcs</fieldref>
+                       </list>
+                       <list type="OUTPUT" name="outputs">
+                           <fieldref>num_outputs</fieldref>
+                       </list>
+                       <list type="ModeInfo" name="modes">
+                           <fieldref>num_modes</fieldref>
+                       </list>
+                       <!-- FIXME: this is *not* null separated!
+                            One must use ModeInfo.name_len from each previous
+                            ModeInfo to infer the position of the name. -->
+                       <list type="BYTE" name="names">
+                           <fieldref>names_len</fieldref>
+                       </list>
+               </reply>
+       </request>
+
+       <request name="SetCrtcTransform" opcode="26">
+               <field type="CRTC" name="crtc" />
+               <field type="TRANSFORM" name="transform" />
+               <field type="CARD16" name="filter_len" />
+               <pad bytes="2" />
+               <list type="char" name="filter_name">
+                       <fieldref>filter_len</fieldref>
+               </list>
+               <list type="FIXED" name="filter_params" />
+       </request>
+
+       <request name="GetCrtcTransform" opcode="27">
+               <field type="CRTC" name="crtc" />
+               <reply>
+                       <pad bytes="1" />
+                       <field type="TRANSFORM" name="pending_transform" />
+                       <field type="BOOL" name="has_transforms" />
+                       <pad bytes="3" />
+                       <field type="TRANSFORM" name="current_transform" />
+                       <pad bytes="4" />
+                       <field type="CARD16" name="pending_len" />
+                       <field type="CARD16" name="pending_nparams" />
+                       <field type="CARD16" name="current_len" />
+                       <field type="CARD16" name="current_nparams" />
+                       <list type="char" name="pending_filter_name" >
+                               <fieldref>pending_len</fieldref>
+                       </list>
+                       <list type="FIXED" name="pending_params" >
+                               <fieldref>pending_nparams</fieldref>
+                       </list>
+                       <list type="char" name="current_filter_name" >
+                               <fieldref>current_len</fieldref>
+                       </list>
+                       <list type="FIXED" name="current_params" >
+                               <fieldref>current_nparams</fieldref>
+                       </list>
+               </reply>
+       </request>
+
+       <request name="GetPanning" opcode="28">
+               <field type="CRTC" name="crtc" />
+               <reply>
+                       <field type="CARD8" name="status" enum="SetConfig" />
+                       <field type="TIMESTAMP" name="timestamp" />
+                       <field type="CARD16" name="left" />
+                       <field type="CARD16" name="top" />
+                       <field type="CARD16" name="width" />
+                       <field type="CARD16" name="height" />
+                       <field type="CARD16" name="track_left" />
+                       <field type="CARD16" name="track_top" />
+                       <field type="CARD16" name="track_width" />
+                       <field type="CARD16" name="track_height" />
+                       <field type="INT16" name="border_left" />
+                       <field type="INT16" name="border_top" />
+                       <field type="INT16" name="border_right" />
+                       <field type="INT16" name="border_bottom" />
+               </reply>
+       </request>
+
+       <request name="SetPanning" opcode="29">
+               <field type="CRTC" name="crtc" />
+               <field type="TIMESTAMP" name="timestamp" />
+               <field type="CARD16" name="left" />
+               <field type="CARD16" name="top" />
+               <field type="CARD16" name="width" />
+               <field type="CARD16" name="height" />
+               <field type="CARD16" name="track_left" />
+               <field type="CARD16" name="track_top" />
+               <field type="CARD16" name="track_width" />
+               <field type="CARD16" name="track_height" />
+               <field type="INT16" name="border_left" />
+               <field type="INT16" name="border_top" />
+               <field type="INT16" name="border_right" />
+               <field type="INT16" name="border_bottom" />
+               <reply>
+                       <field type="CARD8" name="status" enum="SetConfig" />
+                       <field type="TIMESTAMP" name="timestamp" />
+               </reply>
+       </request>
+
+       <request name="SetOutputPrimary" opcode="30">
+               <field type="WINDOW" name="window" />
+               <field type="OUTPUT" name="output" />
+       </request>
+
+       <request name="GetOutputPrimary" opcode="31">
+               <field type="WINDOW" name="window" />
+               <reply>
+                       <pad bytes="1" />
+                       <field type="OUTPUT" name="output" />
+               </reply>
+       </request>
+
        <!-- Events -->
 
-       <enum name="NotifyMask" >
-               <item name="ScreenChange">  <bit>0</bit></item>
-               <!-- new in 1.2 -->
-               <item name="CrtcChange">    <bit>1</bit></item>
-               <item name="OutputChange">  <bit>2</bit></item>
-               <item name="OutputProperty"><bit>3</bit></item>
-       </enum>
-       
        <event name="ScreenChangeNotify" number="0">
-               <field type="CARD8" name="rotation" />
+               <field type="CARD8" name="rotation" mask="Rotation" />
                <field type="TIMESTAMP" name="timestamp" />
                <field type="TIMESTAMP" name="config_timestamp" />
                <field type="WINDOW" name="root" />
                <field type="WINDOW" name="request_window" />
                <field type="CARD16" name="sizeID" />
-               <field type="CARD16" name="subpixel_order" />
+               <field type="CARD16" name="subpixel_order" enum="SubPixel" />
                <field type="CARD16" name="width" />
                <field type="CARD16" name="height" />
                <field type="CARD16" name="mwidth" />
@@ -475,9 +627,9 @@ authorization from the authors.
        <struct name="CrtcChange">
                <field type="TIMESTAMP" name="timestamp" />
                <field type="WINDOW" name="window" />
-               <field type="CARD32" name="crtc" />
-               <field type="CARD32" name="mode" />
-               <field type="CARD16" name="rotation" />         <!-- enum Rotation -->
+               <field type="CRTC" name="crtc" />
+               <field type="MODE" name="mode" />
+               <field type="CARD16" name="rotation" mask="Rotation" />
                <pad bytes="2" />
                <field type="INT16" name="x" />
                <field type="INT16" name="y" />
@@ -489,20 +641,20 @@ authorization from the authors.
                <field type="TIMESTAMP" name="timestamp" />
                <field type="TIMESTAMP" name="config_timestamp" />
                <field type="WINDOW" name="window" />
-               <field type="CARD32" name="output" />
-               <field type="CARD32" name="crtc" />
-               <field type="CARD32" name="mode" />
-               <field type="CARD16" name="rotation" />         <!-- enum Rotation -->
-               <field type="CARD8" name="connection" />        <!-- enum Connection -->
-               <field type="CARD8" name="subpixel_order" />
+               <field type="OUTPUT" name="output" />
+               <field type="CRTC" name="crtc" />
+               <field type="MODE" name="mode" />
+               <field type="CARD16" name="rotation" mask="Rotation" />
+               <field type="CARD8" name="connection" enum="Connection" />
+               <field type="CARD8" name="subpixel_order" enum="SubPixel" />
        </struct>
 
        <struct name="OutputProperty">
                <field type="WINDOW" name="window" />
-               <field type="CARD32" name="output" />
+               <field type="OUTPUT" name="output" />
                <field type="ATOM" name="atom" />
                <field type="TIMESTAMP" name="timestamp" />
-               <field type="CARD8" name="status" />            <!-- core enum Property -->
+               <field type="CARD8" name="status" enum="Property" />
                <pad bytes="11" />
        </struct>
 
@@ -513,7 +665,7 @@ authorization from the authors.
        </union>
 
        <event name="Notify" number="1">
-               <field type="CARD8" name="subCode" />           <!-- enum Notify -->
+               <field type="CARD8" name="subCode" enum="Notify" />
                <field type="NotifyData" name="u" />
        </event>
 </xcb>