I am sponsoring this case for Niveditha Rau of the X Window System
group and closing it as approved automatic as it simply tracks the
community addition of new protocol requests & properties to the existing
RandR extension to the X protocol, and the corresponding API additions
to the libXrandr library and CLI additions to the xrandr program,
following the precedent of the RandR 1.2 case [PSARC 2007/430].
-Alan Coopersmith- alan.coopersmith at sun.com
Sun Microsystems, Inc. - X Window System Engineering
Template Version: @(#)sac_nextcase 1.68 02/23/09 SMI
This information is Copyright 2009 Sun Microsystems
1. Introduction
1.1. Project/Component Working Name:
X Resize, Rotate and Reflect (RandR) 1.3
1.2. Name of Document Author/Supplier:
Author: Niveditha Rau
1.3 Date of This Document:
28 April, 2009
4. Technical Description
This case updates the following X Resize and Rotate extension related
components:
- randrproto from 1.2.2 to community release 1.3
- xrandr command line utility from 1.2.3 to community release 1.3
- libXrandr library from 1.2.2 to to community release 1.3
Version 1.3 builds on the changes made with version 1.2 and adds some new
capabilities without fundmentally changing the extension again. The
following features are added in this version:
- Projective Transforms. The implementation work for general rotation
support made it trivial to add full projective transformations. These
can be used to scale the screen up/down as well as perform projector
keystone correct or other effects.
- 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.
Imported Interfaces:
--------------------
Xrandr extension protocol version 1.2 Volatile PSARC 2007/430
libXrandr.so.2 version 1.2 Volatile PSARC 2007/430
<X11/extensions/Xrandr.h> version 1.2 Volatile PSARC 2007/430
/usr/X11/bin/xrandr version 1.2 Volatile PSARC 2007/430
Exported Interfaces:
--------------------
- randrproto (Xrandr extension protocol) version 1.3:
/usr/lib/pkgconfig/randrproto.pc Volatile
/usr/lib/{sparcv9,amd64}/pkgconfig/randrproto.pc Volatile
/usr/X11/include/X11/extensions/randrproto.h Volatile [1]
/usr/X11/include/X11/extensions/randr.h Volatile [1]
- xrandr version 1.3:
/usr/X11/bin/xrandr Volatile [2]
- libXrandr version 1.3:
/usr/lib/pkgconfig/xrandr.pc Volatile
/usr/lib/{sparcv9,amd64}/pkgconfig/xrandr.pc Volatile
/usr/X11/lib/libXrandr.so.2 Volatile [3]
/usr/X11/lib/{sparcv9,amd64}/libXrandr.so.2 Volatile [3]
/usr/X11/include/X11/extensions/Xrandr.h Volatile [3]
References:
-----------
[1] randrproto 1.3 additions section below and materials/randrproto.txt
[2] xrandr 1.3 additions section below and materials/xrandr.man.txt
[3] libXrandr 1.3 additions section below and materials/randrproto.txt
randrproto 1.3 additions:
=========================
from randr.h
------------
/* V1.3 additions */
#define X_RRGetScreenResourcesCurrent 25
#define X_RRSetCrtcTransform 26
#define X_RRGetCrtcTransform 27
#define X_RRGetPanning 28
#define X_RRSetPanning 29
#define X_RRSetOutputPrimary 30
#define X_RRGetOutputPrimary 31
#define RRTransformUnit (1L << 0)
#define RRTransformScaleUp (1L << 1)
#define RRTransformScaleDown (1L << 2)
#define RRTransformProjective (1L << 3)
The following output properties are added:
#define RR_PROPERTY_SIGNAL_FORMAT "SignalFormat"
#define RR_PROPERTY_SIGNAL_PROPERTIES "SignalProperties"
#define RR_PROPERTY_CONNECTOR_TYPE "ConnectorType"
#define RR_PROPERTY_CONNECTOR_NUMBER "ConnectorNumber"
#define RR_PROPERTY_COMPATIBILITY_LIST "CompatibilityList"
#define RR_PROPERTY_CLONE_LIST "CloneList"
from randrproto.h
-----------------
typedef xRRGetScreenResourcesReq xRRGetScreenResourcesCurrentReq;
#define sz_xRRGetScreenResourcesCurrentReq sz_xRRGetScreenResourcesReq
typedef xRRGetScreenResourcesReply xRRGetScreenResourcesCurrentReply;
#define sz_xRRGetScreenResourcesCurrentReply sz_xRRGetScreenResourcesReply
typedef struct {
CARD8 reqType;
CARD8 randrReqType;
CARD16 length B16;
RRCrtc crtc B32;
xRenderTransform transform;
CARD16 nbytesFilter; /* number of bytes in filter name */
CARD16 pad B16;
} xRRSetCrtcTransformReq;
#define sz_xRRSetCrtcTransformReq 48
typedef struct {
CARD8 reqType;
CARD8 randrReqType;
CARD16 length B16;
RRCrtc crtc B32;
} xRRGetCrtcTransformReq;
#define sz_xRRGetCrtcTransformReq 8
typedef struct {
BYTE type;
CARD8 status;
CARD16 sequenceNumber B16;
CARD32 length B32;
xRenderTransform pendingTransform;
BYTE hasTransforms;
CARD8 pad0;
CARD16 pad1 B16;
xRenderTransform currentTransform;
CARD32 pad2 B32;
CARD16 pendingNbytesFilter B16; /* number of bytes in
filter
name */
CARD16 pendingNparamsFilter B16; /* number of filter params
*/
CARD16 currentNbytesFilter B16; /* number of bytes in
filter
name */
CARD16 currentNparamsFilter B16; /* number of filter params
*/
} xRRGetCrtcTransformReply;
#define sz_xRRGetCrtcTransformReply 96
typedef struct {
CARD8 reqType;
CARD8 randrReqType;
CARD16 length B16;
Window window B32;
RROutput output B32;
} xRRSetOutputPrimaryReq;
#define sz_xRRSetOutputPrimaryReq 12
typedef struct {
CARD8 reqType;
CARD8 randrReqType;
CARD16 length B16;
Window window B32;
} xRRGetOutputPrimaryReq;
#define sz_xRRGetOutputPrimaryReq 8
typedef struct {
BYTE type;
CARD8 pad;
CARD16 sequenceNumber B16;
CARD32 length B32;
RROutput output B32;
CARD32 pad1 B32;
CARD32 pad2 B32;
CARD32 pad3 B32;
CARD32 pad4 B32;
CARD32 pad5 B32;
} xRRGetOutputPrimaryReply;
#define sz_xRRGetOutputPrimaryReply 32
typedef struct {
CARD8 reqType;
CARD8 randrReqType;
CARD16 length B16;
RRCrtc crtc B32;
} xRRGetPanningReq;
#define sz_xRRGetPanningReq 8
typedef struct {
BYTE type;
CARD8 status;
CARD16 sequenceNumber B16;
CARD32 length B32;
Time timestamp B32;
CARD16 left B16;
CARD16 top B16;
CARD16 width B16;
CARD16 height B16;
CARD16 track_left B16;
CARD16 track_top B16;
CARD16 track_width B16;
CARD16 track_height B16;
INT16 border_left B16;
INT16 border_top B16;
INT16 border_right B16;
INT16 border_bottom B16;
} xRRGetPanningReply;
#define sz_xRRGetPanningReply 36
typedef struct {
CARD8 reqType;
CARD8 randrReqType;
CARD16 length B16;
RRCrtc crtc B32;
Time timestamp B32;
CARD16 left B16;
CARD16 top B16;
CARD16 width B16;
CARD16 height B16;
CARD16 track_left B16;
CARD16 track_top B16;
CARD16 track_width B16;
CARD16 track_height B16;
INT16 border_left B16;
INT16 border_top B16;
INT16 border_right B16;
INT16 border_bottom B16;
} xRRSetPanningReq;
#define sz_xRRSetPanningReq 36
typedef struct {
BYTE type;
CARD8 status;
CARD16 sequenceNumber B16;
CARD32 length B32;
Time newTimestamp B32;
CARD32 pad1 B32;
CARD32 pad2 B32;
CARD32 pad3 B32;
CARD32 pad4 B32;
CARD32 pad5 B32;
} xRRSetPanningReply;
#define sz_xRRSetPanningReply 32
xrandr 1.3 additions:
=====================
The following new command line options are added to the xrandr command line
utility:
--nograb
--scale
--transform
--panning
--gamma
--primary
--noprimary
See materials/xrandr.man.txt for details on each option and usage.
libXrandr 1.3 additions
=======================
/* Version 1.3 additions */
libXrandr_1.3 {
global:
XRRGetScreenResourcesCurrent;
XRRSetCrtcTransform;
XRRGetCrtcTransform;
XRRGetPanning;
XRRFreePanning;
XRRSetPanning;
XRRSetOutputPrimary;
XRRGetOutputPrimary;
} libXrandr_1.2;
static void
XTransform_from_xRenderTransform (XTransform *x,
xRenderTransform *render);
static void
xRenderTransform_from_XTransform (xRenderTransform *render,
XTransform *x);
void
XRRSetCrtcTransform (Display *dpy,
RRCrtc crtc,
XTransform *transform,
char *filter,
XFixed *params,
int nparams);
#define CrtcTransformExtra (SIZEOF(xRRGetCrtcTransformReply) - 32)
static const xRenderTransform identity = {
0x10000, 0, 0,
0, 0x10000, 0,
0, 0, 0x10000,
};
Status
XRRGetCrtcTransform (Display *dpy,
RRCrtc crtc,
XRRCrtcTransformAttributes **attributes);
XRRPanning *
XRRGetPanning (Display *dpy, XRRScreenResources *resources, RRCrtc crtc);
void
XRRFreePanning (XRRPanning *panning);
Status
XRRSetPanning (Display *dpy,
XRRScreenResources *resources,
RRCrtc crtc,
XRRPanning *panning);
Interfaces added for output setup
void
XRRSetOutputPrimary(Display *dpy, Window window, RROutput output);
RROutput
XRRGetOutputPrimary(Display *dpy, Window window);
6. Resources and Schedule
6.4. Steering Committee requested information
6.4.1. Consolidation C-team Name:
X Consolidation (Desktop C-Team)
6.5. ARC review type: Automatic
6.6. ARC Exposure: open