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


Reply via email to