Merge branch 'mesa_7_6_branch' of git+ssh://agd5f@git.freedesktop.org/git/mesa/mesa
[mesa.git] / src / mesa / drivers / dri / gamma / gamma_tritmp.h
1
2 static void TAG(gamma_point)( gammaContextPtr gmesa,
3 const gammaVertex *v0 )
4 {
5 uint32_t vColor;
6 uint32_t vBegin;
7
8 vBegin = gmesa->Begin | B_PrimType_Points;
9
10 CHECK_DMA_BUFFER(gmesa, 1);
11 WRITE(gmesa->buf, Begin, vBegin);
12
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);
18
19 CHECK_DMA_BUFFER(gmesa, 1);
20 WRITE(gmesa->buf, PackedColor4, vColor);
21 #else
22 vColor = (v0->v.color.blue << 16) |
23 (v0->v.color.green << 8) |
24 (v0->v.color.red << 0);
25
26 CHECK_DMA_BUFFER(gmesa, 1);
27 WRITE(gmesa->buf, PackedColor3, vColor);
28 #endif
29
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);
38 #else
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);
44 #endif
45
46 #if !(IND & GAMMA_RAST_FLAT_BIT)
47 CHECK_DMA_BUFFER(gmesa, 1);
48 WRITE(gmesa->buf, FlushSpan, 0);
49 #endif
50
51 CHECK_DMA_BUFFER(gmesa, 1);
52 WRITE(gmesa->buf, End, 0);
53 }
54
55 static void TAG(gamma_line)( gammaContextPtr gmesa,
56 const gammaVertex *v0,
57 const gammaVertex *v1 )
58 {
59 uint32_t vColor;
60 uint32_t vBegin;
61
62 vBegin = gmesa->Begin | B_PrimType_Lines;
63
64 CHECK_DMA_BUFFER(gmesa, 1);
65 WRITE(gmesa->buf, Begin, vBegin);
66
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);
73
74 CHECK_DMA_BUFFER(gmesa, 1);
75 WRITE(gmesa->buf, PackedColor4, vColor);
76 #else
77 vColor = (v0->v.color.blue << 16) |
78 (v0->v.color.green << 8) |
79 (v0->v.color.red << 0);
80
81 CHECK_DMA_BUFFER(gmesa, 1);
82 WRITE(gmesa->buf, PackedColor3, vColor);
83 #endif
84 #else
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);
90
91 CHECK_DMA_BUFFER(gmesa, 1);
92 WRITE(gmesa->buf, PackedColor4, vColor);
93 #else
94 vColor = (v1->v.color.blue << 16) |
95 (v1->v.color.green << 8) |
96 (v1->v.color.red << 0);
97
98 CHECK_DMA_BUFFER(gmesa, 1);
99 WRITE(gmesa->buf, PackedColor3, vColor);
100 #endif
101 #endif
102
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);
111 #else
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);
117 #endif
118
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);
125
126 CHECK_DMA_BUFFER(gmesa, 1);
127 WRITE(gmesa->buf, PackedColor4, vColor);
128 #else
129 vColor = (v1->v.color.blue << 16) |
130 (v1->v.color.green << 8) |
131 (v1->v.color.red << 0);
132
133 CHECK_DMA_BUFFER(gmesa, 1);
134 WRITE(gmesa->buf, PackedColor3, vColor);
135 #endif
136 #endif
137
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);
146 #else
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);
152 #endif
153
154 #if !(IND & GAMMA_RAST_FLAT_BIT)
155 CHECK_DMA_BUFFER(gmesa, 1);
156 WRITE(gmesa->buf, FlushSpan, 0);
157 #endif
158
159 CHECK_DMA_BUFFER(gmesa, 1);
160 WRITE(gmesa->buf, End, 0);
161 }
162
163 static void TAG(gamma_triangle)( gammaContextPtr gmesa,
164 const gammaVertex *v0,
165 const gammaVertex *v1,
166 const gammaVertex *v2 )
167 {
168 uint32_t vColor;
169 uint32_t vBegin;
170
171 vBegin = gmesa->Begin | B_PrimType_Triangles;
172
173 CHECK_DMA_BUFFER(gmesa, 1);
174 WRITE(gmesa->buf, Begin, vBegin);
175
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);
182
183 CHECK_DMA_BUFFER(gmesa, 1);
184 WRITE(gmesa->buf, PackedColor4, vColor);
185 #else
186 vColor = (v0->v.color.blue << 16) |
187 (v0->v.color.green << 8) |
188 (v0->v.color.red << 0);
189
190 CHECK_DMA_BUFFER(gmesa, 1);
191 WRITE(gmesa->buf, PackedColor3, vColor);
192 #endif
193 #else
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);
199
200 CHECK_DMA_BUFFER(gmesa, 1);
201 WRITE(gmesa->buf, PackedColor4, vColor);
202 #else
203 vColor = (v2->v.color.blue << 16) |
204 (v2->v.color.green << 8) |
205 (v2->v.color.red << 0);
206
207 CHECK_DMA_BUFFER(gmesa, 1);
208 WRITE(gmesa->buf, PackedColor3, vColor);
209 #endif
210 #endif
211
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);
220 #else
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);
226 #endif
227
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);
234
235 CHECK_DMA_BUFFER(gmesa, 1);
236 WRITE(gmesa->buf, PackedColor4, vColor);
237 #else
238 vColor = (v1->v.color.blue << 16) |
239 (v1->v.color.green << 8) |
240 (v1->v.color.red << 0);
241
242 CHECK_DMA_BUFFER(gmesa, 1);
243 WRITE(gmesa->buf, PackedColor3, vColor);
244 #endif
245 #endif
246
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);
255 #else
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);
261 #endif
262
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);
269
270 CHECK_DMA_BUFFER(gmesa, 1);
271 WRITE(gmesa->buf, PackedColor4, vColor);
272 #else
273 vColor = (v2->v.color.blue << 16) |
274 (v2->v.color.green << 8) |
275 (v2->v.color.red << 0);
276
277 CHECK_DMA_BUFFER(gmesa, 1);
278 WRITE(gmesa->buf, PackedColor3, vColor);
279 #endif
280 #endif
281
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);
290 #else
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);
296 #endif
297
298 #if !(IND & GAMMA_RAST_FLAT_BIT)
299 CHECK_DMA_BUFFER(gmesa, 1);
300 WRITE(gmesa->buf, FlushSpan, 0);
301 #endif
302
303 CHECK_DMA_BUFFER(gmesa, 1);
304 WRITE(gmesa->buf, End, 0);
305 }
306
307 static void TAG(gamma_quad)( gammaContextPtr gmesa,
308 const gammaVertex *v0,
309 const gammaVertex *v1,
310 const gammaVertex *v2,
311 const gammaVertex *v3 )
312 {
313 uint32_t vColor;
314 uint32_t vBegin;
315
316 vBegin = gmesa->Begin | B_PrimType_Quads;
317
318 CHECK_DMA_BUFFER(gmesa, 1);
319 WRITE(gmesa->buf, Begin, vBegin);
320
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);
327
328 CHECK_DMA_BUFFER(gmesa, 1);
329 WRITE(gmesa->buf, PackedColor4, vColor);
330 #else
331 vColor = (v0->v.color.blue << 16) |
332 (v0->v.color.green << 8) |
333 (v0->v.color.red << 0);
334
335 CHECK_DMA_BUFFER(gmesa, 1);
336 WRITE(gmesa->buf, PackedColor3, vColor);
337 #endif
338 #else
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);
344
345 CHECK_DMA_BUFFER(gmesa, 1);
346 WRITE(gmesa->buf, PackedColor4, vColor);
347 #else
348 vColor = (v3->v.color.blue << 16) |
349 (v3->v.color.green << 8) |
350 (v3->v.color.red << 0);
351
352 CHECK_DMA_BUFFER(gmesa, 1);
353 WRITE(gmesa->buf, PackedColor3, vColor);
354 #endif
355 #endif
356
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);
365 #else
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);
371 #endif
372
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);
379
380 CHECK_DMA_BUFFER(gmesa, 1);
381 WRITE(gmesa->buf, PackedColor4, vColor);
382 #else
383 vColor = (v1->v.color.blue << 16) |
384 (v1->v.color.green << 8) |
385 (v1->v.color.red << 0);
386
387 CHECK_DMA_BUFFER(gmesa, 1);
388 WRITE(gmesa->buf, PackedColor3, vColor);
389 #endif
390 #endif
391
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);
400 #else
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);
406 #endif
407
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);
414
415 CHECK_DMA_BUFFER(gmesa, 1);
416 WRITE(gmesa->buf, PackedColor4, vColor);
417 #else
418 vColor = (v2->v.color.blue << 16) |
419 (v2->v.color.green << 8) |
420 (v2->v.color.red << 0);
421
422 CHECK_DMA_BUFFER(gmesa, 1);
423 WRITE(gmesa->buf, PackedColor3, vColor);
424 #endif
425 #endif
426
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);
435 #else
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);
441 #endif
442
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);
449
450 CHECK_DMA_BUFFER(gmesa, 1);
451 WRITE(gmesa->buf, PackedColor4, vColor);
452 #else
453 vColor = (v3->v.color.blue << 16) |
454 (v3->v.color.green << 8) |
455 (v3->v.color.red << 0);
456
457 CHECK_DMA_BUFFER(gmesa, 1);
458 WRITE(gmesa->buf, PackedColor3, vColor);
459 #endif
460 #endif
461
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);
470 #else
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);
476 #endif
477
478 #if !(IND & GAMMA_RAST_FLAT_BIT)
479 CHECK_DMA_BUFFER(gmesa, 1);
480 WRITE(gmesa->buf, FlushSpan, 0);
481 #endif
482
483 CHECK_DMA_BUFFER(gmesa, 1);
484 WRITE(gmesa->buf, End, 0);
485 }
486
487 static void TAG(gamma_init)(void)
488 {
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);
493 }
494
495 #undef IND
496 #undef TAG