From 25b9dbb15f0dc98cfc6b5585e7efebf3250f64d3 Mon Sep 17 00:00:00 2001 From: marha Date: Tue, 7 Dec 2010 15:49:06 +0000 Subject: xserver pixman git update 7-12-2010 --- xorg-server/randr/randrstr.h | 207 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 183 insertions(+), 24 deletions(-) (limited to 'xorg-server/randr/randrstr.h') diff --git a/xorg-server/randr/randrstr.h b/xorg-server/randr/randrstr.h index b4acfe12a..ee208f569 100644 --- a/xorg-server/randr/randrstr.h +++ b/xorg-server/randr/randrstr.h @@ -55,9 +55,10 @@ #define RANDR_10_INTERFACE 1 #define RANDR_12_INTERFACE 1 #define RANDR_13_INTERFACE 1 /* requires RANDR_12_INTERFACE */ +#define RANDR_14_INTERFACE 1 /* requires RANDR_13_INTERFACE */ #define RANDR_GET_CRTC_INTERFACE 1 -#define RANDR_INTERFACE_VERSION 0x0103 +#define RANDR_INTERFACE_VERSION 0x0104 typedef XID RRMode; typedef XID RROutput; @@ -77,6 +78,8 @@ typedef struct _rrMode RRModeRec, *RRModePtr; typedef struct _rrPropertyValue RRPropertyValueRec, *RRPropertyValuePtr; typedef struct _rrProperty RRPropertyRec, *RRPropertyPtr; typedef struct _rrCrtc RRCrtcRec, *RRCrtcPtr; +typedef struct _rrScreenConfig RRScreenConfigRec, *RRScreenConfigPtr; +typedef struct _rrCrtcConfig RRCrtcConfigRec, *RRCrtcConfigPtr; typedef struct _rrOutput RROutputRec, *RROutputPtr; struct _rrMode { @@ -120,11 +123,43 @@ struct _rrCrtc { CARD16 *gammaGreen; void *devPrivate; Bool transforms; + PixmapPtr scanoutPixmap; RRTransformRec client_pending_transform; RRTransformRec client_current_transform; + PictTransform client_sprite_position_transform; + PictTransform client_sprite_image_transform; + struct pict_f_transform client_sprite_f_position_transform; + struct pict_f_transform client_sprite_f_image_transform; + PictTransform transform; struct pict_f_transform f_transform; struct pict_f_transform f_inverse; + struct pict_f_transform f_sprite_position; /* crtc from screen */ + struct pict_f_transform f_sprite_image_inverse; /* image from crtc */ +}; + +struct _rrScreenConfig { + CARD16 screen_pixmap_width; + CARD16 screen_pixmap_height; + CARD16 screen_width; + CARD16 screen_height; + CARD32 mm_width; + CARD32 mm_height; +}; + +struct _rrCrtcConfig { + RRCrtcPtr crtc; + int x, y; + RRModePtr mode; + Rotation rotation; + int numOutputs; + RROutputPtr *outputs; + PictTransform sprite_position_transform; + PictTransform sprite_image_transform; + struct pict_f_transform sprite_position_f_transform; + struct pict_f_transform sprite_image_f_transform; + PixmapPtr pixmap; + int pixmap_x, pixmap_y; }; struct _rrOutput { @@ -156,6 +191,8 @@ struct _rrOutput { typedef Bool (*RRScreenSetSizeProcPtr) (ScreenPtr pScreen, CARD16 width, CARD16 height, + CARD16 pixWidth, + CARD16 pixHeight, CARD32 mmWidth, CARD32 mmHeight); @@ -166,7 +203,8 @@ typedef Bool (*RRCrtcSetProcPtr) (ScreenPtr pScreen, int y, Rotation rotation, int numOutputs, - RROutputPtr *outputs); + RROutputPtr *outputs, + PixmapPtr scanout_pixmap); typedef Bool (*RRCrtcSetGammaProcPtr) (ScreenPtr pScreen, RRCrtcPtr crtc); @@ -232,6 +270,35 @@ typedef Bool (*RRSetConfigProcPtr) (ScreenPtr pScreen, #endif +typedef struct { + PictFormatPtr format; + int maxWidth, maxHeight; + int depth; + Rotation rotations; +} RRScanoutPixmapInfo; + +typedef RRScanoutPixmapInfo *(*RRQueryScanoutPixmapsPtr) (ScreenPtr pScreen, + int *num_info); + +typedef PixmapPtr (*RRCreateScanoutPixmapPtr) (ScreenPtr pScreen, + int width, int height, int depth, + Rotation rotations, + PictFormatPtr format); + +typedef void (*RRSetCrtcSpriteTransformPtr) (ScreenPtr pScreen, + RRCrtcPtr randr_crtc, + struct pict_f_transform *position_transform, + struct pict_f_transform *image_transform); + +typedef void (*RRGetCrtcSpriteTransformPtr) (ScreenPtr pScreen, + RRCrtcPtr randr_crtc, + struct pict_f_transform *position_transform, + struct pict_f_transform *image_transform); + +typedef Bool (*RRSetCrtcConfigsPtr) (ScreenPtr screen, + RRScreenConfigPtr screen_config, + RRCrtcConfigPtr crtc_configs, + int num_configs); typedef struct _rrScrPriv { /* @@ -256,7 +323,12 @@ typedef struct _rrScrPriv { RRGetPanningProcPtr rrGetPanning; RRSetPanningProcPtr rrSetPanning; #endif - + RRQueryScanoutPixmapsPtr rrQueryScanoutPixmaps; + RRCreateScanoutPixmapPtr rrCreateScanoutPixmap; + RRSetCrtcSpriteTransformPtr rrSetCrtcSpriteTransform; + RRGetCrtcSpriteTransformPtr rrGetCrtcSpriteTransform; + RRSetCrtcConfigsPtr rrSetCrtcConfigs; + /* * Private part of the structure; not considered part of the ABI */ @@ -283,6 +355,8 @@ typedef struct _rrScrPriv { /* Last known pointer position */ RRCrtcPtr pointerCrtc; + RRScanoutPixmapInfo *scanout_info; + int n_scanout_info; #ifdef RANDR_10_INTERFACE /* * Configuration information @@ -297,6 +371,7 @@ typedef struct _rrScrPriv { int rate; int size; #endif + } rrScrPrivRec, *rrScrPrivPtr; extern _X_EXPORT DevPrivateKeyRec rrPrivKeyRec; @@ -405,9 +480,15 @@ extern _X_EXPORT Bool RRScreenSizeSet (ScreenPtr pScreen, CARD16 width, CARD16 height, + CARD16 pixWidth, + CARD16 pixHeight, CARD32 mmWidth, CARD32 mmHeight); +extern _X_EXPORT void +RRScreenCurrentConfig(ScreenPtr screen, + RRScreenConfigPtr screen_config); + /* * Send ConfigureNotify event to root window when 'something' happens */ @@ -467,6 +548,9 @@ RRGetRotation (ScreenPtr pScreen); extern _X_EXPORT CARD16 RRVerticalRefresh (xRRModeInfo *mode); +extern _X_EXPORT RRScanoutPixmapInfo * +RRQueryScanoutPixmapInfo(ScreenPtr screen, int *n_info); + #ifdef RANDR_10_INTERFACE /* * This is the old interface, deprecated but left @@ -545,7 +629,8 @@ RRCrtcNotify (RRCrtcPtr crtc, Rotation rotation, RRTransformPtr transform, int numOutputs, - RROutputPtr *outputs); + RROutputPtr *outputs, + PixmapPtr scanoutPixmap); extern _X_EXPORT void RRDeliverCrtcEvent (ClientPtr client, WindowPtr pWin, RRCrtcPtr crtc); @@ -560,7 +645,8 @@ RRCrtcSet (RRCrtcPtr crtc, int y, Rotation rotation, int numOutput, - RROutputPtr *outputs); + RROutputPtr *outputs, + PixmapPtr scanout_pixmap); /* * Request that the Crtc gamma be changed @@ -589,6 +675,10 @@ RRCrtcGammaGet(RRCrtcPtr crtc); extern _X_EXPORT Bool RRCrtcGammaNotify (RRCrtcPtr crtc); +void +RRModeGetScanoutSize (RRModePtr mode, struct pixman_f_transform *transform, + int *width, int *height); + /* * Set the size of the gamma table at server startup time */ @@ -605,25 +695,6 @@ RRCrtcGammaSetSize (RRCrtcPtr crtc, extern _X_EXPORT void RRCrtcGetScanoutSize(RRCrtcPtr crtc, int *width, int *height); -/* - * Compute the complete transformation matrix including - * client-specified transform, rotation/reflection values and the crtc - * offset. - * - * Return TRUE if the resulting transform is not a simple translation. - */ -extern _X_EXPORT Bool -RRTransformCompute (int x, - int y, - int width, - int height, - Rotation rotation, - RRTransformPtr rr_transform, - - PictTransformPtr transform, - struct pict_f_transform *f_transform, - struct pict_f_transform *f_inverse); - /* * Return crtc transform */ @@ -669,6 +740,38 @@ RRCrtcInit (void); extern _X_EXPORT void RRCrtcInitErrorValue (void); +/* + * Free a set of crtc configs and their attached output arrays + */ +void +RRFreeCrtcConfigs(RRCrtcConfigPtr configs, int num_configs); + +/* + * Convert the current crtc configuration into an RRCrtcConfig + */ +extern _X_EXPORT Bool +RRCrtcCurrentConfig(RRCrtcPtr crtc, + RRCrtcConfigPtr crtc_config); + +/* + * Figure out whether the specific crtc_config can fit + * within the screen_config + */ +Bool +RRScreenCoversCrtc(RRScreenConfigPtr screen_config, + RRCrtcConfigPtr crtc_config, + RRTransformPtr client_transform, + XID *errorValue); + +/* + * Set a screen and set of crtc configurations in one operation + */ +Bool +RRSetCrtcConfigs(ScreenPtr screen, + RRScreenConfigPtr screen_config, + RRCrtcConfigPtr crtc_configs, + int num_configs); + /* * Crtc dispatch */ @@ -694,12 +797,40 @@ ProcRRSetCrtcTransform (ClientPtr client); extern _X_EXPORT int ProcRRGetCrtcTransform (ClientPtr client); +extern _X_EXPORT int +ProcRRSetCrtcConfigs (ClientPtr client); + int ProcRRGetPanning (ClientPtr client); int ProcRRSetPanning (ClientPtr client); +void +RRCrtcSpriteTransformSet(RRCrtcPtr crtc, + PictTransform *position_transform, + PictTransform *image_transform, + struct pict_f_transform *f_position_transform, + struct pict_f_transform *f_image_transform); + +int +ProcRRQueryScanoutPixmaps (ClientPtr client); + +int +ProcRRCreateScanoutPixmap (ClientPtr client); + +int +ProcRRSetCrtcPixmapConfig (ClientPtr client); + +int +ProcRRSetCrtcSpriteTransform (ClientPtr client); + +int +ProcRRGetCrtcSpriteTransform (ClientPtr client); + +int +ProcRRSetCrtcConfigs (ClientPtr client); + /* rrdispatch.c */ extern _X_EXPORT Bool RRClientKnowsRates (ClientPtr pClient); @@ -889,12 +1020,40 @@ ProcRRConfigureOutputProperty (ClientPtr client); extern _X_EXPORT int ProcRRDeleteOutputProperty (ClientPtr client); +/* rrsprite.c */ +extern _X_EXPORT int +ProcRRSetCrtcSpriteTransform (ClientPtr client); + +extern _X_EXPORT int +ProcRRGetCrtcSpriteTransform (ClientPtr client); + /* rrxinerama.c */ #ifdef XINERAMA extern _X_EXPORT void RRXineramaExtensionInit(void); #endif +/* mirrcrtc.c */ +Bool +miRRSetScreenConfig(ScreenPtr screen, + RRScreenConfigPtr screen_config); + +Bool +miRRSetCrtcConfig(RRCrtcConfigPtr crtc_config); + +Bool +miRRDisableCrtc(RRCrtcPtr crtc); + +Bool +miRRCheckDisableCrtc(RRScreenConfigPtr new_screen_config, + RRCrtcConfigPtr old_crtc_config); + +Bool +miRRSetCrtcConfigs(ScreenPtr screen, + RRScreenConfigPtr screen_config, + RRCrtcConfigPtr crtc_configs, + int num_configs); + #endif /* _RANDRSTR_H_ */ /* -- cgit v1.2.3