Contents of /trunk/xorg-old/patches-6.8.2-r10/2000_all_6.8.0-fb-convert-rgb-to-bgr-when-needed.patch
Parent Directory | Revision Log
Revision 167 -
(show annotations)
(download)
Tue May 8 20:58:51 2007 UTC (17 years, 4 months ago) by niro
File size: 4073 byte(s)
Tue May 8 20:58:51 2007 UTC (17 years, 4 months ago) by niro
File size: 4073 byte(s)
-import
1 | https://bugs.freedesktop.org/show_bug.cgi?id=1895 |
2 | |
3 | $Id: 2000_all_6.8.0-fb-convert-rgb-to-bgr-when-needed.patch,v 1.1 2007-05-08 20:58:49 niro Exp $ |
4 | |
5 | Fix up case where we need to convert RGB->BGR (fixes SDL under sunffb, for |
6 | example). |
7 | |
8 | This patch by David S. Miller via Ben Collins. |
9 | Forward-ported by Fabio M. Di Nitto. |
10 | |
11 | Not submitted to XFree86. |
12 | |
13 | diff -ruN xc-old/programs/Xserver/fb/fbmmx.c xc/programs/Xserver/fb/fbmmx.c |
14 | --- xc-old/programs/Xserver/fb/fbmmx.c 2004-07-22 19:24:50.000000000 +0000 |
15 | +++ xc/programs/Xserver/fb/fbmmx.c 2004-10-20 12:57:11.435058096 +0000 |
16 | @@ -375,7 +375,7 @@ |
17 | |
18 | CHECKPOINT(); |
19 | |
20 | - fbComposeGetSolid(pSrc, src); |
21 | + fbComposeGetSolid(pSrc, src, pDst->format); |
22 | |
23 | if (src >> 24 == 0) |
24 | return; |
25 | @@ -453,7 +453,7 @@ |
26 | |
27 | CHECKPOINT(); |
28 | |
29 | - fbComposeGetSolid(pSrc, src); |
30 | + fbComposeGetSolid(pSrc, src, pDst->format); |
31 | |
32 | if (src >> 24 == 0) |
33 | return; |
34 | @@ -538,7 +538,7 @@ |
35 | |
36 | CHECKPOINT(); |
37 | |
38 | - fbComposeGetSolid(pSrc, src); |
39 | + fbComposeGetSolid(pSrc, src, pDst->format); |
40 | |
41 | srca = src >> 24; |
42 | if (srca == 0) |
43 | @@ -643,7 +643,7 @@ |
44 | |
45 | CHECKPOINT(); |
46 | |
47 | - fbComposeGetSolid(pSrc, src); |
48 | + fbComposeGetSolid(pSrc, src, pDst->format); |
49 | |
50 | srca = src >> 24; |
51 | if (srca == 0) |
52 | @@ -759,7 +759,7 @@ |
53 | |
54 | CHECKPOINT(); |
55 | |
56 | - fbComposeGetSolid(pSrc, src); |
57 | + fbComposeGetSolid(pSrc, src, pDst->format); |
58 | |
59 | srca = src >> 24; |
60 | if (srca == 0) |
61 | @@ -1100,7 +1100,7 @@ |
62 | |
63 | CHECKPOINT(); |
64 | |
65 | - fbComposeGetSolid(pSrc, src); |
66 | + fbComposeGetSolid(pSrc, src, pDst->format); |
67 | |
68 | srca = src >> 24; |
69 | if (srca == 0) |
70 | diff -ruN xc-old/programs/Xserver/fb/fbpict.c xc/programs/Xserver/fb/fbpict.c |
71 | --- xc-old/programs/Xserver/fb/fbpict.c 2004-08-06 23:42:10.000000000 +0000 |
72 | +++ xc/programs/Xserver/fb/fbpict.c 2004-10-20 12:56:31.282162264 +0000 |
73 | @@ -99,7 +99,7 @@ |
74 | FbStride dstStride, maskStride; |
75 | CARD16 w; |
76 | |
77 | - fbComposeGetSolid(pSrc, src); |
78 | + fbComposeGetSolid(pSrc, src, pDst->format); |
79 | |
80 | dstMask = FbFullMask (pDst->pDrawable->depth); |
81 | srca = src >> 24; |
82 | @@ -158,7 +158,7 @@ |
83 | CARD16 w; |
84 | CARD32 m, n, o, p; |
85 | |
86 | - fbComposeGetSolid(pSrc, src); |
87 | + fbComposeGetSolid(pSrc, src, pDst->format); |
88 | |
89 | dstMask = FbFullMask (pDst->pDrawable->depth); |
90 | srca = src >> 24; |
91 | @@ -231,7 +231,7 @@ |
92 | FbStride dstStride, maskStride; |
93 | CARD16 w; |
94 | |
95 | - fbComposeGetSolid(pSrc, src); |
96 | + fbComposeGetSolid(pSrc, src, pDst->format); |
97 | |
98 | srca = src >> 24; |
99 | if (src == 0) |
100 | @@ -293,7 +293,7 @@ |
101 | FbStride dstStride, maskStride; |
102 | CARD16 w; |
103 | |
104 | - fbComposeGetSolid(pSrc, src); |
105 | + fbComposeGetSolid(pSrc, src, pDst->format); |
106 | |
107 | srca = src >> 24; |
108 | if (src == 0) |
109 | @@ -358,7 +358,7 @@ |
110 | CARD16 w; |
111 | CARD32 m, n, o; |
112 | |
113 | - fbComposeGetSolid(pSrc, src); |
114 | + fbComposeGetSolid(pSrc, src, pDst->format); |
115 | |
116 | srca = src >> 24; |
117 | if (src == 0) |
118 | @@ -763,7 +763,7 @@ |
119 | int maskXoff, maskYoff; |
120 | FbBits src; |
121 | |
122 | - fbComposeGetSolid(pSrc, src); |
123 | + fbComposeGetSolid(pSrc, src, pDst->format); |
124 | |
125 | if ((src & 0xff000000) != 0xff000000) |
126 | { |
127 | diff -ruN xc-old/programs/Xserver/fb/fbpict.h xc/programs/Xserver/fb/fbpict.h |
128 | --- xc-old/programs/Xserver/fb/fbpict.h 2004-08-13 08:16:14.000000000 +0000 |
129 | +++ xc/programs/Xserver/fb/fbpict.h 2004-10-20 12:55:00.103023600 +0000 |
130 | @@ -72,7 +72,7 @@ |
131 | CARD16 width, |
132 | CARD16 height); |
133 | |
134 | -#define fbComposeGetSolid(pict, bits) { \ |
135 | +#define fbComposeGetSolid(pict, bits, fmt) { \ |
136 | FbBits *__bits__; \ |
137 | FbStride __stride__; \ |
138 | int __bpp__; \ |
139 | @@ -93,6 +93,14 @@ |
140 | default: \ |
141 | return; \ |
142 | } \ |
143 | + /* If necessary, convert RGB <--> BGR. */ \ |
144 | + if (PICT_FORMAT_TYPE((pict)->format) != PICT_FORMAT_TYPE(fmt)) \ |
145 | + { \ |
146 | + (bits) = (((bits) & 0xff000000) | \ |
147 | + (((bits) & 0x00ff0000) >> 16) | \ |
148 | + (((bits) & 0x0000ff00) >> 0) | \ |
149 | + (((bits) & 0x000000ff) << 16)); \ |
150 | + } \ |
151 | /* manage missing src alpha */ \ |
152 | if ((pict)->pFormat->direct.alphaMask == 0) \ |
153 | (bits) |= 0xff000000; \ |