Add "altmask" attribute, like "altenum" for masks
[free-sw/xcb/proto] / src / randr.xml
index cf1f431..d9192b2 100644 (file)
@@ -27,7 +27,7 @@ authorization from the authors.
 -->
 
 <xcb header="randr" extension-xname="RANDR" extension-name="RandR"
-    major-version="1" minor-version="2">
+    major-version="1" minor-version="4">
 
        <import>xproto</import>
        <import>render</import>
@@ -36,12 +36,14 @@ authorization from the authors.
        <xidtype name="MODE" />
        <xidtype name="CRTC" />
        <xidtype name="OUTPUT" />
+       <xidtype name="PROVIDER" />
        
        <!-- Errors -->
 
-       <error name="BadOutput" number="0" />
-       <error name="BadCrtc"   number="1" />
-       <error name="BadMode"   number="2" />
+       <error name="BadOutput"   number="0" />
+       <error name="BadCrtc"     number="1" />
+       <error name="BadMode"     number="2" />
+       <error name="BadProvider" number="3" />
 
        <!-- Requests -->
 
@@ -113,11 +115,15 @@ authorization from the authors.
        <!-- opcode 3 is obsolete -->
 
        <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>
+               <item name="ScreenChange">    <bit>0</bit></item>
+               <!-- New in version 1.2 -->
+               <item name="CrtcChange">      <bit>1</bit></item>
+               <item name="OutputChange">    <bit>2</bit></item>
+               <item name="OutputProperty">  <bit>3</bit></item>
+               <!-- New in version 1.4 -->
+               <item name="ProviderChange">  <bit>4</bit></item>
+               <item name="ProviderProperty"><bit>5</bit></item>
+               <item name="ResourceChange">  <bit>6</bit></item>
        </enum>
 
        <request name="SelectInput" opcode="4"> 
@@ -242,9 +248,9 @@ authorization from the authors.
 
        <!-- for GetOutputInfo.connection -->
        <enum name="Connection">
-               <item name="Connected" />
-               <item name="Disconnected" />
-               <item name="Unknown" />
+               <item name="Connected">    <value>0</value> </item>
+               <item name="Disconnected"> <value>1</value> </item>
+               <item name="Unknown">      <value>2</value> </item>
        </enum>
 
        <request name="GetOutputInfo" opcode="9">
