Here's a patch to randrproto.txt that specifies the protocol level semantics for the proposed changes:
From 1265b555ebc49e7e5bc23de7441e7686748e97e1 Mon Sep 17 00:00:00 2001 From: Keith Packard <[email protected]> Date: Thu, 6 May 2010 15:11:52 -0700 Subject: [PATCH] Proposed RandR changes for per-crtc pixmaps. Signed-off-by: Keith Packard <[email protected]> --- randrproto/randrproto.txt | 114 ++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 113 insertions(+), 1 deletions(-) diff --git a/randrproto/randrproto.txt b/randrproto/randrproto.txt index 016532c..182280c 100644 --- a/randrproto/randrproto.txt +++ b/randrproto/randrproto.txt @@ -124,7 +124,23 @@ following features are added in this version: • Panning. It was removed with RandR 1.2 because the old semantics didn't fit any longer. With RandR 1.3 panning can be specified per crtc. -1.1 Acknowledgements +1.4 Introduction to version 1.4 of the extension + +Version 1.4 adds a couple more capabilities to further expose the +underlying hardware to clients + + • Per-crtc pixmaps. This provides for multiple scan-out buffers + which applications can create and assign to arbitrary collections + of crtcs. These pixmaps can be associated with a window for use + with OpenGL or drawn to directly. + + • RRSetCrtcConfigs request. This supplies a set of + crtc configurations to the server that must be applied together + or not at all. This can reduce screen flicker while also + providing the server a complete configuration for appropriate + resource management. + +1.99 Acknowledgements Our thanks to the contributors to the design found on the xpert mailing list, in particular: @@ -300,6 +316,20 @@ MODEINFO { id: MODE REFRESH { rates: LISTofCARD16 } +5.4. Protocol Types added in version 1.4 of the extension + +SCANOUTPIXMAPINFO { format: PICTFORMAT + maxWidth, maxHeight: CARD16 + rotations: SETofROTATION } + +CRTCCONFIG { crtc: CRTC + x, y: INT16 + mode: MODE + rotation: ROTATION + sprite_transform: TRANSFORM + outputs: LISTofOUTPUT + pixmap: PIXMAP } + ❧❧❧❧❧❧❧❧❧❧❧ 6. Extension Initialization @@ -1236,6 +1266,88 @@ dynamic changes in the display environment. RRGetOutputPrimary returns the primary output for the screen. +7.3. Extension Requests added in version 1.4 of the extension. + +┌─── + RRQueryScanoutPixmaps + window: WINDOW + ▶ + infos: LISTofSCANOUTPIXMAPINFO +└─── + Errors: Window + + This request returns information about the server support for + alternate scanout pixmaps. For each pictformat, there is a set + of rotations and a maximum supported size. The rotations here + are those provided by the scanout hardware itself, not by a + software emulation. + +┌─── + RRCreateScanoutPixmap + pixmap: PIXMAP + window: WINDOW + width, height: CARD16 + format: PICTFORMAT + rotations: SETofROTATION +└─── + Errors: Window, Match, Value + + Creates a pixmap which can subsequently be used as a scanout + buffer for the screen associated with 'window'. 'rotations' is + the set of rotation values which may be used with the + resulting scanout buffer. 'rotations' must be a subset of the + supported rotations or a Match error results. width and height + must be within the supported range or a Value error + results. 'format' must be one of the supported formats or + Match error results. + +┌─── + RRSetWindowPixmap + window: WINDOW + pixmap: PIXMAP +└─── + Errors: Window, Pixmap, Match + + Mirroring the Composite extension NameWindowPixmap request, + this sets the pixmap used for off-screen storage of window + contents. Pixmap and Window must be the same depth and screen + or a Match error results. Rendering is clipped to the + intersection of the window size and pixmap size. The window + origin is set at the pixmap origin. + +┌─── + RRSetCrtcSpriteTransform + crtc: CRTC + transform: TRANSFORM +└─── + Sets the sprite transform for the specified crtc, any sprites + presented on this crtc will have their positions transformed + by the specified matrix. + +┌─── + RRSetCrtcConfigs + window: WINDOW + width: CARD16 + height: CARD16 + width-in-millimeters: CARD32 + height-in-millimeters: CARD32 + configs: LISTofCRTCCONFIG + timestamp: TIMESTAMP + ▶ + status: RRCONFIGSTATUS + new-timestamp: TIMESTAMP +└─── + Errors: Value, Match + + This works much like RRSetScreenSize followed by a sequence of + RRSetCrtcConfig, except that the entire configuration is set + in a single operation, either succeeding or failing without + any partial execution. In particular, the requested screen + size need only be large enough to hold the final + configuration, not the starting or any intermediate + configuration. Note that the sprite_transform is also included + in this request making for truely one-stop shopping. + ❧❧❧❧❧❧❧❧❧❧❧ 8. Extension Events -- 1.7.0.4 -- [email protected]
pgpOaM681KzMZ.pgp
Description: PGP signature
_______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
