From alanc@sac.sfbay.sun.com Tue Apr 28 18:59:40 2009
Received: from sunmail2sca.sfbay.sun.com (sunmail2sca.SFBay.Sun.COM [129.145.155.234])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id n3T1xeZY019076
	for <psarc-ext@sac.sfbay.sun.com>; Tue, 28 Apr 2009 18:59:40 -0700 (PDT)
Received: from nwk-avmta-2.sfbay.sun.com (nwk-avmta-2.SFBay.Sun.COM [129.145.155.6])
	by sunmail2sca.sfbay.sun.com (8.13.7+Sun/8.13.7/ENSMAIL,v2.2) with ESMTP id n3T1xe8C001855;
	Tue, 28 Apr 2009 18:59:40 -0700 (PDT)
Received: from pmxchannel-daemon.nwk-avmta-2.sfbay.sun.com by
 nwk-avmta-2.sfbay.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0KIU00I09AVF1Q00@nwk-avmta-2.sfbay.sun.com>; Tue,
 28 Apr 2009 18:59:39 -0700 (PDT)
Received: from dm-sfbay-02.sfbay.sun.com ([129.146.11.31])
 by nwk-avmta-2.sfbay.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0KIU009JTAVE6P70@nwk-avmta-2.sfbay.sun.com>; Tue,
 28 Apr 2009 18:59:38 -0700 (PDT)
Received: from sac.sfbay.sun.com (sac.SFBay.Sun.COM [129.146.226.132])
	by dm-sfbay-02.sfbay.sun.com (8.13.8+Sun/8.13.8/ENSMAIL,v2.2)
 with ESMTP id n3T1xb68050363; Tue, 28 Apr 2009 18:59:37 -0700 (PDT)
Received: from sac.sfbay.sun.com (localhost [127.0.0.1])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id n3T1xauK019071; Tue,
 28 Apr 2009 18:59:36 -0700 (PDT)
Received: (from alanc@localhost)
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8/Submit) id n3T1xaBo019067; Tue,
 28 Apr 2009 18:59:36 -0700 (PDT)
Date: Tue, 28 Apr 2009 18:59:36 -0700 (PDT)
From: Alan Coopersmith <alan.coopersmith@sun.com>
Subject: X Resize, Rotate and Reflect (RandR) 1.3 [PSARC/2009/269 Self Review]
To: PSARC-ext@sun.com
Cc: Niveditha.Rau@sun.com, xwin-discuss@opensolaris.org
Message-id: <200904290159.n3T1xaBo019067@sac.sfbay.sun.com>
Content-transfer-encoding: 7BIT
X-PMX-Version: 5.4.1.325704
Status: RO
Content-Length: 9294

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@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


