diff options
author | Daniel Martin <consume.noise@gmail.com> | 2013-06-04 21:27:30 +0200 |
---|---|---|
committer | Peter Harris <pharris@opentext.com> | 2013-06-06 16:13:52 -0400 |
commit | 45d8361e598459eb89a53149baf91de6bf8a1a62 (patch) | |
tree | b07127173a64f22010317920be6eb37285ad48dd /src/randr.xml | |
parent | 5f1fb6ab6b5129ea86993542e0af19ae47a42969 (diff) |
randr: Add provider object support (RandR v1.4)
With RandR 1.4 provider objects have been introduced. "A provider object
represents a GPU or virtual device providing services to the X server."
To handle provider objects the following requests have been added:
- GetProviders
- GetProviderInfo
- SetProviderOffloadSink
- SetProviderOutputSource
- ListProviderProperties
- QueryProviderProperty
- ConfigureProviderProperty
- ChangeProviderProperty
- DeleteProviderProperty
- GetProviderProperty
And the Notify event got 3 new subcodes:
- ProviderChange
- ProviderProperty
- ResourceChange
v2:
- add missing name field to GetProviderInfo
v3:
- changed ProviderCapability enum
o replaced <value> with <bit>
o removed None
- replaced "alignment pad list" with commented out <pad align="4"/> to
be prepared for future enhancements
- add brief description to commit msg about additions
Signed-off-by: Daniel Martin <consume.noise@gmail.com>
Signed-off-by: Peter Harris <pharris@opentext.com>
Diffstat (limited to 'src/randr.xml')
-rw-r--r-- | src/randr.xml | 231 |
1 files changed, 216 insertions, 15 deletions
diff --git a/src/randr.xml b/src/randr.xml index 4f0716f..1ec3234 100644 --- a/src/randr.xml +++ b/src/randr.xml @@ -27,7 +27,7 @@ authorization from the authors. --> <xcb header="randr" extension-xname="RANDR" extension-name="RandR" - major-version="1" minor-version="3"> + 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"> @@ -506,6 +512,14 @@ authorization from the authors. </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" /> @@ -599,6 +613,163 @@ authorization from the authors. </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> + <pad bytes="1" /> + <field type="CARD8" name="format" /> + <field type="ATOM" name="type" /> <!-- None --> + <field type="CARD32" name="bytes_after" /> + <field type="CARD16" 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"> @@ -619,9 +790,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"> @@ -658,10 +832,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"> |