1 static void TAG(gamma_point
)( gammaContextPtr gmesa
,
2 const gammaVertex
*v0
)
7 vBegin
= gmesa
->Begin
| B_PrimType_Points
;
9 CHECK_DMA_BUFFER(gmesa
, 1);
10 WRITE(gmesa
->buf
, Begin
, vBegin
);
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);
18 CHECK_DMA_BUFFER(gmesa
, 1);
19 WRITE(gmesa
->buf
, PackedColor4
, vColor
);
21 vColor
= (v0
->v
.color
.blue
<< 16) |
22 (v0
->v
.color
.green
<< 8) |
23 (v0
->v
.color
.red
<< 0);
25 CHECK_DMA_BUFFER(gmesa
, 1);
26 WRITE(gmesa
->buf
, PackedColor3
, vColor
);
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
);
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
);
45 #if !(IND & GAMMA_RAST_FLAT_BIT)
46 CHECK_DMA_BUFFER(gmesa
, 1);
47 WRITE(gmesa
->buf
, FlushSpan
, 0);
50 CHECK_DMA_BUFFER(gmesa
, 1);
51 WRITE(gmesa
->buf
, End
, 0);
54 static void TAG(gamma_line
)( gammaContextPtr gmesa
,
55 const gammaVertex
*v0
,
56 const gammaVertex
*v1
)
61 vBegin
= gmesa
->Begin
| B_PrimType_Lines
;
63 CHECK_DMA_BUFFER(gmesa
, 1);
64 WRITE(gmesa
->buf
, Begin
, vBegin
);
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);
73 CHECK_DMA_BUFFER(gmesa
, 1);
74 WRITE(gmesa
->buf
, PackedColor4
, vColor
);
76 vColor
= (v0
->v
.color
.blue
<< 16) |
77 (v0
->v
.color
.green
<< 8) |
78 (v0
->v
.color
.red
<< 0);
80 CHECK_DMA_BUFFER(gmesa
, 1);
81 WRITE(gmesa
->buf
, PackedColor3
, vColor
);
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);
90 CHECK_DMA_BUFFER(gmesa
, 1);
91 WRITE(gmesa
->buf
, PackedColor4
, vColor
);
93 vColor
= (v1
->v
.color
.blue
<< 16) |
94 (v1
->v
.color
.green
<< 8) |
95 (v1
->v
.color
.red
<< 0);
97 CHECK_DMA_BUFFER(gmesa
, 1);
98 WRITE(gmesa
->buf
, PackedColor3
, vColor
);
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
);
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
);
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);
125 CHECK_DMA_BUFFER(gmesa
, 1);
126 WRITE(gmesa
->buf
, PackedColor4
, vColor
);
128 vColor
= (v1
->v
.color
.blue
<< 16) |
129 (v1
->v
.color
.green
<< 8) |
130 (v1
->v
.color
.red
<< 0);
132 CHECK_DMA_BUFFER(gmesa
, 1);
133 WRITE(gmesa
->buf
, PackedColor3
, vColor
);
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
);
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
);
153 #if !(IND & GAMMA_RAST_FLAT_BIT)
154 CHECK_DMA_BUFFER(gmesa
, 1);
155 WRITE(gmesa
->buf
, FlushSpan
, 0);
158 CHECK_DMA_BUFFER(gmesa
, 1);
159 WRITE(gmesa
->buf
, End
, 0);
162 static void TAG(gamma_triangle
)( gammaContextPtr gmesa
,
163 const gammaVertex
*v0
,
164 const gammaVertex
*v1
,
165 const gammaVertex
*v2
)
170 vBegin
= gmesa
->Begin
| B_PrimType_Triangles
;
172 CHECK_DMA_BUFFER(gmesa
, 1);
173 WRITE(gmesa
->buf
, Begin
, vBegin
);
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);
182 CHECK_DMA_BUFFER(gmesa
, 1);
183 WRITE(gmesa
->buf
, PackedColor4
, vColor
);
185 vColor
= (v0
->v
.color
.blue
<< 16) |
186 (v0
->v
.color
.green
<< 8) |
187 (v0
->v
.color
.red
<< 0);
189 CHECK_DMA_BUFFER(gmesa
, 1);
190 WRITE(gmesa
->buf
, PackedColor3
, vColor
);
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);
199 CHECK_DMA_BUFFER(gmesa
, 1);
200 WRITE(gmesa
->buf
, PackedColor4
, vColor
);
202 vColor
= (v2
->v
.color
.blue
<< 16) |
203 (v2
->v
.color
.green
<< 8) |
204 (v2
->v
.color
.red
<< 0);
206 CHECK_DMA_BUFFER(gmesa
, 1);
207 WRITE(gmesa
->buf
, PackedColor3
, vColor
);
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
);
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
);
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);
234 CHECK_DMA_BUFFER(gmesa
, 1);
235 WRITE(gmesa
->buf
, PackedColor4
, vColor
);
237 vColor
= (v1
->v
.color
.blue
<< 16) |
238 (v1
->v
.color
.green
<< 8) |
239 (v1
->v
.color
.red
<< 0);
241 CHECK_DMA_BUFFER(gmesa
, 1);
242 WRITE(gmesa
->buf
, PackedColor3
, vColor
);
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
);
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
);
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);
269 CHECK_DMA_BUFFER(gmesa
, 1);
270 WRITE(gmesa
->buf
, PackedColor4
, vColor
);
272 vColor
= (v2
->v
.color
.blue
<< 16) |
273 (v2
->v
.color
.green
<< 8) |
274 (v2
->v
.color
.red
<< 0);
276 CHECK_DMA_BUFFER(gmesa
, 1);
277 WRITE(gmesa
->buf
, PackedColor3
, vColor
);
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
);
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
);
297 #if !(IND & GAMMA_RAST_FLAT_BIT)
298 CHECK_DMA_BUFFER(gmesa
, 1);
299 WRITE(gmesa
->buf
, FlushSpan
, 0);
302 CHECK_DMA_BUFFER(gmesa
, 1);
303 WRITE(gmesa
->buf
, End
, 0);
306 static void TAG(gamma_quad
)( gammaContextPtr gmesa
,
307 const gammaVertex
*v0
,
308 const gammaVertex
*v1
,
309 const gammaVertex
*v2
,
310 const gammaVertex
*v3
)
315 vBegin
= gmesa
->Begin
| B_PrimType_Quads
;
317 CHECK_DMA_BUFFER(gmesa
, 1);
318 WRITE(gmesa
->buf
, Begin
, vBegin
);
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);
327 CHECK_DMA_BUFFER(gmesa
, 1);
328 WRITE(gmesa
->buf
, PackedColor4
, vColor
);
330 vColor
= (v0
->v
.color
.blue
<< 16) |
331 (v0
->v
.color
.green
<< 8) |
332 (v0
->v
.color
.red
<< 0);
334 CHECK_DMA_BUFFER(gmesa
, 1);
335 WRITE(gmesa
->buf
, PackedColor3
, vColor
);
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);
344 CHECK_DMA_BUFFER(gmesa
, 1);
345 WRITE(gmesa
->buf
, PackedColor4
, vColor
);
347 vColor
= (v3
->v
.color
.blue
<< 16) |
348 (v3
->v
.color
.green
<< 8) |
349 (v3
->v
.color
.red
<< 0);
351 CHECK_DMA_BUFFER(gmesa
, 1);
352 WRITE(gmesa
->buf
, PackedColor3
, vColor
);
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
);
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
);
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);
379 CHECK_DMA_BUFFER(gmesa
, 1);
380 WRITE(gmesa
->buf
, PackedColor4
, vColor
);
382 vColor
= (v1
->v
.color
.blue
<< 16) |
383 (v1
->v
.color
.green
<< 8) |
384 (v1
->v
.color
.red
<< 0);
386 CHECK_DMA_BUFFER(gmesa
, 1);
387 WRITE(gmesa
->buf
, PackedColor3
, vColor
);
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
);
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
);
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);
414 CHECK_DMA_BUFFER(gmesa
, 1);
415 WRITE(gmesa
->buf
, PackedColor4
, vColor
);
417 vColor
= (v2
->v
.color
.blue
<< 16) |
418 (v2
->v
.color
.green
<< 8) |
419 (v2
->v
.color
.red
<< 0);
421 CHECK_DMA_BUFFER(gmesa
, 1);
422 WRITE(gmesa
->buf
, PackedColor3
, vColor
);
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
);
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
);
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);
449 CHECK_DMA_BUFFER(gmesa
, 1);
450 WRITE(gmesa
->buf
, PackedColor4
, vColor
);
452 vColor
= (v3
->v
.color
.blue
<< 16) |
453 (v3
->v
.color
.green
<< 8) |
454 (v3
->v
.color
.red
<< 0);
456 CHECK_DMA_BUFFER(gmesa
, 1);
457 WRITE(gmesa
->buf
, PackedColor3
, vColor
);
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
);
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
);
477 #if !(IND & GAMMA_RAST_FLAT_BIT)
478 CHECK_DMA_BUFFER(gmesa
, 1);
479 WRITE(gmesa
->buf
, FlushSpan
, 0);
482 CHECK_DMA_BUFFER(gmesa
, 1);
483 WRITE(gmesa
->buf
, End
, 0);
486 static void TAG(gamma_init
)(void)
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
);