2 static void TAG(gamma_point
)( gammaContextPtr gmesa
,
3 const gammaVertex
*v0
)
8 vBegin
= gmesa
->Begin
| B_PrimType_Points
;
10 CHECK_DMA_BUFFER(gmesa
, 1);
11 WRITE(gmesa
->buf
, Begin
, vBegin
);
13 #if (IND & GAMMA_RAST_ALPHA_BIT)
14 vColor
= (v0
->v
.color
.alpha
<< 24) |
15 (v0
->v
.color
.blue
<< 16) |
16 (v0
->v
.color
.green
<< 8) |
17 (v0
->v
.color
.red
<< 0);
19 CHECK_DMA_BUFFER(gmesa
, 1);
20 WRITE(gmesa
->buf
, PackedColor4
, vColor
);
22 vColor
= (v0
->v
.color
.blue
<< 16) |
23 (v0
->v
.color
.green
<< 8) |
24 (v0
->v
.color
.red
<< 0);
26 CHECK_DMA_BUFFER(gmesa
, 1);
27 WRITE(gmesa
->buf
, PackedColor3
, vColor
);
30 #if (IND & GAMMA_RAST_TEX_BIT)
31 CHECK_DMA_BUFFER(gmesa
, 6);
32 WRITEF(gmesa
->buf
, Tt2
, v0
->v
.u0
);
33 WRITEF(gmesa
->buf
, Ts2
, v0
->v
.v0
);
34 WRITEF(gmesa
->buf
, Vw
, v0
->v
.w
);
35 WRITEF(gmesa
->buf
, Vz
, v0
->v
.z
);
36 WRITEF(gmesa
->buf
, Vy
, v0
->v
.y
);
37 WRITEF(gmesa
->buf
, Vx4
, v0
->v
.x
);
39 CHECK_DMA_BUFFER(gmesa
, 4);
40 WRITEF(gmesa
->buf
, Vw
, v0
->v
.w
);
41 WRITEF(gmesa
->buf
, Vz
, v0
->v
.z
);
42 WRITEF(gmesa
->buf
, Vy
, v0
->v
.y
);
43 WRITEF(gmesa
->buf
, Vx4
, v0
->v
.x
);
46 #if !(IND & GAMMA_RAST_FLAT_BIT)
47 CHECK_DMA_BUFFER(gmesa
, 1);
48 WRITE(gmesa
->buf
, FlushSpan
, 0);
51 CHECK_DMA_BUFFER(gmesa
, 1);
52 WRITE(gmesa
->buf
, End
, 0);
55 static void TAG(gamma_line
)( gammaContextPtr gmesa
,
56 const gammaVertex
*v0
,
57 const gammaVertex
*v1
)
62 vBegin
= gmesa
->Begin
| B_PrimType_Lines
;
64 CHECK_DMA_BUFFER(gmesa
, 1);
65 WRITE(gmesa
->buf
, Begin
, vBegin
);
67 #if !(IND & GAMMA_RAST_FLAT_BIT)
68 #if (IND & GAMMA_RAST_ALPHA_BIT)
69 vColor
= (v0
->v
.color
.alpha
<< 24) |
70 (v0
->v
.color
.blue
<< 16) |
71 (v0
->v
.color
.green
<< 8) |
72 (v0
->v
.color
.red
<< 0);
74 CHECK_DMA_BUFFER(gmesa
, 1);
75 WRITE(gmesa
->buf
, PackedColor4
, vColor
);
77 vColor
= (v0
->v
.color
.blue
<< 16) |
78 (v0
->v
.color
.green
<< 8) |
79 (v0
->v
.color
.red
<< 0);
81 CHECK_DMA_BUFFER(gmesa
, 1);
82 WRITE(gmesa
->buf
, PackedColor3
, vColor
);
85 #if (IND & GAMMA_RAST_ALPHA_BIT)
86 vColor
= (v1
->v
.color
.alpha
<< 24) |
87 (v1
->v
.color
.blue
<< 16) |
88 (v1
->v
.color
.green
<< 8) |
89 (v1
->v
.color
.red
<< 0);
91 CHECK_DMA_BUFFER(gmesa
, 1);
92 WRITE(gmesa
->buf
, PackedColor4
, vColor
);
94 vColor
= (v1
->v
.color
.blue
<< 16) |
95 (v1
->v
.color
.green
<< 8) |
96 (v1
->v
.color
.red
<< 0);
98 CHECK_DMA_BUFFER(gmesa
, 1);
99 WRITE(gmesa
->buf
, PackedColor3
, vColor
);
103 #if (IND & GAMMA_RAST_TEX_BIT)
104 CHECK_DMA_BUFFER(gmesa
, 6);
105 WRITEF(gmesa
->buf
, Tt2
, v0
->v
.u0
);
106 WRITEF(gmesa
->buf
, Ts2
, v0
->v
.v0
);
107 WRITEF(gmesa
->buf
, Vw
, v0
->v
.w
);
108 WRITEF(gmesa
->buf
, Vz
, v0
->v
.z
);
109 WRITEF(gmesa
->buf
, Vy
, v0
->v
.y
);
110 WRITEF(gmesa
->buf
, Vx4
, v0
->v
.x
);
112 CHECK_DMA_BUFFER(gmesa
, 4);
113 WRITEF(gmesa
->buf
, Vw
, v0
->v
.w
);
114 WRITEF(gmesa
->buf
, Vz
, v0
->v
.z
);
115 WRITEF(gmesa
->buf
, Vy
, v0
->v
.y
);
116 WRITEF(gmesa
->buf
, Vx4
, v0
->v
.x
);
119 #if !(IND & GAMMA_RAST_FLAT_BIT)
120 #if (IND & GAMMA_RAST_ALPHA_BIT)
121 vColor
= (v1
->v
.color
.alpha
<< 24) |
122 (v1
->v
.color
.blue
<< 16) |
123 (v1
->v
.color
.green
<< 8) |
124 (v1
->v
.color
.red
<< 0);
126 CHECK_DMA_BUFFER(gmesa
, 1);
127 WRITE(gmesa
->buf
, PackedColor4
, vColor
);
129 vColor
= (v1
->v
.color
.blue
<< 16) |
130 (v1
->v
.color
.green
<< 8) |
131 (v1
->v
.color
.red
<< 0);
133 CHECK_DMA_BUFFER(gmesa
, 1);
134 WRITE(gmesa
->buf
, PackedColor3
, vColor
);
138 #if (IND & GAMMA_RAST_TEX_BIT)
139 CHECK_DMA_BUFFER(gmesa
, 6);
140 WRITEF(gmesa
->buf
, Tt2
, v1
->v
.u0
);
141 WRITEF(gmesa
->buf
, Ts2
, v1
->v
.v0
);
142 WRITEF(gmesa
->buf
, Vw
, v1
->v
.w
);
143 WRITEF(gmesa
->buf
, Vz
, v1
->v
.z
);
144 WRITEF(gmesa
->buf
, Vy
, v1
->v
.y
);
145 WRITEF(gmesa
->buf
, Vx4
, v1
->v
.x
);
147 CHECK_DMA_BUFFER(gmesa
, 4);
148 WRITEF(gmesa
->buf
, Vw
, v1
->v
.w
);
149 WRITEF(gmesa
->buf
, Vz
, v1
->v
.z
);
150 WRITEF(gmesa
->buf
, Vy
, v1
->v
.y
);
151 WRITEF(gmesa
->buf
, Vx4
, v1
->v
.x
);
154 #if !(IND & GAMMA_RAST_FLAT_BIT)
155 CHECK_DMA_BUFFER(gmesa
, 1);
156 WRITE(gmesa
->buf
, FlushSpan
, 0);
159 CHECK_DMA_BUFFER(gmesa
, 1);
160 WRITE(gmesa
->buf
, End
, 0);
163 static void TAG(gamma_triangle
)( gammaContextPtr gmesa
,
164 const gammaVertex
*v0
,
165 const gammaVertex
*v1
,
166 const gammaVertex
*v2
)
171 vBegin
= gmesa
->Begin
| B_PrimType_Triangles
;
173 CHECK_DMA_BUFFER(gmesa
, 1);
174 WRITE(gmesa
->buf
, Begin
, vBegin
);
176 #if !(IND & GAMMA_RAST_FLAT_BIT)
177 #if (IND & GAMMA_RAST_ALPHA_BIT)
178 vColor
= (v0
->v
.color
.alpha
<< 24) |
179 (v0
->v
.color
.blue
<< 16) |
180 (v0
->v
.color
.green
<< 8) |
181 (v0
->v
.color
.red
<< 0);
183 CHECK_DMA_BUFFER(gmesa
, 1);
184 WRITE(gmesa
->buf
, PackedColor4
, vColor
);
186 vColor
= (v0
->v
.color
.blue
<< 16) |
187 (v0
->v
.color
.green
<< 8) |
188 (v0
->v
.color
.red
<< 0);
190 CHECK_DMA_BUFFER(gmesa
, 1);
191 WRITE(gmesa
->buf
, PackedColor3
, vColor
);
194 #if (IND & GAMMA_RAST_ALPHA_BIT)
195 vColor
= (v2
->v
.color
.alpha
<< 24) |
196 (v2
->v
.color
.blue
<< 16) |
197 (v2
->v
.color
.green
<< 8) |
198 (v2
->v
.color
.red
<< 0);
200 CHECK_DMA_BUFFER(gmesa
, 1);
201 WRITE(gmesa
->buf
, PackedColor4
, vColor
);
203 vColor
= (v2
->v
.color
.blue
<< 16) |
204 (v2
->v
.color
.green
<< 8) |
205 (v2
->v
.color
.red
<< 0);
207 CHECK_DMA_BUFFER(gmesa
, 1);
208 WRITE(gmesa
->buf
, PackedColor3
, vColor
);
212 #if (IND & GAMMA_RAST_TEX_BIT)
213 CHECK_DMA_BUFFER(gmesa
, 6);
214 WRITEF(gmesa
->buf
, Tt2
, v0
->v
.u0
);
215 WRITEF(gmesa
->buf
, Ts2
, v0
->v
.v0
);
216 WRITEF(gmesa
->buf
, Vw
, v0
->v
.w
);
217 WRITEF(gmesa
->buf
, Vz
, v0
->v
.z
);
218 WRITEF(gmesa
->buf
, Vy
, v0
->v
.y
);
219 WRITEF(gmesa
->buf
, Vx4
, v0
->v
.x
);
221 CHECK_DMA_BUFFER(gmesa
, 4);
222 WRITEF(gmesa
->buf
, Vw
, v0
->v
.w
);
223 WRITEF(gmesa
->buf
, Vz
, v0
->v
.z
);
224 WRITEF(gmesa
->buf
, Vy
, v0
->v
.y
);
225 WRITEF(gmesa
->buf
, Vx4
, v0
->v
.x
);
228 #if !(IND & GAMMA_RAST_FLAT_BIT)
229 #if (IND & GAMMA_RAST_ALPHA_BIT)
230 vColor
= (v1
->v
.color
.alpha
<< 24) |
231 (v1
->v
.color
.blue
<< 16) |
232 (v1
->v
.color
.green
<< 8) |
233 (v1
->v
.color
.red
<< 0);
235 CHECK_DMA_BUFFER(gmesa
, 1);
236 WRITE(gmesa
->buf
, PackedColor4
, vColor
);
238 vColor
= (v1
->v
.color
.blue
<< 16) |
239 (v1
->v
.color
.green
<< 8) |
240 (v1
->v
.color
.red
<< 0);
242 CHECK_DMA_BUFFER(gmesa
, 1);
243 WRITE(gmesa
->buf
, PackedColor3
, vColor
);
247 #if (IND & GAMMA_RAST_TEX_BIT)
248 CHECK_DMA_BUFFER(gmesa
, 6);
249 WRITEF(gmesa
->buf
, Tt2
, v1
->v
.u0
);
250 WRITEF(gmesa
->buf
, Ts2
, v1
->v
.v0
);
251 WRITEF(gmesa
->buf
, Vw
, v1
->v
.w
);
252 WRITEF(gmesa
->buf
, Vz
, v1
->v
.z
);
253 WRITEF(gmesa
->buf
, Vy
, v1
->v
.y
);
254 WRITEF(gmesa
->buf
, Vx4
, v1
->v
.x
);
256 CHECK_DMA_BUFFER(gmesa
, 4);
257 WRITEF(gmesa
->buf
, Vw
, v1
->v
.w
);
258 WRITEF(gmesa
->buf
, Vz
, v1
->v
.z
);
259 WRITEF(gmesa
->buf
, Vy
, v1
->v
.y
);
260 WRITEF(gmesa
->buf
, Vx4
, v1
->v
.x
);
263 #if !(IND & GAMMA_RAST_FLAT_BIT)
264 #if (IND & GAMMA_RAST_ALPHA_BIT)
265 vColor
= (v2
->v
.color
.alpha
<< 24) |
266 (v2
->v
.color
.blue
<< 16) |
267 (v2
->v
.color
.green
<< 8) |
268 (v2
->v
.color
.red
<< 0);
270 CHECK_DMA_BUFFER(gmesa
, 1);
271 WRITE(gmesa
->buf
, PackedColor4
, vColor
);
273 vColor
= (v2
->v
.color
.blue
<< 16) |
274 (v2
->v
.color
.green
<< 8) |
275 (v2
->v
.color
.red
<< 0);
277 CHECK_DMA_BUFFER(gmesa
, 1);
278 WRITE(gmesa
->buf
, PackedColor3
, vColor
);
282 #if (IND & GAMMA_RAST_TEX_BIT)
283 CHECK_DMA_BUFFER(gmesa
, 6);
284 WRITEF(gmesa
->buf
, Tt2
, v2
->v
.u0
);
285 WRITEF(gmesa
->buf
, Ts2
, v2
->v
.v0
);
286 WRITEF(gmesa
->buf
, Vw
, v2
->v
.w
);
287 WRITEF(gmesa
->buf
, Vz
, v2
->v
.z
);
288 WRITEF(gmesa
->buf
, Vy
, v2
->v
.y
);
289 WRITEF(gmesa
->buf
, Vx4
, v2
->v
.x
);
291 CHECK_DMA_BUFFER(gmesa
, 4);
292 WRITEF(gmesa
->buf
, Vw
, v2
->v
.w
);
293 WRITEF(gmesa
->buf
, Vz
, v2
->v
.z
);
294 WRITEF(gmesa
->buf
, Vy
, v2
->v
.y
);
295 WRITEF(gmesa
->buf
, Vx4
, v2
->v
.x
);
298 #if !(IND & GAMMA_RAST_FLAT_BIT)
299 CHECK_DMA_BUFFER(gmesa
, 1);
300 WRITE(gmesa
->buf
, FlushSpan
, 0);
303 CHECK_DMA_BUFFER(gmesa
, 1);
304 WRITE(gmesa
->buf
, End
, 0);
307 static void TAG(gamma_quad
)( gammaContextPtr gmesa
,
308 const gammaVertex
*v0
,
309 const gammaVertex
*v1
,
310 const gammaVertex
*v2
,
311 const gammaVertex
*v3
)
316 vBegin
= gmesa
->Begin
| B_PrimType_Quads
;
318 CHECK_DMA_BUFFER(gmesa
, 1);
319 WRITE(gmesa
->buf
, Begin
, vBegin
);
321 #if !(IND & GAMMA_RAST_FLAT_BIT)
322 #if (IND & GAMMA_RAST_ALPHA_BIT)
323 vColor
= (v0
->v
.color
.alpha
<< 24) |
324 (v0
->v
.color
.blue
<< 16) |
325 (v0
->v
.color
.green
<< 8) |
326 (v0
->v
.color
.red
<< 0);
328 CHECK_DMA_BUFFER(gmesa
, 1);
329 WRITE(gmesa
->buf
, PackedColor4
, vColor
);
331 vColor
= (v0
->v
.color
.blue
<< 16) |
332 (v0
->v
.color
.green
<< 8) |
333 (v0
->v
.color
.red
<< 0);
335 CHECK_DMA_BUFFER(gmesa
, 1);
336 WRITE(gmesa
->buf
, PackedColor3
, vColor
);
339 #if (IND & GAMMA_RAST_ALPHA_BIT)
340 vColor
= (v3
->v
.color
.alpha
<< 24) |
341 (v3
->v
.color
.blue
<< 16) |
342 (v3
->v
.color
.green
<< 8) |
343 (v3
->v
.color
.red
<< 0);
345 CHECK_DMA_BUFFER(gmesa
, 1);
346 WRITE(gmesa
->buf
, PackedColor4
, vColor
);
348 vColor
= (v3
->v
.color
.blue
<< 16) |
349 (v3
->v
.color
.green
<< 8) |
350 (v3
->v
.color
.red
<< 0);
352 CHECK_DMA_BUFFER(gmesa
, 1);
353 WRITE(gmesa
->buf
, PackedColor3
, vColor
);
357 #if (IND & GAMMA_RAST_TEX_BIT)
358 CHECK_DMA_BUFFER(gmesa
, 6);
359 WRITEF(gmesa
->buf
, Tt2
, v0
->v
.u0
);
360 WRITEF(gmesa
->buf
, Ts2
, v0
->v
.v0
);
361 WRITEF(gmesa
->buf
, Vw
, v0
->v
.w
);
362 WRITEF(gmesa
->buf
, Vz
, v0
->v
.z
);
363 WRITEF(gmesa
->buf
, Vy
, v0
->v
.y
);
364 WRITEF(gmesa
->buf
, Vx4
, v0
->v
.x
);
366 CHECK_DMA_BUFFER(gmesa
, 4);
367 WRITEF(gmesa
->buf
, Vw
, v0
->v
.w
);
368 WRITEF(gmesa
->buf
, Vz
, v0
->v
.z
);
369 WRITEF(gmesa
->buf
, Vy
, v0
->v
.y
);
370 WRITEF(gmesa
->buf
, Vx4
, v0
->v
.x
);
373 #if !(IND & GAMMA_RAST_FLAT_BIT)
374 #if (IND & GAMMA_RAST_ALPHA_BIT)
375 vColor
= (v1
->v
.color
.alpha
<< 24) |
376 (v1
->v
.color
.blue
<< 16) |
377 (v1
->v
.color
.green
<< 8) |
378 (v1
->v
.color
.red
<< 0);
380 CHECK_DMA_BUFFER(gmesa
, 1);
381 WRITE(gmesa
->buf
, PackedColor4
, vColor
);
383 vColor
= (v1
->v
.color
.blue
<< 16) |
384 (v1
->v
.color
.green
<< 8) |
385 (v1
->v
.color
.red
<< 0);
387 CHECK_DMA_BUFFER(gmesa
, 1);
388 WRITE(gmesa
->buf
, PackedColor3
, vColor
);
392 #if (IND & GAMMA_RAST_TEX_BIT)
393 CHECK_DMA_BUFFER(gmesa
, 6);
394 WRITEF(gmesa
->buf
, Tt2
, v1
->v
.u0
);
395 WRITEF(gmesa
->buf
, Ts2
, v1
->v
.v0
);
396 WRITEF(gmesa
->buf
, Vw
, v1
->v
.w
);
397 WRITEF(gmesa
->buf
, Vz
, v1
->v
.z
);
398 WRITEF(gmesa
->buf
, Vy
, v1
->v
.y
);
399 WRITEF(gmesa
->buf
, Vx4
, v1
->v
.x
);
401 CHECK_DMA_BUFFER(gmesa
, 4);
402 WRITEF(gmesa
->buf
, Vw
, v1
->v
.w
);
403 WRITEF(gmesa
->buf
, Vz
, v1
->v
.z
);
404 WRITEF(gmesa
->buf
, Vy
, v1
->v
.y
);
405 WRITEF(gmesa
->buf
, Vx4
, v1
->v
.x
);
408 #if !(IND & GAMMA_RAST_FLAT_BIT)
409 #if (IND & GAMMA_RAST_ALPHA_BIT)
410 vColor
= (v2
->v
.color
.alpha
<< 24) |
411 (v2
->v
.color
.blue
<< 16) |
412 (v2
->v
.color
.green
<< 8) |
413 (v2
->v
.color
.red
<< 0);
415 CHECK_DMA_BUFFER(gmesa
, 1);
416 WRITE(gmesa
->buf
, PackedColor4
, vColor
);
418 vColor
= (v2
->v
.color
.blue
<< 16) |
419 (v2
->v
.color
.green
<< 8) |
420 (v2
->v
.color
.red
<< 0);
422 CHECK_DMA_BUFFER(gmesa
, 1);
423 WRITE(gmesa
->buf
, PackedColor3
, vColor
);
427 #if (IND & GAMMA_RAST_TEX_BIT)
428 CHECK_DMA_BUFFER(gmesa
, 6);
429 WRITEF(gmesa
->buf
, Tt2
, v2
->v
.u0
);
430 WRITEF(gmesa
->buf
, Ts2
, v2
->v
.v0
);
431 WRITEF(gmesa
->buf
, Vw
, v2
->v
.w
);
432 WRITEF(gmesa
->buf
, Vz
, v2
->v
.z
);
433 WRITEF(gmesa
->buf
, Vy
, v2
->v
.y
);
434 WRITEF(gmesa
->buf
, Vx4
, v2
->v
.x
);
436 CHECK_DMA_BUFFER(gmesa
, 4);
437 WRITEF(gmesa
->buf
, Vw
, v2
->v
.w
);
438 WRITEF(gmesa
->buf
, Vz
, v2
->v
.z
);
439 WRITEF(gmesa
->buf
, Vy
, v2
->v
.y
);
440 WRITEF(gmesa
->buf
, Vx4
, v2
->v
.x
);
443 #if !(IND & GAMMA_RAST_FLAT_BIT)
444 #if (IND & GAMMA_RAST_ALPHA_BIT)
445 vColor
= (v3
->v
.color
.alpha
<< 24) |
446 (v3
->v
.color
.blue
<< 16) |
447 (v3
->v
.color
.green
<< 8) |
448 (v3
->v
.color
.red
<< 0);
450 CHECK_DMA_BUFFER(gmesa
, 1);
451 WRITE(gmesa
->buf
, PackedColor4
, vColor
);
453 vColor
= (v3
->v
.color
.blue
<< 16) |
454 (v3
->v
.color
.green
<< 8) |
455 (v3
->v
.color
.red
<< 0);
457 CHECK_DMA_BUFFER(gmesa
, 1);
458 WRITE(gmesa
->buf
, PackedColor3
, vColor
);
462 #if (IND & GAMMA_RAST_TEX_BIT)
463 CHECK_DMA_BUFFER(gmesa
, 6);
464 WRITEF(gmesa
->buf
, Tt2
, v3
->v
.u0
);
465 WRITEF(gmesa
->buf
, Ts2
, v3
->v
.v0
);
466 WRITEF(gmesa
->buf
, Vw
, v3
->v
.w
);
467 WRITEF(gmesa
->buf
, Vz
, v3
->v
.z
);
468 WRITEF(gmesa
->buf
, Vy
, v3
->v
.y
);
469 WRITEF(gmesa
->buf
, Vx4
, v3
->v
.x
);
471 CHECK_DMA_BUFFER(gmesa
, 4);
472 WRITEF(gmesa
->buf
, Vw
, v3
->v
.w
);
473 WRITEF(gmesa
->buf
, Vz
, v3
->v
.z
);
474 WRITEF(gmesa
->buf
, Vy
, v3
->v
.y
);
475 WRITEF(gmesa
->buf
, Vx4
, v3
->v
.x
);
478 #if !(IND & GAMMA_RAST_FLAT_BIT)
479 CHECK_DMA_BUFFER(gmesa
, 1);
480 WRITE(gmesa
->buf
, FlushSpan
, 0);
483 CHECK_DMA_BUFFER(gmesa
, 1);
484 WRITE(gmesa
->buf
, End
, 0);
487 static void TAG(gamma_init
)(void)
489 gamma_point_tab
[IND
] = TAG(gamma_point
);
490 gamma_line_tab
[IND
] = TAG(gamma_line
);
491 gamma_tri_tab
[IND
] = TAG(gamma_triangle
);
492 gamma_quad_tab
[IND
] = TAG(gamma_quad
);