diff options
Diffstat (limited to 'x11-servers/xorg-server/files/patch-fb-renderfixes.diff')
-rw-r--r-- | x11-servers/xorg-server/files/patch-fb-renderfixes.diff | 320 |
1 files changed, 320 insertions, 0 deletions
diff --git a/x11-servers/xorg-server/files/patch-fb-renderfixes.diff b/x11-servers/xorg-server/files/patch-fb-renderfixes.diff new file mode 100644 index 000000000000..6adf66689453 --- /dev/null +++ b/x11-servers/xorg-server/files/patch-fb-renderfixes.diff @@ -0,0 +1,320 @@ +Index: programs/Xserver/fb/fbcompose.c +=================================================================== +RCS file: /cvs/xorg/xc/programs/Xserver/fb/fbcompose.c,v +retrieving revision 1.2 +diff -u -r1.2 fbcompose.c +--- programs/Xserver/fb/fbcompose.c 23 Apr 2004 19:05:14 -0000 1.2 ++++ programs/Xserver/fb/fbcompose.c 11 May 2004 22:58:12 -0000 +@@ -191,15 +191,15 @@ + a = (*msk->fetcha) (msk); + if (!a) + return 0; +- +- x = (*src->fetcha) (src); +- if (a == 0xffffffff) +- return x; +- +- m = FbInC(x,0,a,t); +- n = FbInC(x,8,a,t); +- o = FbInC(x,16,a,t); +- p = FbInC(x,24,a,t); ++ ++ x = (*src->fetch) (src) >> 24; ++ if (x == 0xff) ++ return a; ++ ++ m = FbInU(a,0,x,t); ++ n = FbInU(a,8,x,t); ++ o = FbInU(a,16,x,t); ++ p = FbInU(a,24,x,t); + return m|n|o|p; + } + +@@ -608,7 +608,7 @@ + cs = fbCombineMaskC (src, msk); + d = (*dst->fetch) (dst); + s = cs.value; +- ad = cs.alpha; ++ ad = ~cs.alpha; + as = d >> 24; + m = FbGen(s,d,0,as,FbGet8(ad,0),t,u,v); + n = FbGen(s,d,8,as,FbGet8(ad,8),t,u,v); +@@ -698,10 +698,10 @@ + s = cs.value; + ad = ~cs.alpha; + as = ~d >> 24; +- m = FbGen(s,d,0,as,ad,t,u,v); +- n = FbGen(s,d,8,as,ad,t,u,v); +- o = FbGen(s,d,16,as,ad,t,u,v); +- p = FbGen(s,d,24,as,ad,t,u,v); ++ m = FbGen(s,d,0,as,FbGet8(ad,0),t,u,v); ++ n = FbGen(s,d,8,as,FbGet8(ad,8),t,u,v); ++ o = FbGen(s,d,16,as,FbGet8(ad,16),t,u,v); ++ p = FbGen(s,d,24,as,FbGet8(ad,24),t,u,v); + (*dst->store) (dst, m|n|o|p); + } + +@@ -763,10 +763,9 @@ + FbCompositeOperand *dst) + { + CARD32 s = fbCombineMaskU (src, msk), d; +-#if 0 + CARD16 sa, da; + CARD16 ad, as; +- CARD16 t; ++ CARD16 t, u, v; + CARD32 m,n,o,p; + + d = (*dst->fetch) (dst); +@@ -789,16 +788,6 @@ + p = FbGen(s,d,24,as,ad,t,u,v); + } + (*dst->store) (dst, m|n|o|p); +-#else +- if ((s >> 24) == 0xff) +- (*dst->store) (dst, s); +- else +- { +- d = (*dst->fetch) (dst); +- if ((s >> 24) > (d >> 24)) +- (*dst->store) (dst, s); +- } +-#endif + } + + void +@@ -831,7 +820,7 @@ + else + n = FbGen (s, d, 8, (da << 8) / sg, 0xff, t, u, v); + +- if (sr < da) ++ if (sr <= da) + o = FbAdd(s,d,16,t); + else + o = FbGen (s, d, 16, (da << 8) / sr, 0xff, t, u, v); +@@ -972,8 +961,8 @@ + FbCompSrc cs; + CARD32 s, d; + CARD32 m,n,o,p; +- CARD32 Fa; +- CARD16 Fb, t, u, v; ++ CARD32 Fa, Fb; ++ CARD16 t, u, v; + CARD32 sa; + CARD8 da; + +@@ -996,10 +985,10 @@ + Fa = m|n|o|p; + break; + case CombineAIn: +- m = fbCombineDisjointOutPart ((CARD8) (sa >> 0), da); +- n = fbCombineDisjointOutPart ((CARD8) (sa >> 8), da) << 8; +- o = fbCombineDisjointOutPart ((CARD8) (sa >> 16), da) << 16; +- p = fbCombineDisjointOutPart ((CARD8) (sa >> 24), da) << 24; ++ m = fbCombineDisjointInPart ((CARD8) (sa >> 0), da); ++ n = fbCombineDisjointInPart ((CARD8) (sa >> 8), da) << 8; ++ o = fbCombineDisjointInPart ((CARD8) (sa >> 16), da) << 16; ++ p = fbCombineDisjointInPart ((CARD8) (sa >> 24), da) << 24; + Fa = m|n|o|p; + break; + case CombineA: +@@ -1012,19 +1001,27 @@ + Fb = 0; + break; + case CombineBOut: +- Fb = fbCombineDisjointOutPart (da, sa); ++ m = fbCombineDisjointOutPart (da, (CARD8) (sa >> 0)); ++ n = fbCombineDisjointOutPart (da, (CARD8) (sa >> 8)) << 8; ++ o = fbCombineDisjointOutPart (da, (CARD8) (sa >> 16)) << 16; ++ p = fbCombineDisjointOutPart (da, (CARD8) (sa >> 24)) << 24; ++ Fb = m|n|o|p; + break; + case CombineBIn: +- Fb = fbCombineDisjointInPart (da, sa); ++ m = fbCombineDisjointInPart (da, (CARD8) (sa >> 0)); ++ n = fbCombineDisjointInPart (da, (CARD8) (sa >> 8)) << 8; ++ o = fbCombineDisjointInPart (da, (CARD8) (sa >> 16)) << 16; ++ p = fbCombineDisjointInPart (da, (CARD8) (sa >> 24)) << 24; ++ Fb = m|n|o|p; + break; + case CombineB: +- Fb = 0xff; ++ Fb = 0xffffffff; + break; + } +- m = FbGen (s,d,0,FbGet8(Fa,0),Fb,t,u,v); +- n = FbGen (s,d,8,FbGet8(Fa,8),Fb,t,u,v); +- o = FbGen (s,d,16,FbGet8(Fa,16),Fb,t,u,v); +- p = FbGen (s,d,24,FbGet8(Fa,24),Fb,t,u,v); ++ m = FbGen (s,d,0,FbGet8(Fa,0),FbGet8(Fb,0),t,u,v); ++ n = FbGen (s,d,8,FbGet8(Fa,8),FbGet8(Fb,8),t,u,v); ++ o = FbGen (s,d,16,FbGet8(Fa,16),FbGet8(Fb,16),t,u,v); ++ p = FbGen (s,d,24,FbGet8(Fa,24),FbGet8(Fb,24),t,u,v); + s = m|n|o|p; + (*dst->store) (dst, s); + } +@@ -1065,21 +1062,6 @@ + fbCombineDisjointGeneralC (src, msk, dst, CombineAOver); + } + +-void +-fbCombineDisjointOverReverseU (FbCompositeOperand *src, +- FbCompositeOperand *msk, +- FbCompositeOperand *dst) +-{ +- fbCombineDisjointGeneralU (src, msk, dst, CombineBOver); +-} +- +-void +-fbCombineDisjointOverReverseC (FbCompositeOperand *src, +- FbCompositeOperand *msk, +- FbCompositeOperand *dst) +-{ +- fbCombineDisjointGeneralC (src, msk, dst, CombineBOver); +-} + + void + fbCombineDisjointInU (FbCompositeOperand *src, +@@ -1281,8 +1263,8 @@ + FbCompSrc cs; + CARD32 s, d; + CARD32 m,n,o,p; +- CARD32 Fa; +- CARD16 Fb, t, u, v; ++ CARD32 Fa, Fb; ++ CARD16 t, u, v; + CARD32 sa; + CARD8 da; + +@@ -1305,10 +1287,10 @@ + Fa = m|n|o|p; + break; + case CombineAIn: +- m = fbCombineConjointOutPart ((CARD8) (sa >> 0), da); +- n = fbCombineConjointOutPart ((CARD8) (sa >> 8), da) << 8; +- o = fbCombineConjointOutPart ((CARD8) (sa >> 16), da) << 16; +- p = fbCombineConjointOutPart ((CARD8) (sa >> 24), da) << 24; ++ m = fbCombineConjointInPart ((CARD8) (sa >> 0), da); ++ n = fbCombineConjointInPart ((CARD8) (sa >> 8), da) << 8; ++ o = fbCombineConjointInPart ((CARD8) (sa >> 16), da) << 16; ++ p = fbCombineConjointInPart ((CARD8) (sa >> 24), da) << 24; + Fa = m|n|o|p; + break; + case CombineA: +@@ -1321,19 +1303,27 @@ + Fb = 0; + break; + case CombineBOut: +- Fb = fbCombineConjointOutPart (da, sa); ++ m = fbCombineConjointOutPart (da, (CARD8) (sa >> 0)); ++ n = fbCombineConjointOutPart (da, (CARD8) (sa >> 8)) << 8; ++ o = fbCombineConjointOutPart (da, (CARD8) (sa >> 16)) << 16; ++ p = fbCombineConjointOutPart (da, (CARD8) (sa >> 24)) << 24; ++ Fb = m|n|o|p; + break; + case CombineBIn: +- Fb = fbCombineConjointInPart (da, sa); ++ m = fbCombineConjointInPart (da, (CARD8) (sa >> 0)); ++ n = fbCombineConjointInPart (da, (CARD8) (sa >> 8)) << 8; ++ o = fbCombineConjointInPart (da, (CARD8) (sa >> 16)) << 16; ++ p = fbCombineConjointInPart (da, (CARD8) (sa >> 24)) << 24; ++ Fb = m|n|o|p; + break; + case CombineB: +- Fb = 0xff; ++ Fb = 0xffffffff; + break; + } +- m = FbGen (s,d,0,FbGet8(Fa,0),Fb,t,u,v); +- n = FbGen (s,d,8,FbGet8(Fa,8),Fb,t,u,v); +- o = FbGen (s,d,16,FbGet8(Fa,16),Fb,t,u,v); +- p = FbGen (s,d,24,FbGet8(Fa,24),Fb,t,u,v); ++ m = FbGen (s,d,0,FbGet8(Fa,0),FbGet8(Fb,0),t,u,v); ++ n = FbGen (s,d,8,FbGet8(Fa,8),FbGet8(Fb,8),t,u,v); ++ o = FbGen (s,d,16,FbGet8(Fa,16),FbGet8(Fb,16),t,u,v); ++ p = FbGen (s,d,24,FbGet8(Fa,24),FbGet8(Fb,24),t,u,v); + s = m|n|o|p; + (*dst->store) (dst, s); + } +@@ -1519,14 +1509,14 @@ + fbCombineAtopReverseU, + fbCombineXorU, + fbCombineAddU, +- fbCombineDisjointOverU, /* Saturate */ ++ fbCombineSaturateU, + 0, + 0, + fbCombineClear, + fbCombineSrcU, + fbCombineDst, + fbCombineDisjointOverU, +- fbCombineDisjointOverReverseU, ++ fbCombineSaturateU, /* DisjointOverReverse */ + fbCombineDisjointInU, + fbCombineDisjointInReverseU, + fbCombineDisjointOutU, +@@ -1566,14 +1556,14 @@ + fbCombineAtopReverseC, + fbCombineXorC, + fbCombineAddC, +- fbCombineDisjointOverC, /* Saturate */ ++ fbCombineSaturateC, + 0, + 0, + fbCombineClear, /* 0x10 */ + fbCombineSrcC, + fbCombineDst, + fbCombineDisjointOverC, +- fbCombineDisjointOverReverseC, ++ fbCombineSaturateC, /* DisjointOverReverse */ + fbCombineDisjointInC, + fbCombineDisjointInReverseC, + fbCombineDisjointOutC, +Index: programs/Xserver/fb/fbpict.c +=================================================================== +RCS file: /cvs/xorg/xc/programs/Xserver/fb/fbpict.c,v +retrieving revision 1.2 +diff -u -r1.2 fbpict.c +--- programs/Xserver/fb/fbpict.c 23 Apr 2004 19:05:14 -0000 1.2 ++++ programs/Xserver/fb/fbpict.c 12 May 2004 00:45:56 -0000 +@@ -1001,7 +1001,6 @@ + { + switch (pSrc->format) { + case PICT_a8r8g8b8: +- case PICT_x8r8g8b8: + switch (pDst->format) { + case PICT_a8r8g8b8: + case PICT_x8r8g8b8: +@@ -1016,7 +1015,6 @@ + } + break; + case PICT_a8b8g8r8: +- case PICT_x8b8g8r8: + switch (pDst->format) { + case PICT_a8b8g8r8: + case PICT_x8b8g8r8: +Index: programs/Xserver/fb/fbpict.h +=================================================================== +RCS file: /cvs/xorg/xc/programs/Xserver/fb/fbpict.h,v +retrieving revision 1.2 +diff -u -r1.2 fbpict.h +--- programs/Xserver/fb/fbpict.h 23 Apr 2004 19:05:14 -0000 1.2 ++++ programs/Xserver/fb/fbpict.h 11 May 2004 18:46:20 -0000 +@@ -333,15 +333,8 @@ + FbCompositeOperand *msk, + FbCompositeOperand *dst); + +-void +-fbCombineDisjointOverReverseU (FbCompositeOperand *src, +- FbCompositeOperand *msk, +- FbCompositeOperand *dst); +- +-void +-fbCombineDisjointOverReverseC (FbCompositeOperand *src, +- FbCompositeOperand *msk, +- FbCompositeOperand *dst); ++#define fbCombineDisjointOverReverseU fbCombineSaturateU ++#define fbCombineDisjointOverReverseC fbCombineSaturateC + + void + fbCombineDisjointInU (FbCompositeOperand *src, |