@@ -475,6 +481,294 @@ 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>
+
+       <enum name="Transform">
+               <!-- Introduced in version 1.3, but not referenced. -->
+               <item name="Unit">       <bit>0</bit></item>
+               <item name="ScaleUp">    <bit>1</bit></item>
+               <item name="ScaleDown">  <bit>2</bit></item>
+               <item name="Projective"> <bit>3</bit></item>
+       </enum>
+
+       <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>
+
+       <!-- New in version 1.4 -->
+
+       <request name="GetProviders" opcode="32">
+               <field type="WINDOW" name="window" />
+               <reply>
+                       <pad bytes="1" />
+                       <field type="TIMESTAMP" name="timestamp" />
+                       <field type="CARD16" name="num_providers" />
+                       <pad bytes="18" />
+                       <list type="PROVIDER" name="providers">
+                               <fieldref>num_providers</fieldref>
+                       </list>
+               </reply>
+       </request>
+
+       <enum name="ProviderCapability">
+               <item name="SourceOutput">  <bit>0</bit></item>
+               <item name="SinkOutput">    <bit>1</bit></item>
+               <item name="SourceOffload"> <bit>2</bit></item>
+               <item name="SinkOffload">   <bit>3</bit></item>
+       </enum>
+
+       <request name="GetProviderInfo" opcode="33">
+               <field type="PROVIDER" name="provider" />
+               <field type="TIMESTAMP" name="config_timestamp" />
+               <reply>
+                       <field type="CARD8" name="status" />
+                       <field type="TIMESTAMP" name="timestamp" />
+                       <field type="CARD32" name="capabilities" mask="ProviderCapability" />
+                       <field type="CARD16" name="num_crtcs" />
+                       <field type="CARD16" name="num_outputs" />
+                       <field type="CARD16" name="num_associated_providers" />
+                       <field type="CARD16" name="name_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="PROVIDER" name="associated_providers">
+                               <fieldref>num_associated_providers</fieldref>
+                       </list>
+                       <list type="CARD32" name="associated_capability">
+                               <fieldref>num_associated_providers</fieldref>
+                       </list>
+                       <list type="char" name="name">
+                               <fieldref>name_len</fieldref>
+                       </list>
+                       <!-- XXX: Prepared for the future. Until xcbgen supports
+                                 the align attribute in <pad>, we ignore the
+                                 trailing pad bytes here.
+                       <pad align="4" />
+                       -->
+               </reply>
+       </request>
+
+       <request name="SetProviderOffloadSink" opcode="34">
+               <field type="PROVIDER" name="provider" />
+               <field type="PROVIDER" name="sink_provider" />
+               <field type="TIMESTAMP" name="config_timestamp" />
+       </request>
+
+       <request name="SetProviderOutputSource" opcode="35">
+               <field type="PROVIDER" name="provider" />
+               <field type="PROVIDER" name="source_provider" />
+               <field type="TIMESTAMP" name="config_timestamp" />
+       </request>
+
+       <request name="ListProviderProperties" opcode="36">
+               <field type="PROVIDER" name="provider" />
+               <reply>
+                       <pad bytes="1" />
+                       <field type="CARD16" name="num_atoms" />
+                       <pad bytes="22" />
+                       <list type="ATOM" name="atoms">
+                               <fieldref>num_atoms</fieldref>
+                       </list>
+               </reply>
+       </request>
+
+       <request name="QueryProviderProperty" opcode="37">
+               <field type="PROVIDER" name="provider" />
+               <field type="ATOM" name="property" />
+               <reply>
+                       <pad bytes="1" />
+                       <field type="BOOL" name="pending" />
+                       <field type="BOOL" name="range" />
+                       <field type="BOOL" name="immutable" />
+                       <pad bytes="21" />
+                       <list type="INT32" name="valid_values">
+                               <fieldref>length</fieldref>
+                       </list>
+               </reply>
+       </request>
+
+       <request name="ConfigureProviderProperty" opcode="38">
+               <field type="PROVIDER" name="provider" />
+               <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="ChangeProviderProperty" opcode="39">
+               <field type="PROVIDER" name="provider" />
+               <field type="ATOM" name="property" />
+               <field type="ATOM" name="type" />
+               <field type="CARD8" name="format" />
+               <field type="CARD8" name="mode" />
+               <pad bytes="2" />
+               <field type="CARD32" name="num_items" />
+               <list type="void" name="data">
+                       <op op="*">
+                               <fieldref>num_items</fieldref>
+                               <op op="/">
+                                       <fieldref>format</fieldref>
+                                       <value>8</value>
+                               </op>
+                       </op>
+               </list>
+       </request>
+
+       <request name="DeleteProviderProperty" opcode="40">
+               <field type="PROVIDER" name="provider" />
+               <field type="ATOM" name="property" />
+       </request>
+
+       <request name="GetProviderProperty" opcode="41">
+               <field type="PROVIDER" name="provider" />
+               <field type="ATOM" name="property" />
+               <field type="ATOM" name="type" /> <!-- AnyProperty -->
+               <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" /> <!-- None -->
+                       <field type="CARD32" name="bytes_after" />
+                       <field type="CARD32" name="num_items" />
+                       <pad bytes="12" />
+                       <list type="void" name="data">
+                               <op op="*">
+                                       <fieldref>num_items</fieldref>
+                                       <op op="/">
+                                               <fieldref>format</fieldref>
+                                               <value>8</value>
+                                       </op>
+                               </op>
+                       </list>
+               </reply>
+       </request>
+
        <!-- Events -->
 
        <event name="ScreenChangeNotify" number="0">
@@ -495,9 +789,12 @@ authorization from the authors.
 
        <!-- subcode -->
        <enum name="Notify" >
-               <item name="CrtcChange">    <value>0</value></item>
-               <item name="OutputChange">  <value>1</value></item>
-               <item name="OutputProperty"><value>2</value></item>
+               <item name="CrtcChange">      <value>0</value></item>
+               <item name="OutputChange">    <value>1</value></item>
+               <item name="OutputProperty">  <value>2</value></item>
+               <item name="ProviderChange">  <value>3</value></item>
+               <item name="ProviderProperty"><value>4</value></item>
+               <item name="ResourceChange">  <value>5</value></item>
        </enum>
 
        <struct name="CrtcChange">
@@ -534,10 +831,37 @@ authorization from the authors.
                <pad bytes="11" />
        </struct>
 
+       <!-- New in version 1.4 -->
+
+       <struct name="ProviderChange">
+               <field type="TIMESTAMP" name="timestamp" />
+               <field type="WINDOW" name="window" />
+               <field type="PROVIDER" name="provider" />
+               <pad bytes="16" />
+       </struct>
+
+       <struct name="ProviderProperty">
+               <field type="WINDOW" name="window" />
+               <field type="PROVIDER" name="provider" />
+               <field type="ATOM" name="atom" />
+               <field type="TIMESTAMP" name="timestamp" />
+               <field type="CARD8" name="state" />
+               <pad bytes="11" />
+       </struct>
+
+       <struct name="ResourceChange">
+               <field type="TIMESTAMP" name="timestamp" />
+               <field type="WINDOW" name="window" />
+               <pad bytes="20" />
+       </struct>
+
        <union name="NotifyData">
-               <field type="CrtcChange"     name="cc" />
-               <field type="OutputChange"   name="oc" />
-               <field type="OutputProperty" name="op" />
+               <field type="CrtcChange"       name="cc" />
+               <field type="OutputChange"     name="oc" />
+               <field type="OutputProperty"   name="op" />
+               <field type="ProviderChange"   name="pc" />
+               <field type="ProviderProperty" name="pp" />
+               <field type="ResourceChange"   name="rc" />
        </union>
 
        <event name="Notify" number="1">