Revert "randr: Add sprite position transforms"

This reverts commit 66294afcab.
This commit is contained in:
Keith Packard 2011-02-23 11:18:12 -08:00
commit a91d33917b
11 changed files with 46 additions and 333 deletions

View file

@ -106,17 +106,12 @@ xf86CrtcCreate (ScrnInfoPtr scrn,
pixman_transform_init_identity (&crtc->crtc_to_framebuffer);
pixman_f_transform_init_identity (&crtc->f_crtc_to_framebuffer);
pixman_f_transform_init_identity (&crtc->f_framebuffer_to_crtc);
pixman_f_transform_init_identity (&crtc->f_screen_to_crtc);
pixman_f_transform_init_identity (&crtc->user_sprite_position_transform);
pixman_f_transform_init_identity (&crtc->f_crtc_to_cursor);
pixman_f_transform_init_identity (&crtc->user_sprite_image_transform);
crtc->filter = NULL;
crtc->params = NULL;
crtc->nparams = 0;
crtc->filter_width = 0;
crtc->filter_height = 0;
crtc->transform_in_use = FALSE;
crtc->sprite_transform_in_use = FALSE;
crtc->transformPresent = FALSE;
crtc->desiredTransformPresent = FALSE;
memset (&crtc->bounds, '\0', sizeof (crtc->bounds));

View file

@ -345,7 +345,6 @@ struct _xf86Crtc {
int filter_width; /* ABI 2 */
int filter_height; /* ABI 2 */
Bool transform_in_use;
Bool sprite_transform_in_use;
RRTransformRec transform; /* ABI 2 */
Bool transformPresent; /* ABI 2 */
RRTransformRec desiredTransform; /* ABI 2 */
@ -385,22 +384,6 @@ struct _xf86Crtc {
* Clear the shadow
*/
Bool shadowClear;
/**
* Sprite position transforms
*/
/* Transform a screen coordinate to a crtc coordinate */
struct pixman_f_transform f_screen_to_crtc;
/* The user-specified portion of the screen to crtc conversion */
struct pixman_f_transform user_sprite_position_transform;
/* Transform a hardware cursor coordinate to a cursor coordinate */
struct pixman_f_transform f_crtc_to_cursor;
/* The user-specified portion of the cursor to hardware transform */
struct pixman_f_transform user_sprite_image_transform;
};
typedef struct _xf86OutputFuncs {
@ -794,14 +777,6 @@ xf86CrtcSetOrigin (xf86CrtcPtr crtc, int x, int y);
extern _X_EXPORT Bool
xf86CrtcRotate (xf86CrtcPtr crtc);
/*
* Update cursor transform matrices after user changes
* This is just the cursor subset of xf86CrtcRotate
*/
extern _X_EXPORT void
xf86CrtcRotateCursor (xf86CrtcPtr crtc);
/*
* Clean up any rotation data, used when a crtc is turned off
* as well as when rotation is disabled.

View file

@ -338,7 +338,7 @@ xf86_crtc_set_cursor_position (xf86CrtcPtr crtc, int x, int y)
/*
* Transform position of cursor on screen
*/
if (crtc->sprite_transform_in_use)
if (crtc->transform_in_use)
{
ScreenPtr screen = scrn->pScreen;
xf86CursorScreenPtr ScreenPriv =
@ -349,7 +349,7 @@ xf86_crtc_set_cursor_position (xf86CrtcPtr crtc, int x, int y)
v.v[0] = (x + ScreenPriv->HotX) + 0.5;
v.v[1] = (y + ScreenPriv->HotY) + 0.5;
v.v[2] = 1;
pixman_f_transform_point (&crtc->f_screen_to_crtc, &v);
pixman_f_transform_point (&crtc->f_framebuffer_to_crtc, &v);
/* cursor will have 0.5 added to it already so floor is sufficent */
x = floor (v.v[0]);
y = floor (v.v[1]);

View file

@ -180,14 +180,14 @@ xf86RandR13VerifyPanningArea (xf86CrtcPtr crtc, int screenWidth, int screenHeigh
*/
static void
xf86ComputeCrtcPan (Bool sprite_transform_in_use,
xf86ComputeCrtcPan (Bool transform_in_use,
struct pixman_f_transform *m,
double screen_x, double screen_y,
double crtc_x, double crtc_y,
int old_pan_x, int old_pan_y,
int *new_pan_x, int *new_pan_y)
{
if (sprite_transform_in_use) {
if (transform_in_use) {
/*
* Given the current transform, M, the current position
* on the Screen, S, and the desired position on the CRTC,
@ -374,8 +374,8 @@ xf86RandR13Pan (xf86CrtcPtr crtc, int x, int y)
c.v[0] = x;
c.v[1] = y;
c.v[2] = 1.0;
if (crtc->sprite_transform_in_use) {
pixman_f_transform_point(&crtc->f_screen_to_crtc, &c);
if (crtc->transform_in_use) {
pixman_f_transform_point(&crtc->f_framebuffer_to_crtc, &c);
} else {
c.v[0] -= crtc->x;
c.v[1] -= crtc->y;
@ -402,8 +402,8 @@ xf86RandR13Pan (xf86CrtcPtr crtc, int x, int y)
}
}
if (panned)
xf86ComputeCrtcPan (crtc->sprite_transform_in_use,
&crtc->f_screen_to_crtc,
xf86ComputeCrtcPan (crtc->transform_in_use,
&crtc->f_framebuffer_to_crtc,
x, y, c.v[0], c.v[1],
newX, newY, &newX, &newY);
}
@ -414,7 +414,7 @@ xf86RandR13Pan (xf86CrtcPtr crtc, int x, int y)
* XXX This computation only works when we do not have a transform
* in use.
*/
if (!crtc->sprite_transform_in_use)
if (!crtc->transform_in_use)
{
/* Validate against [xy]1 after [xy]2, to be sure that results are > 0 for [xy]1 > 0 */
if (crtc->panningTotalArea.x2 > crtc->panningTotalArea.x1) {
@ -1732,20 +1732,6 @@ xf86RandR12ChangeGamma(int scrnIndex, Gamma gamma)
return Success;
}
static void
xf86RandR14SetCrtcSpriteTransform(ScreenPtr pScreen,
RRCrtcPtr randr_crtc,
struct pixman_f_transform *f_position_transform,
struct pixman_f_transform *f_image_transform)
{
xf86CrtcPtr crtc = randr_crtc->devPrivate;
crtc->user_sprite_position_transform = *f_position_transform;
crtc->user_sprite_image_transform = *f_image_transform;
xf86CrtcRotateCursor(crtc);
xf86_reload_cursors(pScreen);
}
static Bool
xf86RandR12EnterVT (int screen_index, int flags)
{
@ -1754,7 +1740,6 @@ xf86RandR12EnterVT (int screen_index, int flags)
XF86RandRInfoPtr randrp = XF86RANDRINFO(pScreen);
rrScrPrivPtr rp = rrGetScrPriv(pScreen);
Bool ret;
int i;
if (randrp->orig_EnterVT) {
pScrn->EnterVT = randrp->orig_EnterVT;
@ -1766,6 +1751,7 @@ xf86RandR12EnterVT (int screen_index, int flags)
}
/* reload gamma */
int i;
for (i = 0; i < rp->numCrtcs; i++)
xf86RandR12CrtcSetGamma(pScreen, rp->crtcs[i]);
@ -1796,7 +1782,6 @@ xf86RandR12Init12 (ScreenPtr pScreen)
rp->rrSetConfig = NULL;
pScrn->PointerMoved = xf86RandR12PointerMoved;
pScrn->ChangeGamma = xf86RandR12ChangeGamma;
rp->rrSetCrtcSpriteTransform = xf86RandR14SetCrtcSpriteTransform;
randrp->orig_EnterVT = pScrn->EnterVT;
pScrn->EnterVT = xf86RandR12EnterVT;

View file

@ -369,39 +369,6 @@ xf86CrtcFitsScreen (xf86CrtcPtr crtc, struct pict_f_transform *crtc_to_fb)
0 <= b.y1 && b.y2 <= pScrn->virtualY);
}
/*
* A subset of xf86CrtcRotate that just deals with
* cursor image/position transforms. Used when changing
* the cursor transform
*/
void
xf86CrtcRotateCursor (xf86CrtcPtr crtc)
{
/* if this is called during ScreenInit() we don't have pScrn->pScreen yet */
RRTransformPtr transform = NULL;
PictTransform crtc_to_fb;
struct pict_f_transform f_crtc_to_fb, f_fb_to_crtc, f_screen_to_crtc, f_crtc_to_cursor;
if (crtc->transformPresent)
transform = &crtc->transform;
(void) RRTransformCompute (crtc->x, crtc->y,
crtc->mode.HDisplay, crtc->mode.VDisplay,
crtc->rotation,
transform,
&crtc->user_sprite_position_transform,
&crtc->user_sprite_image_transform,
&crtc_to_fb,
&f_crtc_to_fb,
&f_fb_to_crtc,
&f_screen_to_crtc,
&f_crtc_to_cursor,
&crtc->sprite_transform_in_use);
crtc->f_screen_to_crtc = f_screen_to_crtc;
crtc->f_crtc_to_cursor = f_crtc_to_cursor;
}
Bool
xf86CrtcRotate (xf86CrtcPtr crtc)
{
@ -410,7 +377,7 @@ xf86CrtcRotate (xf86CrtcPtr crtc)
/* if this is called during ScreenInit() we don't have pScrn->pScreen yet */
ScreenPtr pScreen = screenInfo.screens[pScrn->scrnIndex];
PictTransform crtc_to_fb;
struct pict_f_transform f_crtc_to_fb, f_fb_to_crtc, f_screen_to_crtc, f_crtc_to_cursor;
struct pict_f_transform f_crtc_to_fb, f_fb_to_crtc;
xFixed *new_params = NULL;
int new_nparams = 0;
PictFilterPtr new_filter = NULL;
@ -426,15 +393,10 @@ xf86CrtcRotate (xf86CrtcPtr crtc)
crtc->mode.HDisplay, crtc->mode.VDisplay,
crtc->rotation,
transform,
&crtc->user_sprite_position_transform,
&crtc->user_sprite_image_transform,
&crtc_to_fb,
&f_crtc_to_fb,
&f_fb_to_crtc,
&f_screen_to_crtc,
&f_crtc_to_cursor,
&crtc->sprite_transform_in_use) &&
&f_fb_to_crtc) &&
xf86CrtcFitsScreen (crtc, &f_crtc_to_fb))
{
/*
@ -543,8 +505,6 @@ xf86CrtcRotate (xf86CrtcPtr crtc)
crtc->crtc_to_framebuffer = crtc_to_fb;
crtc->f_crtc_to_framebuffer = f_crtc_to_fb;
crtc->f_framebuffer_to_crtc = f_fb_to_crtc;
crtc->f_screen_to_crtc = f_screen_to_crtc;
crtc->f_crtc_to_cursor = f_crtc_to_cursor;
free(crtc->params);
crtc->params = new_params;
crtc->nparams = new_nparams;