Correct the test for whether projective transform is necessary. Also, use
"affine" to describe the variable (universally) on suggestion from vektor. Corrects a rendercheck failure.
This commit is contained in:
parent
cdded97a0a
commit
b2e451b93c
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* $XdotOrg: xc/programs/Xserver/fb/fbcompose.c,v 1.22 2005/09/07 01:30:23 daniels Exp $
|
* $XdotOrg: xc/programs/Xserver/fb/fbcompose.c,v 1.23 2005/10/03 11:43:55 anholt Exp $
|
||||||
* $XFree86: xc/programs/Xserver/fb/fbcompose.c,v 1.17tsi Exp $
|
* $XFree86: xc/programs/Xserver/fb/fbcompose.c,v 1.17tsi Exp $
|
||||||
*
|
*
|
||||||
* Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc.
|
* Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc.
|
||||||
|
@ -2747,7 +2747,7 @@ static void fbFetchSourcePict(PicturePtr pict, int x, int y, int width, CARD32 *
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* radial or conical */
|
/* radial or conical */
|
||||||
Bool projective = FALSE;
|
Bool affine = TRUE;
|
||||||
double cx = 1.;
|
double cx = 1.;
|
||||||
double cy = 0.;
|
double cy = 0.;
|
||||||
double cz = 0.;
|
double cz = 0.;
|
||||||
|
@ -2769,11 +2769,11 @@ static void fbFetchSourcePict(PicturePtr pict, int x, int y, int width, CARD32 *
|
||||||
rx = v.vector[0]/65536.;
|
rx = v.vector[0]/65536.;
|
||||||
ry = v.vector[1]/65536.;
|
ry = v.vector[1]/65536.;
|
||||||
rz = v.vector[2]/65536.;
|
rz = v.vector[2]/65536.;
|
||||||
projective = pict->transform->matrix[2][0] != 0 || v.vector[2] != xFixed1;
|
affine = pict->transform->matrix[2][0] == 0 && v.vector[2] == xFixed1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pGradient->type == SourcePictTypeRadial) {
|
if (pGradient->type == SourcePictTypeRadial) {
|
||||||
if (!projective) {
|
if (affine) {
|
||||||
rx -= pGradient->radial.fx;
|
rx -= pGradient->radial.fx;
|
||||||
ry -= pGradient->radial.fy;
|
ry -= pGradient->radial.fy;
|
||||||
|
|
||||||
|
@ -2816,7 +2816,7 @@ static void fbFetchSourcePict(PicturePtr pict, int x, int y, int width, CARD32 *
|
||||||
}
|
}
|
||||||
} else /* SourcePictTypeConical */ {
|
} else /* SourcePictTypeConical */ {
|
||||||
double a = pGradient->conical.angle/(180.*65536);
|
double a = pGradient->conical.angle/(180.*65536);
|
||||||
if (!projective) {
|
if (affine) {
|
||||||
rx -= pGradient->conical.center.x/65536.;
|
rx -= pGradient->conical.center.x/65536.;
|
||||||
ry -= pGradient->conical.center.y/65536.;
|
ry -= pGradient->conical.center.y/65536.;
|
||||||
|
|
||||||
|
@ -2867,7 +2867,7 @@ static void fbFetchTransformed(PicturePtr pict, int x, int y, int width, CARD32
|
||||||
int i;
|
int i;
|
||||||
BoxRec box;
|
BoxRec box;
|
||||||
miIndexedPtr indexed = (miIndexedPtr) pict->pFormat->index.devPrivate;
|
miIndexedPtr indexed = (miIndexedPtr) pict->pFormat->index.devPrivate;
|
||||||
Bool projective = FALSE;
|
Bool affine = TRUE;
|
||||||
|
|
||||||
fetch = fetchPixelProcForPicture(pict);
|
fetch = fetchPixelProcForPicture(pict);
|
||||||
|
|
||||||
|
@ -2886,12 +2886,12 @@ static void fbFetchTransformed(PicturePtr pict, int x, int y, int width, CARD32
|
||||||
unit.vector[0] = pict->transform->matrix[0][0];
|
unit.vector[0] = pict->transform->matrix[0][0];
|
||||||
unit.vector[1] = pict->transform->matrix[1][0];
|
unit.vector[1] = pict->transform->matrix[1][0];
|
||||||
unit.vector[2] = pict->transform->matrix[2][0];
|
unit.vector[2] = pict->transform->matrix[2][0];
|
||||||
|
affine = v.vector[2] == xFixed1 && unit.vector[2] == 0;
|
||||||
} else {
|
} else {
|
||||||
unit.vector[0] = xFixed1;
|
unit.vector[0] = xFixed1;
|
||||||
unit.vector[1] = 0;
|
unit.vector[1] = 0;
|
||||||
unit.vector[2] = 0;
|
unit.vector[2] = 0;
|
||||||
}
|
}
|
||||||
projective = (unit.vector[2] != 0);
|
|
||||||
|
|
||||||
if (pict->filter == PictFilterNearest)
|
if (pict->filter == PictFilterNearest)
|
||||||
{
|
{
|
||||||
|
@ -2902,7 +2902,7 @@ static void fbFetchTransformed(PicturePtr pict, int x, int y, int width, CARD32
|
||||||
if (!v.vector[2]) {
|
if (!v.vector[2]) {
|
||||||
buffer[i] = 0;
|
buffer[i] = 0;
|
||||||
} else {
|
} else {
|
||||||
if (projective) {
|
if (!affine) {
|
||||||
y = MOD(DIV(v.vector[1],v.vector[2]), pict->pDrawable->height);
|
y = MOD(DIV(v.vector[1],v.vector[2]), pict->pDrawable->height);
|
||||||
x = MOD(DIV(v.vector[0],v.vector[2]), pict->pDrawable->width);
|
x = MOD(DIV(v.vector[0],v.vector[2]), pict->pDrawable->width);
|
||||||
} else {
|
} else {
|
||||||
|
@ -2920,7 +2920,7 @@ static void fbFetchTransformed(PicturePtr pict, int x, int y, int width, CARD32
|
||||||
if (!v.vector[2]) {
|
if (!v.vector[2]) {
|
||||||
buffer[i] = 0;
|
buffer[i] = 0;
|
||||||
} else {
|
} else {
|
||||||
if (projective) {
|
if (!affine) {
|
||||||
y = MOD(DIV(v.vector[1],v.vector[2]), pict->pDrawable->height);
|
y = MOD(DIV(v.vector[1],v.vector[2]), pict->pDrawable->height);
|
||||||
x = MOD(DIV(v.vector[0],v.vector[2]), pict->pDrawable->width);
|
x = MOD(DIV(v.vector[0],v.vector[2]), pict->pDrawable->width);
|
||||||
} else {
|
} else {
|
||||||
|
@ -2944,7 +2944,7 @@ static void fbFetchTransformed(PicturePtr pict, int x, int y, int width, CARD32
|
||||||
if (!v.vector[2]) {
|
if (!v.vector[2]) {
|
||||||
buffer[i] = 0;
|
buffer[i] = 0;
|
||||||
} else {
|
} else {
|
||||||
if (projective) {
|
if (!affine) {
|
||||||
y = DIV(v.vector[1],v.vector[2]);
|
y = DIV(v.vector[1],v.vector[2]);
|
||||||
x = DIV(v.vector[0],v.vector[2]);
|
x = DIV(v.vector[0],v.vector[2]);
|
||||||
} else {
|
} else {
|
||||||
|
@ -2963,7 +2963,7 @@ static void fbFetchTransformed(PicturePtr pict, int x, int y, int width, CARD32
|
||||||
if (!v.vector[2]) {
|
if (!v.vector[2]) {
|
||||||
buffer[i] = 0;
|
buffer[i] = 0;
|
||||||
} else {
|
} else {
|
||||||
if (projective) {
|
if (!affine) {
|
||||||
y = DIV(v.vector[1],v.vector[2]);
|
y = DIV(v.vector[1],v.vector[2]);
|
||||||
x = DIV(v.vector[0],v.vector[2]);
|
x = DIV(v.vector[0],v.vector[2]);
|
||||||
} else {
|
} else {
|
||||||
|
@ -2994,7 +2994,7 @@ static void fbFetchTransformed(PicturePtr pict, int x, int y, int width, CARD32
|
||||||
CARD32 tl, tr, bl, br, r;
|
CARD32 tl, tr, bl, br, r;
|
||||||
CARD32 ft, fb;
|
CARD32 ft, fb;
|
||||||
|
|
||||||
if (projective) {
|
if (!affine) {
|
||||||
xFixed_48_16 div;
|
xFixed_48_16 div;
|
||||||
div = ((xFixed_48_16)v.vector[0] << 16)/v.vector[2];
|
div = ((xFixed_48_16)v.vector[0] << 16)/v.vector[2];
|
||||||
x1 = div >> 16;
|
x1 = div >> 16;
|
||||||
|
@ -3055,7 +3055,7 @@ static void fbFetchTransformed(PicturePtr pict, int x, int y, int width, CARD32
|
||||||
CARD32 tl, tr, bl, br, r;
|
CARD32 tl, tr, bl, br, r;
|
||||||
CARD32 ft, fb;
|
CARD32 ft, fb;
|
||||||
|
|
||||||
if (projective) {
|
if (!affine) {
|
||||||
xFixed_48_16 div;
|
xFixed_48_16 div;
|
||||||
div = ((xFixed_48_16)v.vector[0] << 16)/v.vector[2];
|
div = ((xFixed_48_16)v.vector[0] << 16)/v.vector[2];
|
||||||
x1 = div >> 16;
|
x1 = div >> 16;
|
||||||
|
@ -3124,7 +3124,7 @@ static void fbFetchTransformed(PicturePtr pict, int x, int y, int width, CARD32
|
||||||
Bool x1_out, x2_out, y1_out, y2_out;
|
Bool x1_out, x2_out, y1_out, y2_out;
|
||||||
CARD32 ft, fb;
|
CARD32 ft, fb;
|
||||||
|
|
||||||
if (projective) {
|
if (!affine) {
|
||||||
xFixed_48_16 div;
|
xFixed_48_16 div;
|
||||||
div = ((xFixed_48_16)v.vector[0] << 16)/v.vector[2];
|
div = ((xFixed_48_16)v.vector[0] << 16)/v.vector[2];
|
||||||
x1 = div >> 16;
|
x1 = div >> 16;
|
||||||
|
@ -3186,7 +3186,7 @@ static void fbFetchTransformed(PicturePtr pict, int x, int y, int width, CARD32
|
||||||
CARD32 tl, tr, bl, br, r;
|
CARD32 tl, tr, bl, br, r;
|
||||||
CARD32 ft, fb;
|
CARD32 ft, fb;
|
||||||
|
|
||||||
if (projective) {
|
if (!affine) {
|
||||||
xFixed_48_16 div;
|
xFixed_48_16 div;
|
||||||
div = ((xFixed_48_16)v.vector[0] << 16)/v.vector[2];
|
div = ((xFixed_48_16)v.vector[0] << 16)/v.vector[2];
|
||||||
x1 = div >> 16;
|
x1 = div >> 16;
|
||||||
|
@ -3254,7 +3254,7 @@ static void fbFetchTransformed(PicturePtr pict, int x, int y, int width, CARD32
|
||||||
INT32 srtot, sgtot, sbtot, satot;
|
INT32 srtot, sgtot, sbtot, satot;
|
||||||
xFixed *p = params;
|
xFixed *p = params;
|
||||||
|
|
||||||
if (projective) {
|
if (!affine) {
|
||||||
xFixed_48_16 tmp;
|
xFixed_48_16 tmp;
|
||||||
tmp = ((xFixed_48_16)v.vector[0] << 16)/v.vector[2] - xoff;
|
tmp = ((xFixed_48_16)v.vector[0] << 16)/v.vector[2] - xoff;
|
||||||
x1 = xFixedToInt(tmp);
|
x1 = xFixedToInt(tmp);
|
||||||
|
|
Loading…
Reference in New Issue