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);