randr.xml revision a27842ff
1<?xml version="1.0" encoding="utf-8"?> 2<!-- 3Copyright (C) 2006 Jeremy Kolb, Ian Osgood 4All Rights Reserved. 5 6Permission is hereby granted, free of charge, to any person obtaining a copy 7of this software and associated documentation files (the "Software"), to deal 8in the Software without restriction, including without limitation the rights 9to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10copies of the Software, and to permit persons to whom the Software is 11furnished to do so, subject to the following conditions: 12 13The above copyright notice and this permission notice shall be included in all 14copies or substantial portions of the Software. 15 16THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 20ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 21WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22 23Except as contained in this notice, the names of the authors or their 24institutions shall not be used in advertising or otherwise to promote the 25sale, use or other dealings in this Software without prior written 26authorization from the authors. 27--> 28 29<xcb header="randr" extension-xname="RANDR" extension-name="RandR" 30 major-version="1" minor-version="6"> 31 32 <import>xproto</import> 33 <import>render</import> 34 35 <!-- XIDs --> 36 <xidtype name="MODE" /> 37 <xidtype name="CRTC" /> 38 <xidtype name="OUTPUT" /> 39 <xidtype name="PROVIDER" /> 40 <xidtype name="LEASE" /> 41 42 <!-- Errors --> 43 44 <error name="BadOutput" number="0" /> 45 <error name="BadCrtc" number="1" /> 46 <error name="BadMode" number="2" /> 47 <error name="BadProvider" number="3" /> 48 49 <!-- Requests --> 50 51 <enum name="Rotation"> 52 <item name="Rotate_0"> <bit>0</bit></item> 53 <item name="Rotate_90"> <bit>1</bit></item> 54 <item name="Rotate_180"><bit>2</bit></item> 55 <item name="Rotate_270"><bit>3</bit></item> 56 <item name="Reflect_X"> <bit>4</bit></item> 57 <item name="Reflect_Y"> <bit>5</bit></item> 58 </enum> 59 60 <struct name="ScreenSize"> 61 <field type="CARD16" name="width" /> <!-- pixels --> 62 <field type="CARD16" name="height" /> 63 <field type="CARD16" name="mwidth" /> <!-- millimeters --> 64 <field type="CARD16" name="mheight" /> 65 </struct> 66 67 <struct name="RefreshRates"> 68 <field type="CARD16" name="nRates" /> 69 <list type="CARD16" name="rates"> 70 <fieldref>nRates</fieldref> 71 </list> 72 </struct> 73 74 <request name="QueryVersion" opcode="0"> 75 <field type="CARD32" name="major_version" /> 76 <field type="CARD32" name="minor_version" /> 77 <reply> 78 <pad bytes="1" /> 79 <field type="CARD32" name="major_version" /> 80 <field type="CARD32" name="minor_version" /> 81 <pad bytes="16" /> 82 </reply> 83 </request> 84 85 <!-- Skip obsolete opcode 1 so old clients fail immediately --> 86 87 <enum name="SetConfig"> 88 <item name="Success"><value>0</value></item> 89 <item name="InvalidConfigTime"><value>1</value></item> 90 <item name="InvalidTime"><value>2</value></item> 91 <item name="Failed"><value>3</value></item> 92 </enum> 93 94 <!-- This is for the 1.1 version request. I don't believe we need to specify a 1.0 request 95 as few things used randr 1.0. The only difference is the removal of refresh and padding I think. 96 BEWARE: the docs lie! 97 --> 98 <request name="SetScreenConfig" opcode="2"> 99 <field type="WINDOW" name="window" /> 100 <field type="TIMESTAMP" name="timestamp" /> 101 <field type="TIMESTAMP" name="config_timestamp" /> 102 <field type="CARD16" name="sizeID" /> 103 <field type="CARD16" name="rotation" mask="Rotation" /> 104 <field type="CARD16" name="rate" /> 105 <pad bytes="2" /> 106 <reply> 107 <field type="CARD8" name="status" enum="SetConfig" /> 108 <field type="TIMESTAMP" name="new_timestamp" /> 109 <field type="TIMESTAMP" name="config_timestamp" /> 110 <field type="WINDOW" name="root" /> 111 <field type="CARD16" name="subpixel_order" enum="SubPixel" /> 112 <pad bytes="10" /> 113 </reply> 114 </request> 115 116 <!-- opcode 3 is obsolete --> 117 118 <enum name="NotifyMask" > 119 <item name="ScreenChange"> <bit>0</bit></item> 120 <!-- New in version 1.2 --> 121 <item name="CrtcChange"> <bit>1</bit></item> 122 <item name="OutputChange"> <bit>2</bit></item> 123 <item name="OutputProperty"> <bit>3</bit></item> 124 <!-- New in version 1.4 --> 125 <item name="ProviderChange"> <bit>4</bit></item> 126 <item name="ProviderProperty"><bit>5</bit></item> 127 <item name="ResourceChange"> <bit>6</bit></item> 128 <item name="Lease"> <bit>7</bit></item> 129 </enum> 130 131 <request name="SelectInput" opcode="4"> 132 <field type="WINDOW" name="window" /> 133 <field type="CARD16" name="enable" mask="NotifyMask" /> 134 <pad bytes="2" /> 135 </request> 136 137 <!-- 138 I think this is correct. It works. though I believe nInfo is a bit high... 139 --> 140 <request name="GetScreenInfo" opcode="5"> 141 <field type="WINDOW" name="window" /> 142 <reply> 143 <field type="CARD8" name="rotations" mask="Rotation" /> 144 <field type="WINDOW" name="root" /> 145 <field type="TIMESTAMP" name="timestamp" /> 146 <field type="TIMESTAMP" name="config_timestamp" /> 147 <field type="CARD16" name="nSizes" /> 148 <field type="CARD16" name="sizeID" /> 149 <field type="CARD16" name="rotation" mask="Rotation" /> 150 <field type="CARD16" name="rate" /> 151 <field type="CARD16" name="nInfo" /> 152 <pad bytes="2" /> 153 <list type="ScreenSize" name="sizes"> 154 <fieldref>nSizes</fieldref> 155 </list> 156 <list type="RefreshRates" name="rates"> 157 <op op="-"> 158 <fieldref>nInfo</fieldref> 159 <fieldref>nSizes</fieldref> 160 </op> 161 </list> 162 </reply> 163 </request> 164 165 <!-- new in version 1.2 --> 166 167 <request name="GetScreenSizeRange" opcode="6"> 168 <field type="WINDOW" name="window" /> 169 <reply> 170 <pad bytes="1" /> 171 <field type="CARD16" name="min_width" /> 172 <field type="CARD16" name="min_height" /> 173 <field type="CARD16" name="max_width" /> 174 <field type="CARD16" name="max_height" /> 175 <pad bytes="16" /> 176 </reply> 177 </request> 178 179 <request name="SetScreenSize" opcode="7"> 180 <field type="WINDOW" name="window" /> 181 <field type="CARD16" name="width" /> <!-- pixels --> 182 <field type="CARD16" name="height" /> 183 <field type="CARD32" name="mm_width" /> <!-- millimeters --> 184 <field type="CARD32" name="mm_height" /> 185 </request> 186 187 <!-- for GetScreenResources.ModeInfo.ModeFlag --> 188 <enum name="ModeFlag"> 189 <item name="HsyncPositive"> <bit>0</bit></item> 190 <item name="HsyncNegative"> <bit>1</bit></item> 191 <item name="VsyncPositive"> <bit>2</bit></item> 192 <item name="VsyncNegative"> <bit>3</bit></item> 193 <item name="Interlace"> <bit>4</bit></item> 194 <item name="DoubleScan"> <bit>5</bit></item> 195 <item name="Csync"> <bit>6</bit></item> 196 <item name="CsyncPositive"> <bit>7</bit></item> 197 <item name="CsyncNegative"> <bit>8</bit></item> 198 <item name="HskewPresent"> <bit>9</bit></item> 199 <item name="Bcast"> <bit>10</bit></item> 200 <item name="PixelMultiplex"><bit>11</bit></item> 201 <item name="DoubleClock"> <bit>12</bit></item> 202 <item name="HalveClock"> <bit>13</bit></item> 203 </enum> 204 205 <struct name="ModeInfo"> 206 <field type="CARD32" name="id" /> 207 <field type="CARD16" name="width" /> 208 <field type="CARD16" name="height" /> 209 <field type="CARD32" name="dot_clock" /> 210 <field type="CARD16" name="hsync_start" /> 211 <field type="CARD16" name="hsync_end" /> 212 <field type="CARD16" name="htotal" /> 213 <field type="CARD16" name="hskew" /> 214 <field type="CARD16" name="vsync_start" /> 215 <field type="CARD16" name="vsync_end" /> 216 <field type="CARD16" name="vtotal" /> 217 <field type="CARD16" name="name_len" /> 218 <field type="CARD32" name="mode_flags" mask="ModeFlag" /> 219 <!-- the mode name itself --> 220 </struct> 221 222 <request name="GetScreenResources" opcode="8"> 223 <field type="WINDOW" name="window" /> 224 <reply> 225 <pad bytes="1" /> 226 <field type="TIMESTAMP" name="timestamp" /> 227 <field type="TIMESTAMP" name="config_timestamp" /> 228 <field type="CARD16" name="num_crtcs" /> 229 <field type="CARD16" name="num_outputs" /> 230 <field type="CARD16" name="num_modes" /> 231 <field type="CARD16" name="names_len" /> 232 <pad bytes="8" /> 233 <list type="CRTC" name="crtcs"> 234 <fieldref>num_crtcs</fieldref> 235 </list> 236 <list type="OUTPUT" name="outputs"> 237 <fieldref>num_outputs</fieldref> 238 </list> 239 <list type="ModeInfo" name="modes"> 240 <fieldref>num_modes</fieldref> 241 </list> 242 <!-- FIXME: this is *not* null separated! 243 One must use ModeInfo.name_len from each previous 244 ModeInfo to infer the position of the name. --> 245 <list type="BYTE" name="names"> 246 <fieldref>names_len</fieldref> 247 </list> 248 </reply> 249 </request> 250 251 <!-- for GetOutputInfo.connection --> 252 <enum name="Connection"> 253 <item name="Connected"> <value>0</value> </item> 254 <item name="Disconnected"> <value>1</value> </item> 255 <item name="Unknown"> <value>2</value> </item> 256 </enum> 257 258 <request name="GetOutputInfo" opcode="9"> 259 <field type="OUTPUT" name="output" /> 260 <field type="TIMESTAMP" name="config_timestamp" /> 261 <reply> 262 <field type="CARD8" name="status" enum="SetConfig" /> 263 <field type="TIMESTAMP" name="timestamp" /> 264 <field type="CRTC" name="crtc" /> 265 <field type="CARD32" name="mm_width" /> <!-- millimeters --> 266 <field type="CARD32" name="mm_height" /> 267 <field type="CARD8" name="connection" enum="Connection" /> 268 <field type="CARD8" name="subpixel_order" enum="SubPixel" /> 269 <field type="CARD16" name="num_crtcs" /> 270 <field type="CARD16" name="num_modes" /> 271 <field type="CARD16" name="num_preferred" /> 272 <field type="CARD16" name="num_clones" /> 273 <field type="CARD16" name="name_len" /> 274 <list type="CRTC" name="crtcs"> 275 <fieldref>num_crtcs</fieldref> 276 </list> 277 <list type="MODE" name="modes"> 278 <fieldref>num_modes</fieldref> 279 </list> 280 <list type="OUTPUT" name="clones"> 281 <fieldref>num_clones</fieldref> 282 </list> 283 <list type="BYTE" name="name"> 284 <fieldref>name_len</fieldref> 285 </list> 286 </reply> 287 </request> 288 289 <request name="ListOutputProperties" opcode="10"> 290 <field type="OUTPUT" name="output" /> 291 <reply> 292 <pad bytes="1" /> 293 <field type="CARD16" name="num_atoms" /> 294 <pad bytes="22" /> 295 <list type="ATOM" name="atoms"> 296 <fieldref>num_atoms</fieldref> 297 </list> 298 </reply> 299 </request> 300 301 <request name="QueryOutputProperty" opcode="11"> 302 <field type="OUTPUT" name="output" /> 303 <field type="ATOM" name="property" /> 304 <reply> 305 <pad bytes="1" /> 306 <field type="BOOL" name="pending" /> 307 <field type="BOOL" name="range" /> 308 <field type="BOOL" name="immutable" /> 309 <pad bytes="21" /> 310 <list type="INT32" name="validValues"> 311 <fieldref>length</fieldref> 312 </list> 313 </reply> 314 </request> 315 316 <request name="ConfigureOutputProperty" opcode="12"> 317 <field type="OUTPUT" name="output" /> 318 <field type="ATOM" name="property" /> 319 <field type="BOOL" name="pending" /> 320 <field type="BOOL" name="range" /> 321 <pad bytes="2" /> 322 <list type="INT32" name="values" /> 323 </request> 324 325 <request name="ChangeOutputProperty" opcode="13"> 326 <field type="OUTPUT" name="output" /> 327 <field type="ATOM" name="property" /> 328 <field type="ATOM" name="type" /> 329 <field type="CARD8" name="format" /> 330 <field type="CARD8" name="mode" enum="PropMode" /> 331 <pad bytes="2" /> 332 <field type="CARD32" name="num_units" /> 333 <list type="void" name="data"> 334 <op op="/"> 335 <op op="*"> 336 <fieldref>num_units</fieldref> 337 <fieldref>format</fieldref> 338 </op> 339 <value>8</value> 340 </op> 341 </list> 342 </request> 343 344 <request name="DeleteOutputProperty" opcode="14"> 345 <field type="OUTPUT" name="output" /> 346 <field type="ATOM" name="property" /> 347 </request> 348 349 <!-- NOTE: num_items depends on format (8/16/32) --> 350 <request name="GetOutputProperty" opcode="15"> 351 <field type="OUTPUT" name="output" /> 352 <field type="ATOM" name="property" /> 353 <field type="ATOM" name="type" altenum="GetPropertyType" /> 354 <field type="CARD32" name="long_offset" /> 355 <field type="CARD32" name="long_length" /> 356 <field type="BOOL" name="delete" /> 357 <field type="BOOL" name="pending" /> 358 <pad bytes="2" /> 359 <reply> 360 <field type="CARD8" name="format" /> 361 <field type="ATOM" name="type" altenum="Atom" /> 362 <field type="CARD32" name="bytes_after" /> 363 <field type="CARD32" name="num_items" /> 364 <pad bytes="12" /> 365 <list type="BYTE" name="data"> 366 <!-- n * format / 8 --> 367 <op op="*"> 368 <fieldref>num_items</fieldref> 369 <op op="/"> 370 <fieldref>format</fieldref> 371 <value>8</value> 372 </op> 373 </op> 374 </list> 375 </reply> 376 </request> 377 378 <request name="CreateMode" opcode="16"> 379 <field type="WINDOW" name="window" /> 380 <field type="ModeInfo" name="mode_info" /> 381 <list type="char" name="name" /> 382 <reply> 383 <pad bytes="1" /> 384 <field type="MODE" name="mode" /> 385 <pad bytes="20" /> 386 </reply> 387 </request> 388 389 <request name="DestroyMode" opcode="17"> 390 <field type="MODE" name="mode" /> 391 </request> 392 393 <request name="AddOutputMode" opcode="18"> 394 <field type="OUTPUT" name="output" /> 395 <field type="MODE" name="mode" /> 396 </request> 397 398 <request name="DeleteOutputMode" opcode="19"> 399 <field type="OUTPUT" name="output" /> 400 <field type="MODE" name="mode" /> 401 </request> 402 403 <request name="GetCrtcInfo" opcode="20"> 404 <field type="CRTC" name="crtc" /> 405 <field type="TIMESTAMP" name="config_timestamp" /> 406 <reply> 407 <field type="CARD8" name="status" enum="SetConfig" /> 408 <field type="TIMESTAMP" name="timestamp" /> 409 <field type="INT16" name="x" /> 410 <field type="INT16" name="y" /> 411 <field type="CARD16" name="width" /> 412 <field type="CARD16" name="height" /> 413 <field type="MODE" name="mode" /> 414 <field type="CARD16" name="rotation" mask="Rotation" /> 415 <field type="CARD16" name="rotations" mask="Rotation" /> 416 <field type="CARD16" name="num_outputs" /> 417 <field type="CARD16" name="num_possible_outputs" /> 418 <list type="OUTPUT" name="outputs"> 419 <fieldref>num_outputs</fieldref> 420 </list> 421 <list type="OUTPUT" name="possible"> 422 <fieldref>num_possible_outputs</fieldref> 423 </list> 424 </reply> 425 </request> 426 427 <request name="SetCrtcConfig" opcode="21"> 428 <field type="CRTC" name="crtc" /> 429 <field type="TIMESTAMP" name="timestamp" /> 430 <field type="TIMESTAMP" name="config_timestamp" /> 431 <field type="INT16" name="x" /> 432 <field type="INT16" name="y" /> 433 <field type="MODE" name="mode" /> 434 <field type="CARD16" name="rotation" mask="Rotation" /> 435 <pad bytes="2" /> 436 <list type="OUTPUT" name="outputs" /> 437 <reply> 438 <field type="CARD8" name="status" enum="SetConfig" /> 439 <field type="TIMESTAMP" name="timestamp" /> 440 <pad bytes="20" /> 441 </reply> 442 </request> 443 444 <request name="GetCrtcGammaSize" opcode="22"> 445 <field type="CRTC" name="crtc" /> 446 <reply> 447 <pad bytes="1" /> 448 <field type="CARD16" name="size" /> 449 <pad bytes="22" /> 450 </reply> 451 </request> 452 453 <request name="GetCrtcGamma" opcode="23"> 454 <field type="CRTC" name="crtc" /> 455 <reply> 456 <pad bytes="1" /> 457 <field type="CARD16" name="size" /> 458 <pad bytes="22" /> 459 <list type="CARD16" name="red"> 460 <fieldref>size</fieldref> 461 </list> 462 <list type="CARD16" name="green"> 463 <fieldref>size</fieldref> 464 </list> 465 <list type="CARD16" name="blue"> 466 <fieldref>size</fieldref> 467 </list> 468 </reply> 469 </request> 470 471 <request name="SetCrtcGamma" opcode="24"> 472 <field type="CRTC" name="crtc" /> 473 <field type="CARD16" name="size" /> 474 <pad bytes="2"/> 475 <list type="CARD16" name="red"> 476 <fieldref>size</fieldref> 477 </list> 478 <list type="CARD16" name="green"> 479 <fieldref>size</fieldref> 480 </list> 481 <list type="CARD16" name="blue"> 482 <fieldref>size</fieldref> 483 </list> 484 </request> 485 486 <!-- new in 1.3 --> 487 488 <request name="GetScreenResourcesCurrent" opcode="25"> 489 <field type="WINDOW" name="window" /> 490 <reply> 491 <pad bytes="1" /> 492 <field type="TIMESTAMP" name="timestamp" /> 493 <field type="TIMESTAMP" name="config_timestamp" /> 494 <field type="CARD16" name="num_crtcs" /> 495 <field type="CARD16" name="num_outputs" /> 496 <field type="CARD16" name="num_modes" /> 497 <field type="CARD16" name="names_len" /> 498 <pad bytes="8" /> 499 <list type="CRTC" name="crtcs"> 500 <fieldref>num_crtcs</fieldref> 501 </list> 502 <list type="OUTPUT" name="outputs"> 503 <fieldref>num_outputs</fieldref> 504 </list> 505 <list type="ModeInfo" name="modes"> 506 <fieldref>num_modes</fieldref> 507 </list> 508 <!-- FIXME: this is *not* null separated! 509 One must use ModeInfo.name_len from each previous 510 ModeInfo to infer the position of the name. --> 511 <list type="BYTE" name="names"> 512 <fieldref>names_len</fieldref> 513 </list> 514 </reply> 515 </request> 516 517 <enum name="Transform"> 518 <!-- Introduced in version 1.3, but not referenced. --> 519 <item name="Unit"> <bit>0</bit></item> 520 <item name="ScaleUp"> <bit>1</bit></item> 521 <item name="ScaleDown"> <bit>2</bit></item> 522 <item name="Projective"> <bit>3</bit></item> 523 </enum> 524 525 <request name="SetCrtcTransform" opcode="26"> 526 <field type="CRTC" name="crtc" /> 527 <field type="TRANSFORM" name="transform" /> 528 <field type="CARD16" name="filter_len" /> 529 <pad bytes="2" /> 530 <list type="char" name="filter_name"> 531 <fieldref>filter_len</fieldref> 532 </list> 533 <pad align="4" /> 534 <list type="FIXED" name="filter_params" /> 535 </request> 536 537 <request name="GetCrtcTransform" opcode="27"> 538 <field type="CRTC" name="crtc" /> 539 <reply> 540 <pad bytes="1" /> 541 <field type="TRANSFORM" name="pending_transform" /> 542 <field type="BOOL" name="has_transforms" /> 543 <pad bytes="3" /> 544 <field type="TRANSFORM" name="current_transform" /> 545 <pad bytes="4" /> 546 <field type="CARD16" name="pending_len" /> 547 <field type="CARD16" name="pending_nparams" /> 548 <field type="CARD16" name="current_len" /> 549 <field type="CARD16" name="current_nparams" /> 550 <list type="char" name="pending_filter_name" > 551 <fieldref>pending_len</fieldref> 552 </list> 553 <pad align="4" /> 554 <list type="FIXED" name="pending_params" > 555 <fieldref>pending_nparams</fieldref> 556 </list> 557 <list type="char" name="current_filter_name" > 558 <fieldref>current_len</fieldref> 559 </list> 560 <pad align="4" /> 561 <list type="FIXED" name="current_params" > 562 <fieldref>current_nparams</fieldref> 563 </list> 564 </reply> 565 </request> 566 567 <request name="GetPanning" opcode="28"> 568 <field type="CRTC" name="crtc" /> 569 <reply> 570 <field type="CARD8" name="status" enum="SetConfig" /> 571 <field type="TIMESTAMP" name="timestamp" /> 572 <field type="CARD16" name="left" /> 573 <field type="CARD16" name="top" /> 574 <field type="CARD16" name="width" /> 575 <field type="CARD16" name="height" /> 576 <field type="CARD16" name="track_left" /> 577 <field type="CARD16" name="track_top" /> 578 <field type="CARD16" name="track_width" /> 579 <field type="CARD16" name="track_height" /> 580 <field type="INT16" name="border_left" /> 581 <field type="INT16" name="border_top" /> 582 <field type="INT16" name="border_right" /> 583 <field type="INT16" name="border_bottom" /> 584 </reply> 585 </request> 586 587 <request name="SetPanning" opcode="29"> 588 <field type="CRTC" name="crtc" /> 589 <field type="TIMESTAMP" name="timestamp" /> 590 <field type="CARD16" name="left" /> 591 <field type="CARD16" name="top" /> 592 <field type="CARD16" name="width" /> 593 <field type="CARD16" name="height" /> 594 <field type="CARD16" name="track_left" /> 595 <field type="CARD16" name="track_top" /> 596 <field type="CARD16" name="track_width" /> 597 <field type="CARD16" name="track_height" /> 598 <field type="INT16" name="border_left" /> 599 <field type="INT16" name="border_top" /> 600 <field type="INT16" name="border_right" /> 601 <field type="INT16" name="border_bottom" /> 602 <reply> 603 <field type="CARD8" name="status" enum="SetConfig" /> 604 <field type="TIMESTAMP" name="timestamp" /> 605 </reply> 606 </request> 607 608 <request name="SetOutputPrimary" opcode="30"> 609 <field type="WINDOW" name="window" /> 610 <field type="OUTPUT" name="output" /> 611 </request> 612 613 <request name="GetOutputPrimary" opcode="31"> 614 <field type="WINDOW" name="window" /> 615 <reply> 616 <pad bytes="1" /> 617 <field type="OUTPUT" name="output" /> 618 </reply> 619 </request> 620 621 <!-- New in version 1.4 --> 622 623 <request name="GetProviders" opcode="32"> 624 <field type="WINDOW" name="window" /> 625 <reply> 626 <pad bytes="1" /> 627 <field type="TIMESTAMP" name="timestamp" /> 628 <field type="CARD16" name="num_providers" /> 629 <pad bytes="18" /> 630 <list type="PROVIDER" name="providers"> 631 <fieldref>num_providers</fieldref> 632 </list> 633 </reply> 634 </request> 635 636 <enum name="ProviderCapability"> 637 <item name="SourceOutput"> <bit>0</bit></item> 638 <item name="SinkOutput"> <bit>1</bit></item> 639 <item name="SourceOffload"> <bit>2</bit></item> 640 <item name="SinkOffload"> <bit>3</bit></item> 641 </enum> 642 643 <request name="GetProviderInfo" opcode="33"> 644 <field type="PROVIDER" name="provider" /> 645 <field type="TIMESTAMP" name="config_timestamp" /> 646 <reply> 647 <field type="CARD8" name="status" /> 648 <field type="TIMESTAMP" name="timestamp" /> 649 <field type="CARD32" name="capabilities" mask="ProviderCapability" /> 650 <field type="CARD16" name="num_crtcs" /> 651 <field type="CARD16" name="num_outputs" /> 652 <field type="CARD16" name="num_associated_providers" /> 653 <field type="CARD16" name="name_len" /> 654 <pad bytes="8" /> 655 <list type="CRTC" name="crtcs"> 656 <fieldref>num_crtcs</fieldref> 657 </list> 658 <list type="OUTPUT" name="outputs"> 659 <fieldref>num_outputs</fieldref> 660 </list> 661 <list type="PROVIDER" name="associated_providers"> 662 <fieldref>num_associated_providers</fieldref> 663 </list> 664 <list type="CARD32" name="associated_capability"> 665 <fieldref>num_associated_providers</fieldref> 666 </list> 667 <list type="char" name="name"> 668 <fieldref>name_len</fieldref> 669 </list> 670 <!-- XXX: Prepared for the future. Until xcbgen supports 671 the align attribute in <pad>, we ignore the 672 trailing pad bytes here. 673 <pad align="4" /> 674 --> 675 </reply> 676 </request> 677 678 <request name="SetProviderOffloadSink" opcode="34"> 679 <field type="PROVIDER" name="provider" /> 680 <field type="PROVIDER" name="sink_provider" /> 681 <field type="TIMESTAMP" name="config_timestamp" /> 682 </request> 683 684 <request name="SetProviderOutputSource" opcode="35"> 685 <field type="PROVIDER" name="provider" /> 686 <field type="PROVIDER" name="source_provider" /> 687 <field type="TIMESTAMP" name="config_timestamp" /> 688 </request> 689 690 <request name="ListProviderProperties" opcode="36"> 691 <field type="PROVIDER" name="provider" /> 692 <reply> 693 <pad bytes="1" /> 694 <field type="CARD16" name="num_atoms" /> 695 <pad bytes="22" /> 696 <list type="ATOM" name="atoms"> 697 <fieldref>num_atoms</fieldref> 698 </list> 699 </reply> 700 </request> 701 702 <request name="QueryProviderProperty" opcode="37"> 703 <field type="PROVIDER" name="provider" /> 704 <field type="ATOM" name="property" /> 705 <reply> 706 <pad bytes="1" /> 707 <field type="BOOL" name="pending" /> 708 <field type="BOOL" name="range" /> 709 <field type="BOOL" name="immutable" /> 710 <pad bytes="21" /> 711 <list type="INT32" name="valid_values"> 712 <fieldref>length</fieldref> 713 </list> 714 </reply> 715 </request> 716 717 <request name="ConfigureProviderProperty" opcode="38"> 718 <field type="PROVIDER" name="provider" /> 719 <field type="ATOM" name="property" /> 720 <field type="BOOL" name="pending" /> 721 <field type="BOOL" name="range" /> 722 <pad bytes="2" /> 723 <list type="INT32" name="values" /> 724 </request> 725 726 <request name="ChangeProviderProperty" opcode="39"> 727 <field type="PROVIDER" name="provider" /> 728 <field type="ATOM" name="property" /> 729 <field type="ATOM" name="type" /> 730 <field type="CARD8" name="format" /> 731 <field type="CARD8" name="mode" /> 732 <pad bytes="2" /> 733 <field type="CARD32" name="num_items" /> 734 <list type="void" name="data"> 735 <op op="*"> 736 <fieldref>num_items</fieldref> 737 <op op="/"> 738 <fieldref>format</fieldref> 739 <value>8</value> 740 </op> 741 </op> 742 </list> 743 </request> 744 745 <request name="DeleteProviderProperty" opcode="40"> 746 <field type="PROVIDER" name="provider" /> 747 <field type="ATOM" name="property" /> 748 </request> 749 750 <request name="GetProviderProperty" opcode="41"> 751 <field type="PROVIDER" name="provider" /> 752 <field type="ATOM" name="property" /> 753 <field type="ATOM" name="type" /> <!-- AnyProperty --> 754 <field type="CARD32" name="long_offset" /> 755 <field type="CARD32" name="long_length" /> 756 <field type="BOOL" name="delete" /> 757 <field type="BOOL" name="pending" /> 758 <pad bytes="2" /> 759 <reply> 760 <field type="CARD8" name="format" /> 761 <field type="ATOM" name="type" /> <!-- None --> 762 <field type="CARD32" name="bytes_after" /> 763 <field type="CARD32" name="num_items" /> 764 <pad bytes="12" /> 765 <list type="void" name="data"> 766 <op op="*"> 767 <fieldref>num_items</fieldref> 768 <op op="/"> 769 <fieldref>format</fieldref> 770 <value>8</value> 771 </op> 772 </op> 773 </list> 774 </reply> 775 </request> 776 777 <!-- Events --> 778 779 <event name="ScreenChangeNotify" number="0"> 780 <field type="CARD8" name="rotation" mask="Rotation" /> 781 <field type="TIMESTAMP" name="timestamp" /> 782 <field type="TIMESTAMP" name="config_timestamp" /> 783 <field type="WINDOW" name="root" /> 784 <field type="WINDOW" name="request_window" /> 785 <field type="CARD16" name="sizeID" /> 786 <field type="CARD16" name="subpixel_order" enum="SubPixel" /> 787 <field type="CARD16" name="width" /> 788 <field type="CARD16" name="height" /> 789 <field type="CARD16" name="mwidth" /> 790 <field type="CARD16" name="mheight" /> 791 </event> 792 793 <!-- New in version 1.2 --> 794 795 <!-- subcode --> 796 <enum name="Notify" > 797 <item name="CrtcChange"> <value>0</value></item> 798 <item name="OutputChange"> <value>1</value></item> 799 <item name="OutputProperty"> <value>2</value></item> 800 <item name="ProviderChange"> <value>3</value></item> 801 <item name="ProviderProperty"><value>4</value></item> 802 <item name="ResourceChange"> <value>5</value></item> 803 <item name="Lease"> <value>6</value></item> 804 </enum> 805 806 <struct name="CrtcChange"> 807 <field type="TIMESTAMP" name="timestamp" /> 808 <field type="WINDOW" name="window" /> 809 <field type="CRTC" name="crtc" /> 810 <field type="MODE" name="mode" /> 811 <field type="CARD16" name="rotation" mask="Rotation" /> 812 <pad bytes="2" /> 813 <field type="INT16" name="x" /> 814 <field type="INT16" name="y" /> 815 <field type="CARD16" name="width" /> 816 <field type="CARD16" name="height" /> 817 </struct> 818 819 <struct name="OutputChange"> 820 <field type="TIMESTAMP" name="timestamp" /> 821 <field type="TIMESTAMP" name="config_timestamp" /> 822 <field type="WINDOW" name="window" /> 823 <field type="OUTPUT" name="output" /> 824 <field type="CRTC" name="crtc" /> 825 <field type="MODE" name="mode" /> 826 <field type="CARD16" name="rotation" mask="Rotation" /> 827 <field type="CARD8" name="connection" enum="Connection" /> 828 <field type="CARD8" name="subpixel_order" enum="SubPixel" /> 829 </struct> 830 831 <struct name="OutputProperty"> 832 <field type="WINDOW" name="window" /> 833 <field type="OUTPUT" name="output" /> 834 <field type="ATOM" name="atom" /> 835 <field type="TIMESTAMP" name="timestamp" /> 836 <field type="CARD8" name="status" enum="Property" /> 837 <pad bytes="11" /> 838 </struct> 839 840 <!-- New in version 1.4 --> 841 842 <struct name="ProviderChange"> 843 <field type="TIMESTAMP" name="timestamp" /> 844 <field type="WINDOW" name="window" /> 845 <field type="PROVIDER" name="provider" /> 846 <pad bytes="16" /> 847 </struct> 848 849 <struct name="ProviderProperty"> 850 <field type="WINDOW" name="window" /> 851 <field type="PROVIDER" name="provider" /> 852 <field type="ATOM" name="atom" /> 853 <field type="TIMESTAMP" name="timestamp" /> 854 <field type="CARD8" name="state" /> 855 <pad bytes="11" /> 856 </struct> 857 858 <struct name="ResourceChange"> 859 <field type="TIMESTAMP" name="timestamp" /> 860 <field type="WINDOW" name="window" /> 861 <pad bytes="20" /> 862 </struct> 863 864 <!-- New in version 1.5 --> 865 866 <struct name="MonitorInfo"> 867 <field type="ATOM" name="name" /> 868 <field type="BOOL" name="primary" /> 869 <field type="BOOL" name="automatic" /> 870 <field type="CARD16" name="nOutput" /> 871 <field type="INT16" name="x" /> 872 <field type="INT16" name="y" /> 873 <field type="CARD16" name="width" /> <!-- pixels --> 874 <field type="CARD16" name="height" /> <!-- pixels --> 875 <field type="CARD32" name="width_in_millimeters" /> 876 <field type="CARD32" name="height_in_millimeters" /> 877 <list type="OUTPUT" name="outputs"> 878 <fieldref>nOutput</fieldref> 879 </list> 880 </struct> 881 882 <request name="GetMonitors" opcode="42"> 883 <field type="WINDOW" name="window" /> 884 <field type="BOOL" name="get_active" /> 885 <reply> 886 <pad bytes="1" /> 887 <field type="TIMESTAMP" name="timestamp" /> 888 <field type="CARD32" name="nMonitors" /> 889 <field type="CARD32" name="nOutputs" /> 890 <pad bytes="12" /> 891 <list type="MonitorInfo" name="monitors"> 892 <fieldref>nMonitors</fieldref> 893 </list> 894 </reply> 895 </request> 896 897 <request name="SetMonitor" opcode="43"> 898 <field type="WINDOW" name="window" /> 899 <field type="MonitorInfo" name="monitorinfo" /> 900 </request> 901 902 <request name="DeleteMonitor" opcode="44"> 903 <field type="WINDOW" name="window" /> 904 <field type="ATOM" name="name" /> 905 </request> 906 907 <!-- new in 1.6 --> 908 909 <request name="CreateLease" opcode="45"> 910 <field type="WINDOW" name="window" /> 911 <field type="LEASE" name="lid" /> 912 <field type="CARD16" name="num_crtcs" /> 913 <field type="CARD16" name="num_outputs" /> 914 <list type="CRTC" name="crtcs"> 915 <fieldref>num_crtcs</fieldref> 916 </list> 917 <list type="OUTPUT" name="outputs"> 918 <fieldref>num_outputs</fieldref> 919 </list> 920 <reply> 921 <field type="CARD8" name="nfd" /> 922 <fd name="master_fd" /> 923 <pad bytes="24" /> 924 </reply> 925 </request> 926 927 <request name="FreeLease" opcode="46"> 928 <field type="LEASE" name="lid" /> 929 <field type="BYTE" name="terminate" /> 930 </request> 931 932 <struct name="LeaseNotify"> 933 <field type="TIMESTAMP" name="timestamp" /> 934 <field type="WINDOW" name="window" /> 935 <field type="LEASE" name="lease" /> 936 <field type="CARD8" name="created" /> 937 <pad bytes="15" /> 938 </struct> 939 940 <union name="NotifyData"> 941 <field type="CrtcChange" name="cc" /> 942 <field type="OutputChange" name="oc" /> 943 <field type="OutputProperty" name="op" /> 944 <field type="ProviderChange" name="pc" /> 945 <field type="ProviderProperty" name="pp" /> 946 <field type="ResourceChange" name="rc" /> 947 <field type="LeaseNotify" name="lc" /> 948 </union> 949 950 <event name="Notify" number="1"> 951 <field type="CARD8" name="subCode" enum="Notify" /> 952 <field type="NotifyData" name="u" /> 953 </event> 954</xcb> 955