comparison dmblitfunc.h @ 85:c257d73cf790

Rename some macros.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 02 Oct 2012 10:23:42 +0300
parents ba1987562a73
children e5796ffce131
comparison
equal deleted inserted replaced
84:35db15881923 85:c257d73cf790
7 7
8 // ======================================================================= 8 // =======================================================================
9 // DMD_NONE 9 // DMD_NONE
10 // ======================================================================= 10 // =======================================================================
11 11
12 #define DM_SCALED_NAME dmScaledBlitSurface8to8 12 #define DM_BLITFUNC_NAME dmScaledBlitSurface8to8
13 #define DM_SCALED_SRC_BYTES 1 13 #define DM_BLITFUNC_SRC_BYTES 1
14 #define DM_SCALED_DST_BYTES 1 14 #define DM_BLITFUNC_DST_BYTES 1
15 #define DM_SCALED_SRC_TYPE Uint8 15 #define DM_BLITFUNC_SRC_TYPE Uint8
16 #define DM_SCALED_DST_TYPE Uint8 16 #define DM_BLITFUNC_DST_TYPE Uint8
17 17
18 #define DM_SCALED_INNER *dp++ = sp[FP_GETH(xv)]; 18 #define DM_BLITFUNC_INNER *dp++ = sp[FP_GETH(xv)];
19 19
20 #include "dmscaledblit.h" 20 #include "dmscaledblit.h"
21 21
22 // ----------------------------------------------------------------------- 22 // -----------------------------------------------------------------------
23 23
24 #define DM_SCALED_NAME dmScaledBlitSurface8to32 24 #define DM_BLITFUNC_NAME dmScaledBlitSurface8to32
25 #define DM_SCALED_SRC_BYTES 1 25 #define DM_BLITFUNC_SRC_BYTES 1
26 #define DM_SCALED_DST_BYTES 4 26 #define DM_BLITFUNC_DST_BYTES 4
27 #define DM_SCALED_SRC_TYPE Uint8 27 #define DM_BLITFUNC_SRC_TYPE Uint8
28 #define DM_SCALED_DST_TYPE Uint32 28 #define DM_BLITFUNC_DST_TYPE Uint32
29 29
30 #define DM_SCALED_VARS const Uint32 *pal; 30 #define DM_BLITFUNC_VARS const Uint32 *pal;
31 #define DM_SCALED_INIT \ 31 #define DM_BLITFUNC_INIT \
32 if (src->format->palette == NULL || src->format->palette->ncolors < 256) return -2; \ 32 if (src->format->palette == NULL || src->format->palette->ncolors < 256) return -2; \
33 pal = (Uint32 *) src->format->palette->colors; 33 pal = (Uint32 *) src->format->palette->colors;
34 34
35 #define DM_SCALED_INNER *dp++ = pal[sp[FP_GETH(xv)]]; 35 #define DM_BLITFUNC_INNER *dp++ = pal[sp[FP_GETH(xv)]];
36 36
37 #include "dmscaledblit.h" 37 #include "dmscaledblit.h"
38 38
39 // ----------------------------------------------------------------------- 39 // -----------------------------------------------------------------------
40 40
41 #define DM_SCALED_NAME dmScaledBlitSurface32to32 41 #define DM_BLITFUNC_NAME dmScaledBlitSurface32to32
42 #define DM_SCALED_SRC_BYTES 4 42 #define DM_BLITFUNC_SRC_BYTES 4
43 #define DM_SCALED_DST_BYTES 4 43 #define DM_BLITFUNC_DST_BYTES 4
44 #define DM_SCALED_SRC_TYPE Uint32 44 #define DM_BLITFUNC_SRC_TYPE Uint32
45 #define DM_SCALED_DST_TYPE Uint32 45 #define DM_BLITFUNC_DST_TYPE Uint32
46 #define DM_SCALED_INIT 46 #define DM_BLITFUNC_INIT
47 #define DM_SCALED_INNER *dp++ = sp[FP_GETH(xv)]; 47 #define DM_BLITFUNC_INNER *dp++ = sp[FP_GETH(xv)];
48 48
49 #include "dmscaledblit.h" 49 #include "dmscaledblit.h"
50 50
51 51
52 // ======================================================================= 52 // =======================================================================
53 // DMD_TRANSPARENT 53 // DMD_TRANSPARENT
54 // ======================================================================= 54 // =======================================================================
55 55
56 #define DM_SCALED_NAME dmScaledBlitSurface8to8Transparent 56 #define DM_BLITFUNC_NAME dmScaledBlitSurface8to8Transparent
57 #define DM_SCALED_SRC_BYTES 1 57 #define DM_BLITFUNC_SRC_BYTES 1
58 #define DM_SCALED_DST_BYTES 1 58 #define DM_BLITFUNC_DST_BYTES 1
59 #define DM_SCALED_SRC_TYPE Uint8 59 #define DM_BLITFUNC_SRC_TYPE Uint8
60 #define DM_SCALED_DST_TYPE Uint8 60 #define DM_BLITFUNC_DST_TYPE Uint8
61 61
62 #define DM_SCALED_INNER \ 62 #define DM_BLITFUNC_INNER \
63 *dp = sp[FP_GETH(xv)] ? sp[FP_GETH(xv)] : *dp; dp++; 63 *dp = sp[FP_GETH(xv)] ? sp[FP_GETH(xv)] : *dp; dp++;
64 64
65 #include "dmscaledblit.h" 65 #include "dmscaledblit.h"
66 66
67 // ----------------------------------------------------------------------- 67 // -----------------------------------------------------------------------
68 68
69 #define DM_SCALED_NAME dmScaledBlitSurface8to32Transparent 69 #define DM_BLITFUNC_NAME dmScaledBlitSurface8to32Transparent
70 #define DM_SCALED_SRC_BYTES 1 70 #define DM_BLITFUNC_SRC_BYTES 1
71 #define DM_SCALED_DST_BYTES 4 71 #define DM_BLITFUNC_DST_BYTES 4
72 #define DM_SCALED_SRC_TYPE Uint8 72 #define DM_BLITFUNC_SRC_TYPE Uint8
73 #define DM_SCALED_DST_TYPE DMRGBA32 73 #define DM_BLITFUNC_DST_TYPE DMRGBA32
74 #define DM_SCALED_VARS const DMRGBA32 *pal; 74 #define DM_BLITFUNC_VARS const DMRGBA32 *pal;
75 #define DM_SCALED_INIT \ 75 #define DM_BLITFUNC_INIT \
76 if (src->format->palette == NULL || src->format->palette->ncolors < 256) return -2; \ 76 if (src->format->palette == NULL || src->format->palette->ncolors < 256) return -2; \
77 pal = (DMRGBA32 *) src->format->palette->colors; 77 pal = (DMRGBA32 *) src->format->palette->colors;
78 78
79 #define DM_SCALED_INNER \ 79 #define DM_BLITFUNC_INNER \
80 const DMRGBA32 q = pal[sp[FP_GETH(xv)]]; \ 80 const DMRGBA32 q = pal[sp[FP_GETH(xv)]]; \
81 dp->r += ((q.r - dp->r) * q.a) >> 8; \ 81 dp->r += ((q.r - dp->r) * q.a) >> 8; \
82 dp->g += ((q.g - dp->g) * q.a) >> 8; \ 82 dp->g += ((q.g - dp->g) * q.a) >> 8; \
83 dp->b += ((q.b - dp->b) * q.a) >> 8; \ 83 dp->b += ((q.b - dp->b) * q.a) >> 8; \
84 dp->a = q.a; \ 84 dp->a = q.a; \
87 #include "dmscaledblit.h" 87 #include "dmscaledblit.h"
88 88
89 89
90 // ----------------------------------------------------------------------- 90 // -----------------------------------------------------------------------
91 91
92 #define DM_SCALED_NAME dmScaledBlitSurface32to32Transparent 92 #define DM_BLITFUNC_NAME dmScaledBlitSurface32to32Transparent
93 #define DM_SCALED_SRC_BYTES 4 93 #define DM_BLITFUNC_SRC_BYTES 4
94 #define DM_SCALED_DST_BYTES 4 94 #define DM_BLITFUNC_DST_BYTES 4
95 95
96 #ifdef DM_USE_SIMD 96 #ifdef DM_USE_SIMD
97 #define DM_SCALED_VARS \ 97 #define DM_BLITFUNC_VARS \
98 const Uint32 qpdmask = 0xff000000; \ 98 const Uint32 qpdmask = 0xff000000; \
99 const Uint64 qpdrm = 0xff00ff00ff00ffULL; 99 const Uint64 qpdrm = 0xff00ff00ff00ffULL;
100 100
101 #define DM_SCALED_SRC_TYPE Uint32 101 #define DM_BLITFUNC_SRC_TYPE Uint32
102 #define DM_SCALED_DST_TYPE Uint32 102 #define DM_BLITFUNC_DST_TYPE Uint32
103 #define DM_SCALED_INNER \ 103 #define DM_BLITFUNC_INNER \
104 asm( \ 104 asm( \
105 "movd %2, %%mm1\n" \ 105 "movd %2, %%mm1\n" \
106 \ 106 \
107 "movd %3, %%mm2\n" \ 107 "movd %3, %%mm2\n" \
108 "movq %%mm1, %%mm5\n" \ 108 "movq %%mm1, %%mm5\n" \
125 "movd %%mm1, %0\n" \ 125 "movd %%mm1, %0\n" \
126 : "=m" (*dp) \ 126 : "=m" (*dp) \
127 : "m" (*dp), "m" (sp[FP_GETH(xv)]), "m" (qpdmask), "m" (qpdrm) \ 127 : "m" (*dp), "m" (sp[FP_GETH(xv)]), "m" (qpdmask), "m" (qpdrm) \
128 : "memory", "%mm1", "%mm2", "%mm3", "%mm4", "%mm5" ); dp++; 128 : "memory", "%mm1", "%mm2", "%mm3", "%mm4", "%mm5" ); dp++;
129 129
130 #define DM_SCALED_FINISH asm("emms\n"); 130 #define DM_BLITFUNC_FINISH asm("emms\n");
131 131
132 #else 132 #else
133 133
134 #define DM_SCALED_SRC_TYPE DMRGBA32 134 #define DM_BLITFUNC_SRC_TYPE DMRGBA32
135 #define DM_SCALED_DST_TYPE DMRGBA32 135 #define DM_BLITFUNC_DST_TYPE DMRGBA32
136 #define DM_SCALED_INNER \ 136 #define DM_BLITFUNC_INNER \
137 const DMRGBA32 q = sp[FP_GETH(xv)]; \ 137 const DMRGBA32 q = sp[FP_GETH(xv)]; \
138 dp->r += ((q.r - dp->r) * q.a) >> 8; \ 138 dp->r += ((q.r - dp->r) * q.a) >> 8; \
139 dp->g += ((q.g - dp->g) * q.a) >> 8; \ 139 dp->g += ((q.g - dp->g) * q.a) >> 8; \
140 dp->b += ((q.b - dp->b) * q.a) >> 8; \ 140 dp->b += ((q.b - dp->b) * q.a) >> 8; \
141 dp->a = q.a; \ 141 dp->a = q.a; \
144 144
145 #include "dmscaledblit.h" 145 #include "dmscaledblit.h"
146 146
147 // ----------------------------------------------------------------------- 147 // -----------------------------------------------------------------------
148 148
149 #define DM_SCALED_NAME dmScaledBlitSurface32to32TransparentX 149 #define DM_BLITFUNC_NAME dmScaledBlitSurface32to32TransparentX
150 #define DM_SCALED_SRC_BYTES 4 150 #define DM_BLITFUNC_SRC_BYTES 4
151 #define DM_SCALED_DST_BYTES 4 151 #define DM_BLITFUNC_DST_BYTES 4
152 #define DM_SCALED_SRC_TYPE DMRGBA32 152 #define DM_BLITFUNC_SRC_TYPE DMRGBA32
153 #define DM_SCALED_DST_TYPE DMRGBA32 153 #define DM_BLITFUNC_DST_TYPE DMRGBA32
154 #define DM_SCALED_INIT 154 #define DM_BLITFUNC_INIT
155 155
156 #define DM_SCALED_INNER \ 156 #define DM_BLITFUNC_INNER \
157 const DMRGBA32 q = sp[FP_GETH(xv)]; \ 157 const DMRGBA32 q = sp[FP_GETH(xv)]; \
158 dp->r = (q.r * q.a + dp->r * dp->a) >> 8; \ 158 dp->r = (q.r * q.a + dp->r * dp->a) >> 8; \
159 dp->g = (q.g * q.a + dp->g * dp->a) >> 8; \ 159 dp->g = (q.g * q.a + dp->g * dp->a) >> 8; \
160 dp->b = (q.b * q.a + dp->b * dp->a) >> 8; \ 160 dp->b = (q.b * q.a + dp->b * dp->a) >> 8; \
161 dp->a = q.a ? q.a : dp->a; \ 161 dp->a = q.a ? q.a : dp->a; \
164 #include "dmscaledblit.h" 164 #include "dmscaledblit.h"
165 165
166 166
167 // ----------------------------------------------------------------------- 167 // -----------------------------------------------------------------------
168 168
169 #define DM_SCALED_NAME dmScaledBlitSurface32to32TransparentGA 169 #define DM_BLITFUNC_NAME dmScaledBlitSurface32to32TransparentGA
170 #define DM_SCALED_SRC_BYTES 4 170 #define DM_BLITFUNC_SRC_BYTES 4
171 #define DM_SCALED_DST_BYTES 4 171 #define DM_BLITFUNC_DST_BYTES 4
172 #define DM_SCALED_ARGS , Uint32 alpha 172 #define DM_BLITFUNC_ARGS , Uint32 alpha
173 173
174 #ifdef DM_USE_SIMD 174 #ifdef DM_USE_SIMD
175 #define DM_SCALED_VARS \ 175 #define DM_BLITFUNC_VARS \
176 const Uint64 qpdrm = 0xff00ff00ff00ffULL; 176 const Uint64 qpdrm = 0xff00ff00ff00ffULL;
177 177
178 #define DM_SCALED_SRC_TYPE Uint32 178 #define DM_BLITFUNC_SRC_TYPE Uint32
179 #define DM_SCALED_DST_TYPE Uint32 179 #define DM_BLITFUNC_DST_TYPE Uint32
180 #define DM_SCALED_INNER_INIT \ 180 #define DM_BLITFUNC_INNER_INIT \
181 asm( \ 181 asm( \
182 "movd %0, %%mm4\n" \ 182 "movd %0, %%mm4\n" \
183 "punpcklwd %%mm4, %%mm4\n" \ 183 "punpcklwd %%mm4, %%mm4\n" \
184 "punpckldq %%mm4, %%mm4\n" \ 184 "punpckldq %%mm4, %%mm4\n" \
185 : \ 185 : \
186 : "m" (alpha) \ 186 : "m" (alpha) \
187 : "%mm4" ); 187 : "%mm4" );
188 188
189 #define DM_SCALED_INNER \ 189 #define DM_BLITFUNC_INNER \
190 asm( \ 190 asm( \
191 "movd %2, %%mm1\n" \ 191 "movd %2, %%mm1\n" \
192 "pxor %%mm2, %%mm2\n" \ 192 "pxor %%mm2, %%mm2\n" \
193 "movd %1, %%mm3\n" \ 193 "movd %1, %%mm3\n" \
194 "punpcklbw %%mm2, %%mm1\n" \ 194 "punpcklbw %%mm2, %%mm1\n" \
203 "movd %%mm1, %0\n" \ 203 "movd %%mm1, %0\n" \
204 : "=m" (*dp) \ 204 : "=m" (*dp) \
205 : "m" (*dp), "m" (sp[FP_GETH(xv)]), "m" (qpdrm) \ 205 : "m" (*dp), "m" (sp[FP_GETH(xv)]), "m" (qpdrm) \
206 : "memory", "%mm1", "%mm2", "%mm3", "%mm4" ); dp++; 206 : "memory", "%mm1", "%mm2", "%mm3", "%mm4" ); dp++;
207 207
208 #define DM_SCALED_FINISH asm("emms\n"); 208 #define DM_BLITFUNC_FINISH asm("emms\n");
209 209
210 #else 210 #else
211 211
212 #define DM_SCALED_SRC_TYPE DMRGBA32 212 #define DM_BLITFUNC_SRC_TYPE DMRGBA32
213 #define DM_SCALED_DST_TYPE DMRGBA32 213 #define DM_BLITFUNC_DST_TYPE DMRGBA32
214 #define DM_SCALED_INNER \ 214 #define DM_BLITFUNC_INNER \
215 const DMRGBA32 q = sp[FP_GETH(xv)]; \ 215 const DMRGBA32 q = sp[FP_GETH(xv)]; \
216 dp->r += ((q.r - dp->r) * alpha) >> 8; \ 216 dp->r += ((q.r - dp->r) * alpha) >> 8; \
217 dp->g += ((q.g - dp->g) * alpha) >> 8; \ 217 dp->g += ((q.g - dp->g) * alpha) >> 8; \
218 dp->b += ((q.b - dp->b) * alpha) >> 8; \ 218 dp->b += ((q.b - dp->b) * alpha) >> 8; \
219 dp->a = alpha; \ 219 dp->a = alpha; \
224 224
225 // ======================================================================= 225 // =======================================================================
226 // DMD_SATURATE 226 // DMD_SATURATE
227 // ======================================================================= 227 // =======================================================================
228 228
229 #define DM_SCALED_NAME dmScaledBlitSurface8to8Saturate 229 #define DM_BLITFUNC_NAME dmScaledBlitSurface8to8Saturate
230 #define DM_SCALED_SRC_BYTES 1 230 #define DM_BLITFUNC_SRC_BYTES 1
231 #define DM_SCALED_DST_BYTES 1 231 #define DM_BLITFUNC_DST_BYTES 1
232 #define DM_SCALED_SRC_TYPE Uint8 232 #define DM_BLITFUNC_SRC_TYPE Uint8
233 #define DM_SCALED_DST_TYPE Uint8 233 #define DM_BLITFUNC_DST_TYPE Uint8
234 #define DM_SCALED_INNER \ 234 #define DM_BLITFUNC_INNER \
235 const Uint8 q = sp[FP_GETH(xv)] + *dp; \ 235 const Uint8 q = sp[FP_GETH(xv)] + *dp; \
236 *(dp++) = q < 256 ? q : 255; 236 *(dp++) = q < 256 ? q : 255;
237 237
238 #include "dmscaledblit.h" 238 #include "dmscaledblit.h"
239 239
240 // ----------------------------------------------------------------------- 240 // -----------------------------------------------------------------------
241 241
242 #define DM_SCALED_NAME dmScaledBlitSurface8to32Saturate 242 #define DM_BLITFUNC_NAME dmScaledBlitSurface8to32Saturate
243 #define DM_SCALED_SRC_BYTES 1 243 #define DM_BLITFUNC_SRC_BYTES 1
244 #define DM_SCALED_DST_BYTES 4 244 #define DM_BLITFUNC_DST_BYTES 4
245 #define DM_SCALED_SRC_TYPE Uint8 245 #define DM_BLITFUNC_SRC_TYPE Uint8
246 #define DM_SCALED_DST_TYPE DMRGBA32 246 #define DM_BLITFUNC_DST_TYPE DMRGBA32
247 #define DM_SCALED_VARS const DMRGBA32 *pal; 247 #define DM_BLITFUNC_VARS const DMRGBA32 *pal;
248 #define DM_SCALED_INIT \ 248 #define DM_BLITFUNC_INIT \
249 if (src->format->palette == NULL || src->format->palette->ncolors < 256) return -2; \ 249 if (src->format->palette == NULL || src->format->palette->ncolors < 256) return -2; \
250 pal = (DMRGBA32 *) src->format->palette->colors; 250 pal = (DMRGBA32 *) src->format->palette->colors;
251 251
252 #ifdef DM_USE_SIMD 252 #ifdef DM_USE_SIMD
253 #define DM_SCALED_INNER \ 253 #define DM_BLITFUNC_INNER \
254 asm("movd %2, %%mm1\n" \ 254 asm("movd %2, %%mm1\n" \
255 "movd %1, %%mm2\n" \ 255 "movd %1, %%mm2\n" \
256 "paddusb %%mm2, %%mm1\n" \ 256 "paddusb %%mm2, %%mm1\n" \
257 "movd %%mm1, %0\n" \ 257 "movd %%mm1, %0\n" \
258 : "=m" (*dp) \ 258 : "=m" (*dp) \
259 : "m" (*dp), "m" (pal[sp[FP_GETH(xv)]]) \ 259 : "m" (*dp), "m" (pal[sp[FP_GETH(xv)]]) \
260 : "memory", "%mm1", "%mm2" ); dp++; 260 : "memory", "%mm1", "%mm2" ); dp++;
261 261
262 #define DM_SCALED_FINISH asm("emms\n"); 262 #define DM_BLITFUNC_FINISH asm("emms\n");
263 #else 263 #else
264 #define DM_SCALED_INNER \ 264 #define DM_BLITFUNC_INNER \
265 const DMRGBA32 q = pal[sp[FP_GETH(xv)]]; \ 265 const DMRGBA32 q = pal[sp[FP_GETH(xv)]]; \
266 const int qr = dp->r + q.r, qg = dp->g + q.g, qb = dp->b + q.b; \ 266 const int qr = dp->r + q.r, qg = dp->g + q.g, qb = dp->b + q.b; \
267 dp->r = qr < 256 ? qr : 255; \ 267 dp->r = qr < 256 ? qr : 255; \
268 dp->g = qg < 256 ? qg : 255; \ 268 dp->g = qg < 256 ? qg : 255; \
269 dp->b = qb < 256 ? qb : 255; \ 269 dp->b = qb < 256 ? qb : 255; \
273 273
274 #include "dmscaledblit.h" 274 #include "dmscaledblit.h"
275 275
276 // ----------------------------------------------------------------------- 276 // -----------------------------------------------------------------------
277 277
278 #define DM_SCALED_NAME dmScaledBlitSurface32to32Saturate 278 #define DM_BLITFUNC_NAME dmScaledBlitSurface32to32Saturate
279 #define DM_SCALED_SRC_BYTES 4 279 #define DM_BLITFUNC_SRC_BYTES 4
280 #define DM_SCALED_DST_BYTES 4 280 #define DM_BLITFUNC_DST_BYTES 4
281 #define DM_SCALED_INIT 281 #define DM_BLITFUNC_INIT
282 282
283 #ifdef DM_USE_SIMD 283 #ifdef DM_USE_SIMD
284 #define DM_SCALED_SRC_TYPE Uint32 284 #define DM_BLITFUNC_SRC_TYPE Uint32
285 #define DM_SCALED_DST_TYPE Uint32 285 #define DM_BLITFUNC_DST_TYPE Uint32
286 #define DM_SCALED_INNER \ 286 #define DM_BLITFUNC_INNER \
287 asm("movd %2, %%mm1\n" \ 287 asm("movd %2, %%mm1\n" \
288 "movd %1, %%mm2\n" \ 288 "movd %1, %%mm2\n" \
289 "paddusb %%mm2, %%mm1\n" \ 289 "paddusb %%mm2, %%mm1\n" \
290 "movd %%mm1, %0\n" \ 290 "movd %%mm1, %0\n" \
291 : "=m" (*dp) \ 291 : "=m" (*dp) \
292 : "m" (*dp), "m" (sp[FP_GETH(xv)]) \ 292 : "m" (*dp), "m" (sp[FP_GETH(xv)]) \
293 : "memory", "%mm1", "%mm2" ); dp++; 293 : "memory", "%mm1", "%mm2" ); dp++;
294 294
295 #define DM_SCALED_FINISH asm("emms\n"); 295 #define DM_BLITFUNC_FINISH asm("emms\n");
296 #else 296 #else
297 #define DM_SCALED_SRC_TYPE DMRGBA32 297 #define DM_BLITFUNC_SRC_TYPE DMRGBA32
298 #define DM_SCALED_DST_TYPE DMRGBA32 298 #define DM_BLITFUNC_DST_TYPE DMRGBA32
299 #define DM_SCALED_INNER \ 299 #define DM_BLITFUNC_INNER \
300 const DMRGBA32 q = sp[FP_GETH(xv)]; \ 300 const DMRGBA32 q = sp[FP_GETH(xv)]; \
301 const int qr = dp->r + q.r, qg = dp->g + q.g, qb = dp->b + q.b; \ 301 const int qr = dp->r + q.r, qg = dp->g + q.g, qb = dp->b + q.b; \
302 dp->r = qr < 256 ? qr : 255; \ 302 dp->r = qr < 256 ? qr : 255; \
303 dp->g = qg < 256 ? qg : 255; \ 303 dp->g = qg < 256 ? qg : 255; \
304 dp->b = qb < 256 ? qb : 255; \ 304 dp->b = qb < 256 ? qb : 255; \