RandR 1.4 X server patch series

Keith Packard keithp at keithp.com
Sun Dec 5 14:22:46 PST 2010

Here's the full patch series to add RandR 1.4 functionality to the X
server. This is the order in which I propose to merge the patches to
the X server, to make it possible to bisect the X server in the
future, I've added all of the functionality before adding the final
protocol version updates and dispatching hooks.

 [PATCH 1/6] Replace huge argument list in xf86CrtcSetModeTransform with struct

This is a clean-up patch which changes an internal API that was
growing an endless list of arguments. Now, there's a structure
containing the mode setting changes and a mask indicating which
are different from the current setting.

No ABI/API implications here.
 [PATCH 2/6] randr: Add sprite position transforms

This adds the infrastructure for transforming sprite positions on each
CRTC independently; the client constructs a projective transform that
maps global screen coordinates to crtc coordinates and the server uses
that to map the hotspot of the sprite.

This patch adds some of the code needed to get an image transformation
matrix delivered from the client down to the xf86 layer, but does not
yet have the code necessary to perform the actual image

No ABI/API changes for drivers.

 [PATCH 3/6] randr: Implement RRSetCrtcConfigs

This provides the one-stop-shopping request for screen configuration,
setting screen sizes and configuring a list of CRTCs all in one
step. This patch simply uses the existing APIs to do the mode setting,
but does dramatically simplify the xrandr code needed to make this

No ABI/API changes for drivers.

 [PATCH 4/6] hw/xfree86/modes: Add optional driver API for RRSetCrtcConfigs

To let drivers have a peek at the global configuration, this adds an
API allowing drivers to either check or actually perform the global
configuration operation. It's an optional API; without it, drivers
just get to see the old sequence of operations.

New driver API added.

 [PATCH 5/6] randr: Add per-crtc pixmaps

My actual goal of the whole patch series is to push crtc transforms
out of the server and into the compositing manager by allowing that
application to directly and completely control all rendering to the

New server API added for drivers to register scanout pixmap formats.
New driver API added for the server to create scanout pixmaps
Changes in xf86CrtcRec structure to add a scanout pixmap.

 [PATCH 6/6] randr: Hook up the new RandR 1.4 functionality

This last patch just hooks up dispatching code and adds swapped
dispatch functions.

 hw/xfree86/modes/xf86Crtc.c    |  143 +++++++---
 hw/xfree86/modes/xf86Crtc.h    |  119 ++++++++
 hw/xfree86/modes/xf86Cursors.c |    4 
 hw/xfree86/modes/xf86RandR12.c |  282 ++++++++++++++++----
 hw/xfree86/modes/xf86Rotate.c  |   44 +++
 include/protocol-versions.h    |    2 
 randr/Makefile.am              |    6 
 randr/mirrcrtc.c               |  170 ++++++++++++
 randr/randr.c                  |   15 +
 randr/randrstr.h               |  201 ++++++++++++--
 randr/rrcrtc.c                 |  566 ++++++++++++++++++++++++++++++++++++-----
 randr/rrdispatch.c             |    6 
 randr/rrinfo.c                 |    2 
 randr/rrpixmap.c               |  154 +++++++++++
 randr/rrscreen.c               |   26 +
 randr/rrsdispatch.c            |  132 +++++++++
 randr/rrsprite.c               |  104 +++++++
 randr/rrtransform.c            |   64 ++++
 randr/rrtransform.h            |   15 -
 19 files changed, 1853 insertions(+), 202 deletions(-)

More information about the xorg-devel mailing list