d0dbd1d6e7cd4719b806ef49f0f1255838adad67
[mesa.git] / src / mesa / drivers / dri / gamma / gamma_tritmp.h
1 static void TAG(gamma_point)( gammaContextPtr gmesa,
2 const gammaVertex *v0 )
3 {
4 CARD32 vColor;
5 CARD32 vBegin;
6
7 vBegin = gmesa->Begin | B_PrimType_Points;
8
9 CHECK_DMA_BUFFER(gmesa, 1);
10 WRITE(gmesa->buf, Begin, vBegin);
11
12 #if (IND & GAMMA_RAST_ALPHA_BIT)
13 vColor = (v0->v.color.alpha << 24) |
14 (v0->v.color.blue << 16) |
15 (v0->v.color.green << 8) |
16 (v0->v.color.red << 0);
17
18 CHECK_DMA_BUFFER(gmesa, 1);
19 WRITE(gmesa->buf, PackedColor4, vColor);
20 #else
21 vColor = (v0->v.color.blue << 16) |
22 (v0->v.color.green << 8) |
23 (v0->v.color.red << 0);
24
25 CHECK_DMA_BUFFER(gmesa, 1);
26 WRITE(gmesa->buf, PackedColor3, vColor);
27 #endif
28
29 #if (IND & GAMMA_RAST_TEX_BIT)
30 CHECK_DMA_BUFFER(gmesa, 6);
31 WRITEF(gmesa->buf, Tt2, v0->v.u0);
32 WRITEF(gmesa->buf, Ts2, v0->v.v0);
33 WRITEF(gmesa->buf, Vw, v0->v.w);
34 WRITEF(gmesa->buf, Vz, v0->v.z);
35 WRITEF(gmesa->buf, Vy, v0->v.y);
36 WRITEF(gmesa->buf, Vx4, v0->v.x);
37 #else
38 CHECK_DMA_BUFFER(gmesa, 4);
39 WRITEF(gmesa->buf, Vw, v0->v.w);
40 WRITEF(gmesa->buf, Vz, v0->v.z);
41 WRITEF(gmesa->buf, Vy, v0->v.y);
42 WRITEF(gmesa->buf, Vx4, v0->v.x);
43 #endif
44
45 #if !(IND & GAMMA_RAST_FLAT_BIT)
46 CHECK_DMA_BUFFER(gmesa, 1);
47 WRITE(gmesa->buf, FlushSpan, 0);
48 #endif
49
50 CHECK_DMA_BUFFER(gmesa, 1);
51 WRITE(gmesa->buf, End, 0);
52 }
53
54 static void TAG(gamma_line)( gammaContextPtr gmesa,
55 const gammaVertex *v0,
56 const gammaVertex *v1 )
57 {
58 CARD32 vColor;
59 CARD32 vBegin;
60
61 vBegin = gmesa->Begin | B_PrimType_Lines;
62
63 CHECK_DMA_BUFFER(gmesa, 1);
64 WRITE(gmesa->buf, Begin, vBegin);
65
66 #if !(IND & GAMMA_RAST_FLAT_BIT)
67 #if (IND & GAMMA_RAST_ALPHA_BIT)
68 vColor = (v0->v.color.alpha << 24) |
69 (v0->v.color.blue << 16) |
70 (v0->v.color.green << 8) |
71 (v0->v.color.red << 0);
72
73 CHECK_DMA_BUFFER(gmesa, 1);
74 WRITE(gmesa->buf, PackedColor4, vColor);
75 #else
76 vColor = (v0->v.color.blue << 16) |
77 (v0->v.color.green << 8) |
78 (v0->v.color.red << 0);
79
80 CHECK_DMA_BUFFER(gmesa, 1);
81 WRITE(gmesa->buf, PackedColor3, vColor);
82 #endif
83 #else
84 #if (IND & GAMMA_RAST_ALPHA_BIT)
85 vColor = (v1->v.color.alpha << 24) |
86 (v1->v.color.blue << 16) |
87 (v1->v.color.green << 8) |
88 (v1->v.color.red << 0);
89
90 CHECK_DMA_BUFFER(gmesa, 1);
91 WRITE(gmesa->buf, PackedColor4, vColor);
92 #else
93 vColor = (v1->v.color.blue << 16) |
94 (v1->v.color.green << 8) |
95 (v1->v.color.red << 0);
96
97 CHECK_DMA_BUFFER(gmesa, 1);
98 WRITE(gmesa->buf, PackedColor3, vColor);
99 #endif
100 #endif
101
102 #if (IND & GAMMA_RAST_TEX_BIT)
103 CHECK_DMA_BUFFER(gmesa, 6);
104 WRITEF(gmesa->buf, Tt2, v0->v.u0);
105 WRITEF(gmesa->buf, Ts2, v0->v.v0);
106 WRITEF(gmesa->buf, Vw, v0->v.w);
107 WRITEF(gmesa->buf, Vz, v0->v.z);
108 WRITEF(gmesa->buf, Vy, v0->v.y);
109 WRITEF(gmesa->buf, Vx4, v0->v.x);
110 #else
111 CHECK_DMA_BUFFER(gmesa, 4);
112 WRITEF(gmesa->buf, Vw, v0->v.w);
113 WRITEF(gmesa->buf, Vz, v0->v.z);
114 WRITEF(gmesa->buf, Vy, v0->v.y);
115 WRITEF(gmesa->buf, Vx4, v0->v.x);
116 #endif
117
118 #if !(IND & GAMMA_RAST_FLAT_BIT)
119 #if (IND & GAMMA_RAST_ALPHA_BIT)
120 vColor = (v1->v.color.alpha << 24) |
121 (v1->v.color.blue << 16) |
122 (v1->v.color.green << 8) |
123 (v1->v.color.red << 0);
124
125 CHECK_DMA_BUFFER(gmesa, 1);
126 WRITE(gmesa->buf, PackedColor4, vColor);
127 #else
128 vColor = (v1->v.color.blue << 16) |
129 (v1->v.color.green << 8) |
130 (v1->v.color.red << 0);
131
132 CHECK_DMA_BUFFER(gmesa, 1);
133 WRITE(gmesa->buf, PackedColor3, vColor);
134 #endif
135 #endif
136
137 #if (IND & GAMMA_RAST_TEX_BIT)
138 CHECK_DMA_BUFFER(gmesa, 6);
139 WRITEF(gmesa->buf, Tt2, v1->v.u0);
140 WRITEF(gmesa->buf, Ts2, v1->v.v0);
141 WRITEF(gmesa->buf, Vw, v1->v.w);
142 WRITEF(gmesa->buf, Vz, v1->v.z);
143 WRITEF(gmesa->buf, Vy, v1->v.y);
144 WRITEF(gmesa->buf, Vx4, v1->v.x);
145 #else
146 CHECK_DMA_BUFFER(gmesa, 4);
147 WRITEF(gmesa->buf, Vw, v1->v.w);
148 WRITEF(gmesa->buf, Vz, v1->v.z);
149 WRITEF(gmesa->buf, Vy, v1->v.y);
150 WRITEF(gmesa->buf, Vx4, v1->v.x);
151 #endif
152
153 #if !(IND & GAMMA_RAST_FLAT_BIT)
154 CHECK_DMA_BUFFER(gmesa, 1);
155 WRITE(gmesa->buf, FlushSpan, 0);
156 #endif
157
158 CHECK_DMA_BUFFER(gmesa, 1);
159 WRITE(gmesa->buf, End, 0);
160 }
161
162 static void TAG(gamma_triangle)( gammaContextPtr gmesa,
163 const gammaVertex *v0,
164 const gammaVertex *v1,
165 const gammaVertex *v2 )
166 {
167 CARD32 vColor;
168 CARD32 vBegin;
169
170 vBegin = gmesa->Begin | B_PrimType_Triangles;
171
172 CHECK_DMA_BUFFER(gmesa, 1);
173 WRITE(gmesa->buf, Begin, vBegin);
174
175 #if !(IND & GAMMA_RAST_FLAT_BIT)
176 #if (IND & GAMMA_RAST_ALPHA_BIT)
177 vColor = (v0->v.color.alpha << 24) |
178 (v0->v.color.blue << 16) |
179 (v0->v.color.green << 8) |
180 (v0->v.color.red << 0);
181
182 CHECK_DMA_BUFFER(gmesa, 1);
183 WRITE(gmesa->buf, PackedColor4, vColor);
184 #else
185 vColor = (v0->v.color.blue << 16) |
186 (v0->v.color.green << 8) |
187 (v0->v.color.red << 0);
188
189 CHECK_DMA_BUFFER(gmesa, 1);
190 WRITE(gmesa->buf, PackedColor3, vColor);
191 #endif
192 #else
193 #if (IND & GAMMA_RAST_ALPHA_BIT)
194 vColor = (v2->v.color.alpha << 24) |
195 (v2->v.color.blue << 16) |
196 (v2->v.color.green << 8) |
197 (v2->v.color.red << 0);
198
199 CHECK_DMA_BUFFER(gmesa, 1);
200 WRITE(gmesa->buf, PackedColor4, vColor);
201 #else
202 vColor = (v2->v.color.blue << 16) |
203 (v2->v.color.green << 8) |
204 (v2->v.color.red << 0);
205
206 CHECK_DMA_BUFFER(gmesa, 1);
207 WRITE(gmesa->buf, PackedColor3, vColor);
208 #endif
209 #endif
210
211 #if (IND & GAMMA_RAST_TEX_BIT)
212 CHECK_DMA_BUFFER(gmesa, 6);
213 WRITEF(gmesa->buf, Tt2, v0->v.u0);
214 WRITEF(gmesa->buf, Ts2, v0->v.v0);
215 WRITEF(gmesa->buf, Vw, v0->v.w);
216 WRITEF(gmesa->buf, Vz, v0->v.z);
217 WRITEF(gmesa->buf, Vy, v0->v.y);
218 WRITEF(gmesa->buf, Vx4, v0->v.x);
219 #else
220 CHECK_DMA_BUFFER(gmesa, 4);
221 WRITEF(gmesa->buf, Vw, v0->v.w);
222 WRITEF(gmesa->buf, Vz, v0->v.z);
223 WRITEF(gmesa->buf, Vy, v0->v.y);
224 WRITEF(gmesa->buf, Vx4, v0->v.x);
225 #endif
226
227 #if !(IND & GAMMA_RAST_FLAT_BIT)
228 #if (IND & GAMMA_RAST_ALPHA_BIT)
229 vColor = (v1->v.color.alpha << 24) |
230 (v1->v.color.blue << 16) |
231 (v1->v.color.green << 8) |
232 (v1->v.color.red << 0);
233
234 CHECK_DMA_BUFFER(gmesa, 1);
235 WRITE(gmesa->buf, PackedColor4, vColor);
236 #else
237 vColor = (v1->v.color.blue << 16) |
238 (v1->v.color.green << 8) |
239 (v1->v.color.red << 0);
240
241 CHECK_DMA_BUFFER(gmesa, 1);
242 WRITE(gmesa->buf, PackedColor3, vColor);
243 #endif
244 #endif
245
246 #if (IND & GAMMA_RAST_TEX_BIT)
247 CHECK_DMA_BUFFER(gmesa, 6);
248 WRITEF(gmesa->buf, Tt2, v1->v.u0);
249 WRITEF(gmesa->buf, Ts2, v1->v.v0);
250 WRITEF(gmesa->buf, Vw, v1->v.w);
251 WRITEF(gmesa->buf, Vz, v1->v.z);
252 WRITEF(gmesa->buf, Vy, v1->v.y);
253 WRITEF(gmesa->buf, Vx4, v1->v.x);
254 #else
255 CHECK_DMA_BUFFER(gmesa, 4);
256 WRITEF(gmesa->buf, Vw, v1->v.w);
257 WRITEF(gmesa->buf, Vz, v1->v.z);
258 WRITEF(gmesa->buf, Vy, v1->v.y);
259 WRITEF(gmesa->buf, Vx4, v1->v.x);
260 #endif
261
262 #if !(IND & GAMMA_RAST_FLAT_BIT)
263 #if (IND & GAMMA_RAST_ALPHA_BIT)
264 vColor = (v2->v.color.alpha << 24) |
265 (v2->v.color.blue << 16) |
266 (v2->v.color.green << 8) |
267 (v2->v.color.red << 0);
268
269 CHECK_DMA_BUFFER(gmesa, 1);
270 WRITE(gmesa->buf, PackedColor4, vColor);
271 #else
272 vColor = (v2->v.color.blue << 16) |
273 (v2->v.color.green << 8) |
274 (v2->v.color.red << 0);
275
276 CHECK_DMA_BUFFER(gmesa, 1);
277 WRITE(gmesa->buf, PackedColor3, vColor);
278 #endif
279 #endif
280
281 #if (IND & GAMMA_RAST_TEX_BIT)
282 CHECK_DMA_BUFFER(gmesa, 6);
283 WRITEF(gmesa->buf, Tt2, v2->v.u0);
284 WRITEF(gmesa->buf, Ts2, v2->v.v0);
285 WRITEF(gmesa->buf, Vw, v2->v.w);
286 WRITEF(gmesa->buf, Vz, v2->v.z);
287 WRITEF(gmesa->buf, Vy, v2->v.y);
288 WRITEF(gmesa->buf, Vx4, v2->v.x);
289 #else
290 CHECK_DMA_BUFFER(gmesa, 4);
291 WRITEF(gmesa->buf, Vw, v2->v.w);
292 WRITEF(gmesa->buf, Vz, v2->v.z);
293 WRITEF(gmesa->buf, Vy, v2->v.y);
294 WRITEF(gmesa->buf, Vx4, v2->v.x);
295 #endif
296
297 #if !(IND & GAMMA_RAST_FLAT_BIT)
298 CHECK_DMA_BUFFER(gmesa, 1);
299 WRITE(gmesa->buf, FlushSpan, 0);
300 #endif
301
302 CHECK_DMA_BUFFER(gmesa, 1);
303 WRITE(gmesa->buf, End, 0);
304 }
305
306 static void TAG(gamma_quad)( gammaContextPtr gmesa,
307 const gammaVertex *v0,
308 const gammaVertex *v1,
309 const gammaVertex *v2,
310 const gammaVertex *v3 )
311 {
312 CARD32 vColor;
313 CARD32 vBegin;
314
315 vBegin = gmesa->Begin | B_PrimType_Quads;
316
317 CHECK_DMA_BUFFER(gmesa, 1);
318 WRITE(gmesa->buf, Begin, vBegin);
319
320 #if !(IND & GAMMA_RAST_FLAT_BIT)
321 #if (IND & GAMMA_RAST_ALPHA_BIT)
322 vColor = (v0->v.color.alpha << 24) |
323 (v0->v.color.blue << 16) |
324 (v0->v.color.green << 8) |
325 (v0->v.color.red << 0);
326
327 CHECK_DMA_BUFFER(gmesa, 1);
328 WRITE(gmesa->buf, PackedColor4, vColor);
329 #else
330 vColor = (v0->v.color.blue << 16) |
331 (v0->v.color.green << 8) |
332 (v0->v.color.red << 0);
333
334 CHECK_DMA_BUFFER(gmesa, 1);
335 WRITE(gmesa->buf, PackedColor3, vColor);
336 #endif
337 #else
338 #if (IND & GAMMA_RAST_ALPHA_BIT)
339 vColor = (v3->v.color.alpha << 24) |
340 (v3->v.color.blue << 16) |
341 (v3->v.color.green << 8) |
342 (v3->v.color.red << 0);
343
344 CHECK_DMA_BUFFER(gmesa, 1);
345 WRITE(gmesa->buf, PackedColor4, vColor);
346 #else
347 vColor = (v3->v.color.blue << 16) |
348 (v3->v.color.green << 8) |
349 (v3->v.color.red << 0);
350
351 CHECK_DMA_BUFFER(gmesa, 1);
352 WRITE(gmesa->buf, PackedColor3, vColor);
353 #endif
354 #endif
355
356 #if (IND & GAMMA_RAST_TEX_BIT)
357 CHECK_DMA_BUFFER(gmesa, 6);
358 WRITEF(gmesa->buf, Tt2, v0->v.u0);
359 WRITEF(gmesa->buf, Ts2, v0->v.v0);
360 WRITEF(gmesa->buf, Vw, v0->v.w);
361 WRITEF(gmesa->buf, Vz, v0->v.z);
362 WRITEF(gmesa->buf, Vy, v0->v.y);
363 WRITEF(gmesa->buf, Vx4, v0->v.x);
364 #else
365 CHECK_DMA_BUFFER(gmesa, 4);
366 WRITEF(gmesa->buf, Vw, v0->v.w);
367 WRITEF(gmesa->buf, Vz, v0->v.z);
368 WRITEF(gmesa->buf, Vy, v0->v.y);
369 WRITEF(gmesa->buf, Vx4, v0->v.x);
370 #endif
371
372 #if !(IND & GAMMA_RAST_FLAT_BIT)
373 #if (IND & GAMMA_RAST_ALPHA_BIT)
374 vColor = (v1->v.color.alpha << 24) |
375 (v1->v.color.blue << 16) |
376 (v1->v.color.green << 8) |
377 (v1->v.color.red << 0);
378
379 CHECK_DMA_BUFFER(gmesa, 1);
380 WRITE(gmesa->buf, PackedColor4, vColor);
381 #else
382 vColor = (v1->v.color.blue << 16) |
383 (v1->v.color.green << 8) |
384 (v1->v.color.red << 0);
385
386 CHECK_DMA_BUFFER(gmesa, 1);
387 WRITE(gmesa->buf, PackedColor3, vColor);
388 #endif
389 #endif
390
391 #if (IND & GAMMA_RAST_TEX_BIT)
392 CHECK_DMA_BUFFER(gmesa, 6);
393 WRITEF(gmesa->buf, Tt2, v1->v.u0);
394 WRITEF(gmesa->buf, Ts2, v1->v.v0);
395 WRITEF(gmesa->buf, Vw, v1->v.w);
396 WRITEF(gmesa->buf, Vz, v1->v.z);
397 WRITEF(gmesa->buf, Vy, v1->v.y);
398 WRITEF(gmesa->buf, Vx4, v1->v.x);
399 #else
400 CHECK_DMA_BUFFER(gmesa, 4);
401 WRITEF(gmesa->buf, Vw, v1->v.w);
402 WRITEF(gmesa->buf, Vz, v1->v.z);
403 WRITEF(gmesa->buf, Vy, v1->v.y);
404 WRITEF(gmesa->buf, Vx4, v1->v.x);
405 #endif
406
407 #if !(IND & GAMMA_RAST_FLAT_BIT)
408 #if (IND & GAMMA_RAST_ALPHA_BIT)
409 vColor = (v2->v.color.alpha << 24) |
410 (v2->v.color.blue << 16) |
411 (v2->v.color.green << 8) |
412 (v2->v.color.red << 0);
413
414 CHECK_DMA_BUFFER(gmesa, 1);
415 WRITE(gmesa->buf, PackedColor4, vColor);
416 #else
417 vColor = (v2->v.color.blue << 16) |
418 (v2->v.color.green << 8) |
419 (v2->v.color.red << 0);
420
421 CHECK_DMA_BUFFER(gmesa, 1);
422 WRITE(gmesa->buf, PackedColor3, vColor);
423 #endif
424 #endif
425
426 #if (IND & GAMMA_RAST_TEX_BIT)
427 CHECK_DMA_BUFFER(gmesa, 6);
428 WRITEF(gmesa->buf, Tt2, v2->v.u0);
429 WRITEF(gmesa->buf, Ts2, v2->v.v0);
430 WRITEF(gmesa->buf, Vw, v2->v.w);
431 WRITEF(gmesa->buf, Vz, v2->v.z);
432 WRITEF(gmesa->buf, Vy, v2->v.y);
433 WRITEF(gmesa->buf, Vx4, v2->v.x);
434 #else
435 CHECK_DMA_BUFFER(gmesa, 4);
436 WRITEF(gmesa->buf, Vw, v2->v.w);
437 WRITEF(gmesa->buf, Vz, v2->v.z);
438 WRITEF(gmesa->buf, Vy, v2->v.y);
439 WRITEF(gmesa->buf, Vx4, v2->v.x);
440 #endif
441
442 #if !(IND & GAMMA_RAST_FLAT_BIT)
443 #if (IND & GAMMA_RAST_ALPHA_BIT)
444 vColor = (v3->v.color.alpha << 24) |
445 (v3->v.color.blue << 16) |
446 (v3->v.color.green << 8) |
447 (v3->v.color.red << 0);
448
449 CHECK_DMA_BUFFER(gmesa, 1);
450 WRITE(gmesa->buf, PackedColor4, vColor);
451 #else
452 vColor = (v3->v.color.blue << 16) |
453 (v3->v.color.green << 8) |
454 (v3->v.color.red << 0);
455
456 CHECK_DMA_BUFFER(gmesa, 1);
457 WRITE(gmesa->buf, PackedColor3, vColor);
458 #endif
459 #endif
460
461 #if (IND & GAMMA_RAST_TEX_BIT)
462 CHECK_DMA_BUFFER(gmesa, 6);
463 WRITEF(gmesa->buf, Tt2, v3->v.u0);
464 WRITEF(gmesa->buf, Ts2, v3->v.v0);
465 WRITEF(gmesa->buf, Vw, v3->v.w);
466 WRITEF(gmesa->buf, Vz, v3->v.z);
467 WRITEF(gmesa->buf, Vy, v3->v.y);
468 WRITEF(gmesa->buf, Vx4, v3->v.x);
469 #else
470 CHECK_DMA_BUFFER(gmesa, 4);
471 WRITEF(gmesa->buf, Vw, v3->v.w);
472 WRITEF(gmesa->buf, Vz, v3->v.z);
473 WRITEF(gmesa->buf, Vy, v3->v.y);
474 WRITEF(gmesa->buf, Vx4, v3->v.x);
475 #endif
476
477 #if !(IND & GAMMA_RAST_FLAT_BIT)
478 CHECK_DMA_BUFFER(gmesa, 1);
479 WRITE(gmesa->buf, FlushSpan, 0);
480 #endif
481
482 CHECK_DMA_BUFFER(gmesa, 1);
483 WRITE(gmesa->buf, End, 0);
484 }
485
486 static void TAG(gamma_init)(void)
487 {
488 gamma_point_tab[IND] = TAG(gamma_point);
489 gamma_line_tab[IND] = TAG(gamma_line);
490 gamma_tri_tab[IND] = TAG(gamma_triangle);
491 gamma_quad_tab[IND] = TAG(gamma_quad);
492 }
493
494 #undef IND
495 #undef TAG