1 /* $XFree86: xc/extras/Mesa/src/mesa/drivers/dri/gamma/gamma_tritmp.h,v 1.2 2004/12/13 22:40:49 tsi Exp $ */
3 static void TAG(gamma_point
)( gammaContextPtr gmesa
,
4 const gammaVertex
*v0
)
9 vBegin
= gmesa
->Begin
| B_PrimType_Points
;
11 CHECK_DMA_BUFFER(gmesa
, 1);
12 WRITE(gmesa
->buf
, Begin
, vBegin
);
14 #if (IND & GAMMA_RAST_ALPHA_BIT)
15 vColor
= (v0
->v
.color
.alpha
<< 24) |
16 (v0
->v
.color
.blue
<< 16) |
17 (v0
->v
.color
.green
<< 8) |
18 (v0
->v
.color
.red
<< 0);
20 CHECK_DMA_BUFFER(gmesa
, 1);
21 WRITE(gmesa
->buf
, PackedColor4
, vColor
);
23 vColor
= (v0
->v
.color
.blue
<< 16) |
24 (v0
->v
.color
.green
<< 8) |
25 (v0
->v
.color
.red
<< 0);
27 CHECK_DMA_BUFFER(gmesa
, 1);
28 WRITE(gmesa
->buf
, PackedColor3
, vColor
);
31 #if (IND & GAMMA_RAST_TEX_BIT)
32 CHECK_DMA_BUFFER(gmesa
, 6);
33 WRITEF(gmesa
->buf
, Tt2
, v0
->v
.u0
);
34 WRITEF(gmesa
->buf
, Ts2
, v0
->v
.v0
);
35 WRITEF(gmesa
->buf
, Vw
, v0
->v
.w
);
36 WRITEF(gmesa
->buf
, Vz
, v0
->v
.z
);
37 WRITEF(gmesa
->buf
, Vy
, v0
->v
.y
);
38 WRITEF(gmesa
->buf
, Vx4
, v0
->v
.x
);
40 CHECK_DMA_BUFFER(gmesa
, 4);
41 WRITEF(gmesa
->buf
, Vw
, v0
->v
.w
);
42 WRITEF(gmesa
->buf
, Vz
, v0
->v
.z
);
43 WRITEF(gmesa
->buf
, Vy
, v0
->v
.y
);
44 WRITEF(gmesa
->buf
, Vx4
, v0
->v
.x
);
47 #if !(IND & GAMMA_RAST_FLAT_BIT)
48 CHECK_DMA_BUFFER(gmesa
, 1);
49 WRITE(gmesa
->buf
, FlushSpan
, 0);
52 CHECK_DMA_BUFFER(gmesa
, 1);
53 WRITE(gmesa
->buf
, End
, 0);
56 static void TAG(gamma_line
)( gammaContextPtr gmesa
,
57 const gammaVertex
*v0
,
58 const gammaVertex
*v1
)
63 vBegin
= gmesa
->Begin
| B_PrimType_Lines
;
65 CHECK_DMA_BUFFER(gmesa
, 1);
66 WRITE(gmesa
->buf
, Begin
, vBegin
);
68 #if !(IND & GAMMA_RAST_FLAT_BIT)
69 #if (IND & GAMMA_RAST_ALPHA_BIT)
70 vColor
= (v0
->v
.color
.alpha
<< 24) |
71 (v0
->v
.color
.blue
<< 16) |
72 (v0
->v
.color
.green
<< 8) |
73 (v0
->v
.color
.red
<< 0);
75 CHECK_DMA_BUFFER(gmesa
, 1);
76 WRITE(gmesa
->buf
, PackedColor4
, vColor
);
78 vColor
= (v0
->v
.color
.blue
<< 16) |
79 (v0
->v
.color
.green
<< 8) |
80 (v0
->v
.color
.red
<< 0);
82 CHECK_DMA_BUFFER(gmesa
, 1);
83 WRITE(gmesa
->buf
, PackedColor3
, vColor
);
86 #if (IND & GAMMA_RAST_ALPHA_BIT)
87 vColor
= (v1
->v
.color
.alpha
<< 24) |
88 (v1
->v
.color
.blue
<< 16) |
89 (v1
->v
.color
.green
<< 8) |
90 (v1
->v
.color
.red
<< 0);
92 CHECK_DMA_BUFFER(gmesa
, 1);
93 WRITE(gmesa
->buf
, PackedColor4
, vColor
);
95 vColor
= (v1
->v
.color
.blue
<< 16) |
96 (v1
->v
.color
.green
<< 8) |
97 (v1
->v
.color
.red
<< 0);
99 CHECK_DMA_BUFFER(gmesa
, 1);
100 WRITE(gmesa
->buf
, PackedColor3
, vColor
);
104 #if (IND & GAMMA_RAST_TEX_BIT)
105 CHECK_DMA_BUFFER(gmesa
, 6);
106 WRITEF(gmesa
->buf
, Tt2
, v0
->v
.u0
);
107 WRITEF(gmesa
->buf
, Ts2
, v0
->v
.v0
);
108 WRITEF(gmesa
->buf
, Vw
, v0
->v
.w
);
109 WRITEF(gmesa
->buf
, Vz
, v0
->v
.z
);
110 WRITEF(gmesa
->buf
, Vy
, v0
->v
.y
);
111 WRITEF(gmesa
->buf
, Vx4
, v0
->v
.x
);
113 CHECK_DMA_BUFFER(gmesa
, 4);
114 WRITEF(gmesa
->buf
, Vw
, v0
->v
.w
);
115 WRITEF(gmesa
->buf
, Vz
, v0
->v
.z
);
116 WRITEF(gmesa
->buf
, Vy
, v0
->v
.y
);
117 WRITEF(gmesa
->buf
, Vx4
, v0
->v
.x
);
120 #if !(IND & GAMMA_RAST_FLAT_BIT)
121 #if (IND & GAMMA_RAST_ALPHA_BIT)
122 vColor
= (v1
->v
.color
.alpha
<< 24) |
123 (v1
->v
.color
.blue
<< 16) |
124 (v1
->v
.color
.green
<< 8) |
125 (v1
->v
.color
.red
<< 0);
127 CHECK_DMA_BUFFER(gmesa
, 1);
128 WRITE(gmesa
->buf
, PackedColor4
, vColor
);
130 vColor
= (v1
->v
.color
.blue
<< 16) |
131 (v1
->v
.color
.green
<< 8) |
132 (v1
->v
.color
.red
<< 0);
134 CHECK_DMA_BUFFER(gmesa
, 1);
135 WRITE(gmesa
->buf
, PackedColor3
, vColor
);
139 #if (IND & GAMMA_RAST_TEX_BIT)
140 CHECK_DMA_BUFFER(gmesa
, 6);
141 WRITEF(gmesa
->buf
, Tt2
, v1
->v
.u0
);
142 WRITEF(gmesa
->buf
, Ts2
, v1
->v
.v0
);
143 WRITEF(gmesa
->buf
, Vw
, v1
->v
.w
);
144 WRITEF(gmesa
->buf
, Vz
, v1
->v
.z
);
145 WRITEF(gmesa
->buf
, Vy
, v1
->v
.y
);
146 WRITEF(gmesa
->buf
, Vx4
, v1
->v
.x
);
148 CHECK_DMA_BUFFER(gmesa
, 4);
149 WRITEF(gmesa
->buf
, Vw
, v1
->v
.w
);
150 WRITEF(gmesa
->buf
, Vz
, v1
->v
.z
);
151 WRITEF(gmesa
->buf
, Vy
, v1
->v
.y
);
152 WRITEF(gmesa
->buf
, Vx4
, v1
->v
.x
);
155 #if !(IND & GAMMA_RAST_FLAT_BIT)
156 CHECK_DMA_BUFFER(gmesa
, 1);
157 WRITE(gmesa
->buf
, FlushSpan
, 0);
160 CHECK_DMA_BUFFER(gmesa
, 1);
161 WRITE(gmesa
->buf
, End
, 0);
164 static void TAG(gamma_triangle
)( gammaContextPtr gmesa
,
165 const gammaVertex
*v0
,
166 const gammaVertex
*v1
,
167 const gammaVertex
*v2
)
172 vBegin
= gmesa
->Begin
| B_PrimType_Triangles
;
174 CHECK_DMA_BUFFER(gmesa
, 1);
175 WRITE(gmesa
->buf
, Begin
, vBegin
);
177 #if !(IND & GAMMA_RAST_FLAT_BIT)
178 #if (IND & GAMMA_RAST_ALPHA_BIT)
179 vColor
= (v0
->v
.color
.alpha
<< 24) |
180 (v0
->v
.color
.blue
<< 16) |
181 (v0
->v
.color
.green
<< 8) |
182 (v0
->v
.color
.red
<< 0);
184 CHECK_DMA_BUFFER(gmesa
, 1);
185 WRITE(gmesa
->buf
, PackedColor4
, vColor
);
187 vColor
= (v0
->v
.color
.blue
<< 16) |
188 (v0
->v
.color
.green
<< 8) |
189 (v0
->v
.color
.red
<< 0);
191 CHECK_DMA_BUFFER(gmesa
, 1);
192 WRITE(gmesa
->buf
, PackedColor3
, vColor
);
195 #if (IND & GAMMA_RAST_ALPHA_BIT)
196 vColor
= (v2
->v
.color
.alpha
<< 24) |
197 (v2
->v
.color
.blue
<< 16) |
198 (v2
->v
.color
.green
<< 8) |
199 (v2
->v
.color
.red
<< 0);
201 CHECK_DMA_BUFFER(gmesa
, 1);
202 WRITE(gmesa
->buf
, PackedColor4
, vColor
);
204 vColor
= (v2
->v
.color
.blue
<< 16) |
205 (v2
->v
.color
.green
<< 8) |
206 (v2
->v
.color
.red
<< 0);
208 CHECK_DMA_BUFFER(gmesa
, 1);
209 WRITE(gmesa
->buf
, PackedColor3
, vColor
);
213 #if (IND & GAMMA_RAST_TEX_BIT)
214 CHECK_DMA_BUFFER(gmesa
, 6);
215 WRITEF(gmesa
->buf
, Tt2
, v0
->v
.u0
);
216 WRITEF(gmesa
->buf
, Ts2
, v0
->v
.v0
);
217 WRITEF(gmesa
->buf
, Vw
, v0
->v
.w
);
218 WRITEF(gmesa
->buf
, Vz
, v0
->v
.z
);
219 WRITEF(gmesa
->buf
, Vy
, v0
->v
.y
);
220 WRITEF(gmesa
->buf
, Vx4
, v0
->v
.x
);
222 CHECK_DMA_BUFFER(gmesa
, 4);
223 WRITEF(gmesa
->buf
, Vw
, v0
->v
.w
);
224 WRITEF(gmesa
->buf
, Vz
, v0
->v
.z
);
225 WRITEF(gmesa
->buf
, Vy
, v0
->v
.y
);
226 WRITEF(gmesa
->buf
, Vx4
, v0
->v
.x
);
229 #if !(IND & GAMMA_RAST_FLAT_BIT)
230 #if (IND & GAMMA_RAST_ALPHA_BIT)
231 vColor
= (v1
->v
.color
.alpha
<< 24) |
232 (v1
->v
.color
.blue
<< 16) |
233 (v1
->v
.color
.green
<< 8) |
234 (v1
->v
.color
.red
<< 0);
236 CHECK_DMA_BUFFER(gmesa
, 1);
237 WRITE(gmesa
->buf
, PackedColor4
, vColor
);
239 vColor
= (v1
->v
.color
.blue
<< 16) |
240 (v1
->v
.color
.green
<< 8) |
241 (v1
->v
.color
.red
<< 0);
243 CHECK_DMA_BUFFER(gmesa
, 1);
244 WRITE(gmesa
->buf
, PackedColor3
, vColor
);
248 #if (IND & GAMMA_RAST_TEX_BIT)
249 CHECK_DMA_BUFFER(gmesa
, 6);
250 WRITEF(gmesa
->buf
, Tt2
, v1
->v
.u0
);
251 WRITEF(gmesa
->buf
, Ts2
, v1
->v
.v0
);
252 WRITEF(gmesa
->buf
, Vw
, v1
->v
.w
);
253 WRITEF(gmesa
->buf
, Vz
, v1
->v
.z
);
254 WRITEF(gmesa
->buf
, Vy
, v1
->v
.y
);
255 WRITEF(gmesa
->buf
, Vx4
, v1
->v
.x
);
257 CHECK_DMA_BUFFER(gmesa
, 4);
258 WRITEF(gmesa
->buf
, Vw
, v1
->v
.w
);
259 WRITEF(gmesa
->buf
, Vz
, v1
->v
.z
);
260 WRITEF(gmesa
->buf
, Vy
, v1
->v
.y
);
261 WRITEF(gmesa
->buf
, Vx4
, v1
->v
.x
);
264 #if !(IND & GAMMA_RAST_FLAT_BIT)
265 #if (IND & GAMMA_RAST_ALPHA_BIT)
266 vColor
= (v2
->v
.color
.alpha
<< 24) |
267 (v2
->v
.color
.blue
<< 16) |
268 (v2
->v
.color
.green
<< 8) |
269 (v2
->v
.color
.red
<< 0);
271 CHECK_DMA_BUFFER(gmesa
, 1);
272 WRITE(gmesa
->buf
, PackedColor4
, vColor
);
274 vColor
= (v2
->v
.color
.blue
<< 16) |
275 (v2
->v
.color
.green
<< 8) |
276 (v2
->v
.color
.red
<< 0);
278 CHECK_DMA_BUFFER(gmesa
, 1);
279 WRITE(gmesa
->buf
, PackedColor3
, vColor
);
283 #if (IND & GAMMA_RAST_TEX_BIT)
284 CHECK_DMA_BUFFER(gmesa
, 6);
285 WRITEF(gmesa
->buf
, Tt2
, v2
->v
.u0
);
286 WRITEF(gmesa
->buf
, Ts2
, v2
->v
.v0
);
287 WRITEF(gmesa
->buf
, Vw
, v2
->v
.w
);
288 WRITEF(gmesa
->buf
, Vz
, v2
->v
.z
);
289 WRITEF(gmesa
->buf
, Vy
, v2
->v
.y
);
290 WRITEF(gmesa
->buf
, Vx4
, v2
->v
.x
);
292 CHECK_DMA_BUFFER(gmesa
, 4);
293 WRITEF(gmesa
->buf
, Vw
, v2
->v
.w
);
294 WRITEF(gmesa
->buf
, Vz
, v2
->v
.z
);
295 WRITEF(gmesa
->buf
, Vy
, v2
->v
.y
);
296 WRITEF(gmesa
->buf
, Vx4
, v2
->v
.x
);
299 #if !(IND & GAMMA_RAST_FLAT_BIT)
300 CHECK_DMA_BUFFER(gmesa
, 1);
301 WRITE(gmesa
->buf
, FlushSpan
, 0);
304 CHECK_DMA_BUFFER(gmesa
, 1);
305 WRITE(gmesa
->buf
, End
, 0);
308 static void TAG(gamma_quad
)( gammaContextPtr gmesa
,
309 const gammaVertex
*v0
,
310 const gammaVertex
*v1
,
311 const gammaVertex
*v2
,
312 const gammaVertex
*v3
)
317 vBegin
= gmesa
->Begin
| B_PrimType_Quads
;
319 CHECK_DMA_BUFFER(gmesa
, 1);
320 WRITE(gmesa
->buf
, Begin
, vBegin
);
322 #if !(IND & GAMMA_RAST_FLAT_BIT)
323 #if (IND & GAMMA_RAST_ALPHA_BIT)
324 vColor
= (v0
->v
.color
.alpha
<< 24) |
325 (v0
->v
.color
.blue
<< 16) |
326 (v0
->v
.color
.green
<< 8) |
327 (v0
->v
.color
.red
<< 0);
329 CHECK_DMA_BUFFER(gmesa
, 1);
330 WRITE(gmesa
->buf
, PackedColor4
, vColor
);
332 vColor
= (v0
->v
.color
.blue
<< 16) |
333 (v0
->v
.color
.green
<< 8) |
334 (v0
->v
.color
.red
<< 0);
336 CHECK_DMA_BUFFER(gmesa
, 1);
337 WRITE(gmesa
->buf
, PackedColor3
, vColor
);
340 #if (IND & GAMMA_RAST_ALPHA_BIT)
341 vColor
= (v3
->v
.color
.alpha
<< 24) |
342 (v3
->v
.color
.blue
<< 16) |
343 (v3
->v
.color
.green
<< 8) |
344 (v3
->v
.color
.red
<< 0);
346 CHECK_DMA_BUFFER(gmesa
, 1);
347 WRITE(gmesa
->buf
, PackedColor4
, vColor
);
349 vColor
= (v3
->v
.color
.blue
<< 16) |
350 (v3
->v
.color
.green
<< 8) |
351 (v3
->v
.color
.red
<< 0);
353 CHECK_DMA_BUFFER(gmesa
, 1);
354 WRITE(gmesa
->buf
, PackedColor3
, vColor
);
358 #if (IND & GAMMA_RAST_TEX_BIT)
359 CHECK_DMA_BUFFER(gmesa
, 6);
360 WRITEF(gmesa
->buf
, Tt2
, v0
->v
.u0
);
361 WRITEF(gmesa
->buf
, Ts2
, v0
->v
.v0
);
362 WRITEF(gmesa
->buf
, Vw
, v0
->v
.w
);
363 WRITEF(gmesa
->buf
, Vz
, v0
->v
.z
);
364 WRITEF(gmesa
->buf
, Vy
, v0
->v
.y
);
365 WRITEF(gmesa
->buf
, Vx4
, v0
->v
.x
);
367 CHECK_DMA_BUFFER(gmesa
, 4);
368 WRITEF(gmesa
->buf
, Vw
, v0
->v
.w
);
369 WRITEF(gmesa
->buf
, Vz
, v0
->v
.z
);
370 WRITEF(gmesa
->buf
, Vy
, v0
->v
.y
);
371 WRITEF(gmesa
->buf
, Vx4
, v0
->v
.x
);
374 #if !(IND & GAMMA_RAST_FLAT_BIT)
375 #if (IND & GAMMA_RAST_ALPHA_BIT)
376 vColor
= (v1
->v
.color
.alpha
<< 24) |
377 (v1
->v
.color
.blue
<< 16) |
378 (v1
->v
.color
.green
<< 8) |
379 (v1
->v
.color
.red
<< 0);
381 CHECK_DMA_BUFFER(gmesa
, 1);
382 WRITE(gmesa
->buf
, PackedColor4
, vColor
);
384 vColor
= (v1
->v
.color
.blue
<< 16) |
385 (v1
->v
.color
.green
<< 8) |
386 (v1
->v
.color
.red
<< 0);
388 CHECK_DMA_BUFFER(gmesa
, 1);
389 WRITE(gmesa
->buf
, PackedColor3
, vColor
);
393 #if (IND & GAMMA_RAST_TEX_BIT)
394 CHECK_DMA_BUFFER(gmesa
, 6);
395 WRITEF(gmesa
->buf
, Tt2
, v1
->v
.u0
);
396 WRITEF(gmesa
->buf
, Ts2
, v1
->v
.v0
);
397 WRITEF(gmesa
->buf
, Vw
, v1
->v
.w
);
398 WRITEF(gmesa
->buf
, Vz
, v1
->v
.z
);
399 WRITEF(gmesa
->buf
, Vy
, v1
->v
.y
);
400 WRITEF(gmesa
->buf
, Vx4
, v1
->v
.x
);
402 CHECK_DMA_BUFFER(gmesa
, 4);
403 WRITEF(gmesa
->buf
, Vw
, v1
->v
.w
);
404 WRITEF(gmesa
->buf
, Vz
, v1
->v
.z
);
405 WRITEF(gmesa
->buf
, Vy
, v1
->v
.y
);
406 WRITEF(gmesa
->buf
, Vx4
, v1
->v
.x
);
409 #if !(IND & GAMMA_RAST_FLAT_BIT)
410 #if (IND & GAMMA_RAST_ALPHA_BIT)
411 vColor
= (v2
->v
.color
.alpha
<< 24) |
412 (v2
->v
.color
.blue
<< 16) |
413 (v2
->v
.color
.green
<< 8) |
414 (v2
->v
.color
.red
<< 0);
416 CHECK_DMA_BUFFER(gmesa
, 1);
417 WRITE(gmesa
->buf
, PackedColor4
, vColor
);
419 vColor
= (v2
->v
.color
.blue
<< 16) |
420 (v2
->v
.color
.green
<< 8) |
421 (v2
->v
.color
.red
<< 0);
423 CHECK_DMA_BUFFER(gmesa
, 1);
424 WRITE(gmesa
->buf
, PackedColor3
, vColor
);
428 #if (IND & GAMMA_RAST_TEX_BIT)
429 CHECK_DMA_BUFFER(gmesa
, 6);
430 WRITEF(gmesa
->buf
, Tt2
, v2
->v
.u0
);
431 WRITEF(gmesa
->buf
, Ts2
, v2
->v
.v0
);
432 WRITEF(gmesa
->buf
, Vw
, v2
->v
.w
);
433 WRITEF(gmesa
->buf
, Vz
, v2
->v
.z
);
434 WRITEF(gmesa
->buf
, Vy
, v2
->v
.y
);
435 WRITEF(gmesa
->buf
, Vx4
, v2
->v
.x
);
437 CHECK_DMA_BUFFER(gmesa
, 4);
438 WRITEF(gmesa
->buf
, Vw
, v2
->v
.w
);
439 WRITEF(gmesa
->buf
, Vz
, v2
->v
.z
);
440 WRITEF(gmesa
->buf
, Vy
, v2
->v
.y
);
441 WRITEF(gmesa
->buf
, Vx4
, v2
->v
.x
);
444 #if !(IND & GAMMA_RAST_FLAT_BIT)
445 #if (IND & GAMMA_RAST_ALPHA_BIT)
446 vColor
= (v3
->v
.color
.alpha
<< 24) |
447 (v3
->v
.color
.blue
<< 16) |
448 (v3
->v
.color
.green
<< 8) |
449 (v3
->v
.color
.red
<< 0);
451 CHECK_DMA_BUFFER(gmesa
, 1);
452 WRITE(gmesa
->buf
, PackedColor4
, vColor
);
454 vColor
= (v3
->v
.color
.blue
<< 16) |
455 (v3
->v
.color
.green
<< 8) |
456 (v3
->v
.color
.red
<< 0);
458 CHECK_DMA_BUFFER(gmesa
, 1);
459 WRITE(gmesa
->buf
, PackedColor3
, vColor
);
463 #if (IND & GAMMA_RAST_TEX_BIT)
464 CHECK_DMA_BUFFER(gmesa
, 6);
465 WRITEF(gmesa
->buf
, Tt2
, v3
->v
.u0
);
466 WRITEF(gmesa
->buf
, Ts2
, v3
->v
.v0
);
467 WRITEF(gmesa
->buf
, Vw
, v3
->v
.w
);
468 WRITEF(gmesa
->buf
, Vz
, v3
->v
.z
);
469 WRITEF(gmesa
->buf
, Vy
, v3
->v
.y
);
470 WRITEF(gmesa
->buf
, Vx4
, v3
->v
.x
);
472 CHECK_DMA_BUFFER(gmesa
, 4);
473 WRITEF(gmesa
->buf
, Vw
, v3
->v
.w
);
474 WRITEF(gmesa
->buf
, Vz
, v3
->v
.z
);
475 WRITEF(gmesa
->buf
, Vy
, v3
->v
.y
);
476 WRITEF(gmesa
->buf
, Vx4
, v3
->v
.x
);
479 #if !(IND & GAMMA_RAST_FLAT_BIT)
480 CHECK_DMA_BUFFER(gmesa
, 1);
481 WRITE(gmesa
->buf
, FlushSpan
, 0);
484 CHECK_DMA_BUFFER(gmesa
, 1);
485 WRITE(gmesa
->buf
, End
, 0);
488 static void TAG(gamma_init
)(void)
490 gamma_point_tab
[IND
] = TAG(gamma_point
);
491 gamma_line_tab
[IND
] = TAG(gamma_line
);
492 gamma_tri_tab
[IND
] = TAG(gamma_triangle
);
493 gamma_quad_tab
[IND
] = TAG(gamma_quad
);