Translate MESA GLSL opcodes to TGSI opcodes.
[mesa.git] / src / mesa / pipe / tgsi / core / tgsi_token.h
1 #if !defined TGSI_TOKEN_H
2 #define TGSI_TOKEN_H
3
4 #if defined __cplusplus
5 extern "C" {
6 #endif // defined __cplusplus
7
8 struct tgsi_version
9 {
10 GLuint MajorVersion : 8;
11 GLuint MinorVersion : 8;
12 GLuint Padding : 16;
13 };
14
15 struct tgsi_header
16 {
17 GLuint HeaderSize : 8;
18 GLuint BodySize : 24;
19 };
20
21 #define TGSI_PROCESSOR_FRAGMENT 0
22 #define TGSI_PROCESSOR_VERTEX 1
23 #define TGSI_PROCESSOR_GEOMETRY 2
24
25 struct tgsi_processor
26 {
27 GLuint Processor : 4; /* TGSI_PROCESSOR_ */
28 GLuint Padding : 28;
29 };
30
31 #define TGSI_TOKEN_TYPE_DECLARATION 0
32 #define TGSI_TOKEN_TYPE_IMMEDIATE 1
33 #define TGSI_TOKEN_TYPE_INSTRUCTION 2
34
35 struct tgsi_token
36 {
37 GLuint Type : 4; /* TGSI_TOKEN_TYPE_ */
38 GLuint Size : 8; /* UINT */
39 GLuint Padding : 19;
40 GLuint Extended : 1; /* BOOL */
41 };
42
43 #define TGSI_FILE_NULL 0
44 #define TGSI_FILE_CONSTANT 1
45 #define TGSI_FILE_INPUT 2
46 #define TGSI_FILE_OUTPUT 3
47 #define TGSI_FILE_TEMPORARY 4
48 #define TGSI_FILE_SAMPLER 5
49 #define TGSI_FILE_ADDRESS 6
50 #define TGSI_FILE_IMMEDIATE 7
51
52 #define TGSI_DECLARE_RANGE 0
53 #define TGSI_DECLARE_MASK 1
54
55 struct tgsi_declaration
56 {
57 GLuint Type : 4; /* TGSI_TOKEN_TYPE_DECLARATION */
58 GLuint Size : 8; /* UINT */
59 GLuint File : 4; /* TGSI_FILE_ */
60 GLuint Declare : 4; /* TGSI_DECLARE_ */
61 GLuint Interpolate : 1; /* BOOL */
62 GLuint Padding : 10;
63 GLuint Extended : 1; /* BOOL */
64 };
65
66 struct tgsi_declaration_range
67 {
68 GLuint First : 16; /* UINT */
69 GLuint Last : 16; /* UINT */
70 };
71
72 struct tgsi_declaration_mask
73 {
74 GLuint Mask : 32; /* UINT */
75 };
76
77 #define TGSI_INTERPOLATE_CONSTANT 0
78 #define TGSI_INTERPOLATE_LINEAR 1
79 #define TGSI_INTERPOLATE_PERSPECTIVE 2
80
81 struct tgsi_declaration_interpolation
82 {
83 GLuint Interpolate : 4; /* TGSI_INTERPOLATE_ */
84 GLuint Padding : 28;
85 };
86
87 #define TGSI_IMM_FLOAT32 0
88
89 struct tgsi_immediate
90 {
91 GLuint Type : 4; /* TGSI_TOKEN_TYPE_IMMEDIATE */
92 GLuint Size : 8; /* UINT */
93 GLuint DataType : 4; /* TGSI_IMM_ */
94 GLuint Padding : 15;
95 GLuint Extended : 1; /* BOOL */
96 };
97
98 struct tgsi_immediate_float32
99 {
100 GLfloat Float;
101 };
102
103 /*
104 * GL_NV_vertex_program
105 */
106 #define TGSI_OPCODE_ARL 0
107 #define TGSI_OPCODE_MOV 1
108 #define TGSI_OPCODE_LIT 2
109 #define TGSI_OPCODE_RCP 3
110 #define TGSI_OPCODE_RSQ 4
111 #define TGSI_OPCODE_EXP 5
112 #define TGSI_OPCODE_LOG 6
113 #define TGSI_OPCODE_MUL 7
114 #define TGSI_OPCODE_ADD 8
115 #define TGSI_OPCODE_DP3 9
116 #define TGSI_OPCODE_DP4 10
117 #define TGSI_OPCODE_DST 11
118 #define TGSI_OPCODE_MIN 12
119 #define TGSI_OPCODE_MAX 13
120 #define TGSI_OPCODE_SLT 14
121 #define TGSI_OPCODE_SGE 15
122 #define TGSI_OPCODE_MAD 16
123
124 /*
125 * GL_ATI_fragment_shader
126 */
127 /* TGSI_OPCODE_MOV */
128 /* TGSI_OPCODE_ADD */
129 /* TGSI_OPCODE_MUL */
130 #define TGSI_OPCODE_SUB 17
131 #define TGSI_OPCODE_DOT3 TGSI_OPCODE_DP3
132 #define TGSI_OPCODE_DOT4 TGSI_OPCODE_DP4
133 /* TGSI_OPCODE_MAD */
134 #define TGSI_OPCODE_LERP 18
135 #define TGSI_OPCODE_CND 19
136 #define TGSI_OPCODE_CND0 20
137 #define TGSI_OPCODE_DOT2ADD 21
138
139 /*
140 * GL_EXT_vertex_shader
141 */
142 #define TGSI_OPCODE_INDEX 22
143 #define TGSI_OPCODE_NEGATE 23
144 /* TGSI_OPCODE_DOT3 */
145 /* TGSI_OPCODE_DOT4 */
146 /* TGSI_OPCODE_MUL */
147 /* TGSI_OPCODE_ADD */
148 #define TGSI_OPCODE_MADD TGSI_OPCODE_MAD
149 #define TGSI_OPCODE_FRAC 24
150 /* TGSI_OPCODE_MAX */
151 /* TGSI_OPCODE_MIN */
152 #define TGSI_OPCODE_SETGE TGSI_OPCODE_SGE
153 #define TGSI_OPCODE_SETLT TGSI_OPCODE_SLT
154 #define TGSI_OPCODE_CLAMP 25
155 #define TGSI_OPCODE_FLOOR 26
156 #define TGSI_OPCODE_ROUND 27
157 #define TGSI_OPCODE_EXPBASE2 28
158 #define TGSI_OPCODE_LOGBASE2 29
159 #define TGSI_OPCODE_POWER 30
160 #define TGSI_OPCODE_RECIP TGSI_OPCODE_RCP
161 #define TGSI_OPCODE_RECIPSQRT TGSI_OPCODE_RSQ
162 /* TGSI_OPCODE_SUB */
163 #define TGSI_OPCODE_CROSSPRODUCT 31
164 #define TGSI_OPCODE_MULTIPLYMATRIX 32
165 /* TGSI_OPCODE_MOV */
166
167 /*
168 * GL_NV_vertex_program1_1
169 */
170 /* TGSI_OPCODE_ARL */
171 /* TGSI_OPCODE_MOV */
172 /* TGSI_OPCODE_LIT */
173 #define TGSI_OPCODE_ABS 33
174 /* TGSI_OPCODE_RCP */
175 /* TGSI_OPCODE_RSQ */
176 /* TGSI_OPCODE_EXP */
177 /* TGSI_OPCODE_LOG */
178 #define TGSI_OPCODE_RCC 34
179 /* TGSI_OPCODE_MUL */
180 /* TGSI_OPCODE_ADD */
181 /* TGSI_OPCODE_DP3 */
182 /* TGSI_OPCODE_DP4 */
183 /* TGSI_OPCODE_DST */
184 /* TGSI_OPCODE_MIN */
185 /* TGSI_OPCODE_MAX */
186 /* TGSI_OPCODE_SLT */
187 /* TGSI_OPCODE_SGE */
188 #define TGSI_OPCODE_DPH 35
189 /* TGSI_OPCODE_SUB */
190 /* TGSI_OPCODE_MAD */
191
192 /*
193 * GL_NV_fragment_program
194 */
195 /* TGSI_OPCODE_ADD */
196 #define TGSI_OPCODE_COS 36
197 #define TGSI_OPCODE_DDX 37
198 #define TGSI_OPCODE_DDY 38
199 /* TGSI_OPCODE_DP3 */
200 /* TGSI_OPCODE_DP4 */
201 /* TGSI_OPCODE_DST */
202 #define TGSI_OPCODE_EX2 TGSI_OPCODE_EXPBASE2
203 #define TGSI_OPCODE_FLR TGSI_OPCODE_FLOOR
204 #define TGSI_OPCODE_FRC TGSI_OPCODE_FRAC
205 #define TGSI_OPCODE_KIL 39
206 #define TGSI_OPCODE_LG2 TGSI_OPCODE_LOGBASE2
207 /* TGSI_OPCODE_LIT */
208 #define TGSI_OPCODE_LRP TGSI_OPCODE_LERP
209 /* TGSI_OPCODE_MAD */
210 /* TGSI_OPCODE_MAX */
211 /* TGSI_OPCODE_MIN */
212 /* TGSI_OPCODE_MOV */
213 /* TGSI_OPCODE_MUL */
214 #define TGSI_OPCODE_PK2H 40
215 #define TGSI_OPCODE_PK2US 41
216 #define TGSI_OPCODE_PK4B 42
217 #define TGSI_OPCODE_PK4UB 43
218 #define TGSI_OPCODE_POW TGSI_OPCODE_POWER
219 /* TGSI_OPCODE_RCP */
220 #define TGSI_OPCODE_RFL 44
221 /* TGSI_OPCODE_RSQ */
222 #define TGSI_OPCODE_SEQ 45
223 #define TGSI_OPCODE_SFL 46
224 /* TGSI_OPCODE_SGE */
225 #define TGSI_OPCODE_SGT 47
226 #define TGSI_OPCODE_SIN 48
227 #define TGSI_OPCODE_SLE 49
228 /* TGSI_OPCODE_SLT */
229 #define TGSI_OPCODE_SNE 50
230 #define TGSI_OPCODE_STR 51
231 /* TGSI_OPCODE_SUB */
232 #define TGSI_OPCODE_TEX 52
233 #define TGSI_OPCODE_TXD 53
234 /* TGSI_OPCODE_TXP - use TGSI_OPCODE_TEX */
235 #define TGSI_OPCODE_UP2H 54
236 #define TGSI_OPCODE_UP2US 55
237 #define TGSI_OPCODE_UP4B 56
238 #define TGSI_OPCODE_UP4UB 57
239 #define TGSI_OPCODE_X2D 58
240
241 /*
242 * GL_NV_vertex_program2
243 */
244 /* TGSI_OPCODE_ABS */
245 /* TGSI_OPCODE_ADD */
246 #define TGSI_OPCODE_ARA 59
247 /* TGSI_OPCODE_ARL */
248 #define TGSI_OPCODE_ARR 60
249 #define TGSI_OPCODE_BRA 61
250 #define TGSI_OPCODE_CAL 62
251 /* TGSI_OPCODE_COS */
252 /* TGSI_OPCODE_DP3 */
253 /* TGSI_OPCODE_DP4 */
254 /* TGSI_OPCODE_DPH */
255 /* TGSI_OPCODE_DST */
256 /* TGSI_OPCODE_EX2 */
257 /* TGSI_OPCODE_EXP */
258 /* TGSI_OPCODE_FLR */
259 /* TGSI_OPCODE_FRC */
260 /* TGSI_OPCODE_LG2 */
261 /* TGSI_OPCODE_LIT */
262 /* TGSI_OPCODE_LOG */
263 /* TGSI_OPCODE_MAD */
264 /* TGSI_OPCODE_MAX */
265 /* TGSI_OPCODE_MIN */
266 /* TGSI_OPCODE_MOV */
267 /* TGSI_OPCODE_MUL */
268 /* TGSI_OPCODE_RCC */
269 /* TGSI_OPCODE_RCP */
270 #define TGSI_OPCODE_RET 63
271 /* TGSI_OPCODE_RSQNV - use TGSI_OPCODE_RSQ */
272 /* TGSI_OPCODE_SEQ */
273 /* TGSI_OPCODE_SFL */
274 /* TGSI_OPCODE_SGE */
275 /* TGSI_OPCODE_SGT */
276 /* TGSI_OPCODE_SIN */
277 /* TGSI_OPCODE_SLE */
278 /* TGSI_OPCODE_SLT */
279 /* TGSI_OPCODE_SNE */
280 #define TGSI_OPCODE_SSG 64
281 /* TGSI_OPCODE_STR */
282 /* TGSI_OPCODE_SUB */
283
284 /*
285 * GL_ARB_vertex_program
286 */
287 /* TGSI_OPCODE_ABS */
288 /* TGSI_OPCODE_ADD */
289 /* TGSI_OPCODE_ARL */
290 /* TGSI_OPCODE_DP3 */
291 /* TGSI_OPCODE_DP4 */
292 /* TGSI_OPCODE_DPH */
293 /* TGSI_OPCODE_DST */
294 /* TGSI_OPCODE_EX2 */
295 /* TGSI_OPCODE_EXP */
296 /* TGSI_OPCODE_FLR */
297 /* TGSI_OPCODE_FRC */
298 /* TGSI_OPCODE_LG2 */
299 /* TGSI_OPCODE_LIT */
300 /* TGSI_OPCODE_LOG */
301 /* TGSI_OPCODE_MAD */
302 /* TGSI_OPCODE_MAX */
303 /* TGSI_OPCODE_MIN */
304 /* TGSI_OPCODE_MOV */
305 /* TGSI_OPCODE_MUL */
306 /* TGSI_OPCODE_POW */
307 /* TGSI_OPCODE_RCP */
308 /* TGSI_OPCODE_RSQ */
309 /* TGSI_OPCODE_SGE */
310 /* TGSI_OPCODE_SLT */
311 /* TGSI_OPCODE_SUB */
312 #define TGSI_OPCODE_SWZ TGSI_OPCODE_MOV
313 #define TGSI_OPCODE_XPD TGSI_OPCODE_CROSSPRODUCT
314
315 /*
316 * GL_ARB_fragment_program
317 */
318 /* TGSI_OPCODE_ABS */
319 /* TGSI_OPCODE_ADD */
320 #define TGSI_OPCODE_CMP 65
321 /* TGSI_OPCODE_COS */
322 /* TGSI_OPCODE_DP3 */
323 /* TGSI_OPCODE_DP4 */
324 /* TGSI_OPCODE_DPH */
325 /* TGSI_OPCODE_DST */
326 /* TGSI_OPCODE_EX2 */
327 /* TGSI_OPCODE_FLR */
328 /* TGSI_OPCODE_FRC */
329 /* TGSI_OPCODE_LG2 */
330 /* TGSI_OPCODE_LIT */
331 /* TGSI_OPCODE_LRP */
332 /* TGSI_OPCODE_MAD */
333 /* TGSI_OPCODE_MAX */
334 /* TGSI_OPCODE_MIN */
335 /* TGSI_OPCODE_MOV */
336 /* TGSI_OPCODE_MUL */
337 /* TGSI_OPCODE_POW */
338 /* TGSI_OPCODE_RCP */
339 /* TGSI_OPCODE_RSQ */
340 #define TGSI_OPCODE_SCS 66
341 /* TGSI_OPCODE_SGE */
342 /* TGSI_OPCODE_SIN */
343 /* TGSI_OPCODE_SLT */
344 /* TGSI_OPCODE_SUB */
345 /* TGSI_OPCODE_SWZ */
346 /* TGSI_OPCODE_XPD */
347 /* TGSI_OPCODE_TEX */
348 /* TGSI_OPCODE_TXP */
349 #define TGSI_OPCODE_TXB 67
350 /* TGSI_OPCODE_KIL */
351
352 /*
353 * GL_NV_fragment_program_option
354 */
355 /* TGSI_OPCODE_ABS */
356 /* TGSI_OPCODE_FLR */
357 /* TGSI_OPCODE_FRC */
358 /* TGSI_OPCODE_LIT */
359 /* TGSI_OPCODE_MOV */
360 /* TGSI_OPCODE_DDX */
361 /* TGSI_OPCODE_DDY */
362 /* TGSI_OPCODE_PK2H */
363 /* TGSI_OPCODE_PK2US */
364 /* TGSI_OPCODE_PK4B */
365 /* TGSI_OPCODE_PK4UB */
366 /* TGSI_OPCODE_COS */
367 /* TGSI_OPCODE_EX2 */
368 /* TGSI_OPCODE_LG2 */
369 /* TGSI_OPCODE_RCP */
370 /* TGSI_OPCODE_RSQ */
371 /* TGSI_OPCODE_SIN */
372 /* TGSI_OPCODE_SCS */
373 /* TGSI_OPCODE_UP2H */
374 /* TGSI_OPCODE_UP2US */
375 /* TGSI_OPCODE_UP4B */
376 /* TGSI_OPCODE_UP4UB */
377 /* TGSI_OPCODE_POW */
378 /* TGSI_OPCODE_ADD */
379 /* TGSI_OPCODE_DP3 */
380 /* TGSI_OPCODE_DP4 */
381 /* TGSI_OPCODE_DPH */
382 /* TGSI_OPCODE_DST */
383 /* TGSI_OPCODE_MAX */
384 /* TGSI_OPCODE_MIN */
385 /* TGSI_OPCODE_MUL */
386 /* TGSI_OPCODE_SGE */
387 /* TGSI_OPCODE_SLT */
388 /* TGSI_OPCODE_SUB */
389 /* TGSI_OPCODE_XPD */
390 /* TGSI_OPCODE_RFL */
391 /* TGSI_OPCODE_SEQ */
392 /* TGSI_OPCODE_SFL */
393 /* TGSI_OPCODE_SGT */
394 /* TGSI_OPCODE_SLE */
395 /* TGSI_OPCODE_SNE */
396 /* TGSI_OPCODE_STR */
397 /* TGSI_OPCODE_CMP */
398 /* TGSI_OPCODE_LRP */
399 /* TGSI_OPCODE_MAD */
400 /* TGSI_OPCODE_X2D */
401 /* TGSI_OPCODE_SWZ */
402 /* TGSI_OPCODE_TEX */
403 /* TGSI_OPCODE_TXP */
404 /* TGSI_OPCODE_TXB */
405 /* TGSI_OPCODE_KIL */
406 /* TGSI_OPCODE_TXD */
407
408 /*
409 * GL_NV_fragment_program2
410 */
411 /* TGSI_OPCODE_ABS */
412 /* TGSI_OPCODE_FLR */
413 /* TGSI_OPCODE_FRC */
414 /* TGSI_OPCODE_LIT */
415 /* TGSI_OPCODE_MOV */
416 /* TGSI_OPCODE_DDX */
417 /* TGSI_OPCODE_DDY */
418 /* TGSI_OPCODE_PK2H */
419 /* TGSI_OPCODE_PK2US */
420 /* TGSI_OPCODE_PK4B */
421 /* TGSI_OPCODE_PK4UB */
422 #define TGSI_OPCODE_NRM 68
423 #define TGSI_OPCODE_DIV 69
424 /* TGSI_OPCODE_COS */
425 /* TGSI_OPCODE_EX2 */
426 /* TGSI_OPCODE_LG2 */
427 /* TGSI_OPCODE_RCP */
428 /* TGSI_OPCODE_RSQ */
429 /* TGSI_OPCODE_SIN */
430 /* TGSI_OPCODE_SCS */
431 /* TGSI_OPCODE_UP2H */
432 /* TGSI_OPCODE_UP2US */
433 /* TGSI_OPCODE_UP4B */
434 /* TGSI_OPCODE_UP4UB */
435 /* TGSI_OPCODE_POW */
436 /* TGSI_OPCODE_ADD */
437 /* TGSI_OPCODE_DP3 */
438 /* TGSI_OPCODE_DP4 */
439 /* TGSI_OPCODE_DPH */
440 /* TGSI_OPCODE_DST */
441 /* TGSI_OPCODE_MAX */
442 /* TGSI_OPCODE_MIN */
443 /* TGSI_OPCODE_MUL */
444 /* TGSI_OPCODE_SGE */
445 /* TGSI_OPCODE_SLT */
446 /* TGSI_OPCODE_SUB */
447 /* TGSI_OPCODE_XPD */
448 /* TGSI_OPCODE_RFL */
449 /* TGSI_OPCODE_SEQ */
450 /* TGSI_OPCODE_SFL */
451 /* TGSI_OPCODE_SGT */
452 /* TGSI_OPCODE_SLE */
453 /* TGSI_OPCODE_SNE */
454 /* TGSI_OPCODE_STR */
455 #define TGSI_OPCODE_DP2 70
456 /* TGSI_OPCODE_CMP */
457 /* TGSI_OPCODE_LRP */
458 /* TGSI_OPCODE_MAD */
459 /* TGSI_OPCODE_X2D */
460 #define TGSI_OPCODE_DP2A TGSI_OPCODE_DOT2ADD
461 /* TGSI_OPCODE_SWZ */
462 /* TGSI_OPCODE_TEX */
463 /* TGSI_OPCODE_TXP */
464 /* TGSI_OPCODE_TXB */
465 #define TGSI_OPCODE_TXL 71
466 /* TGSI_OPCODE_KIL */
467 /* TGSI_OPCODE_TXD */
468 /* TGSI_OPCODE_CAL */
469 /* TGSI_OPCODE_RET */
470 #define TGSI_OPCODE_BRK 72
471 #define TGSI_OPCODE_IF 73
472 #define TGSI_OPCODE_LOOP 74
473 #define TGSI_OPCODE_REP 75
474 #define TGSI_OPCODE_ELSE 76
475 #define TGSI_OPCODE_ENDIF 77
476 #define TGSI_OPCODE_ENDLOOP 78
477 #define TGSI_OPCODE_ENDREP 79
478
479 /*
480 * GL_NV_vertex_program2_option
481 */
482 /* TGSI_OPCODE_ARL */
483 /* TGSI_OPCODE_ABS */
484 /* TGSI_OPCODE_FLR */
485 /* TGSI_OPCODE_FRC */
486 /* TGSI_OPCODE_LIT */
487 /* TGSI_OPCODE_MOV */
488 /* TGSI_OPCODE_SSG */
489 /* TGSI_OPCODE_EX2 */
490 /* TGSI_OPCODE_EXP */
491 /* TGSI_OPCODE_LG2 */
492 /* TGSI_OPCODE_LOG */
493 /* TGSI_OPCODE_RCP */
494 /* TGSI_OPCODE_RSQ */
495 /* TGSI_OPCODE_COS */
496 /* TGSI_OPCODE_RCC */
497 /* TGSI_OPCODE_SIN */
498 /* TGSI_OPCODE_POW */
499 /* TGSI_OPCODE_ADD */
500 /* TGSI_OPCODE_DP3 */
501 /* TGSI_OPCODE_DP4 */
502 /* TGSI_OPCODE_DPH */
503 /* TGSI_OPCODE_DST */
504 /* TGSI_OPCODE_MAX */
505 /* TGSI_OPCODE_MIN */
506 /* TGSI_OPCODE_MUL */
507 /* TGSI_OPCODE_SGE */
508 /* TGSI_OPCODE_SLT */
509 /* TGSI_OPCODE_SUB */
510 /* TGSI_OPCODE_XPD */
511 /* TGSI_OPCODE_SEQ */
512 /* TGSI_OPCODE_SFL */
513 /* TGSI_OPCODE_SGT */
514 /* TGSI_OPCODE_SLE */
515 /* TGSI_OPCODE_SNE */
516 /* TGSI_OPCODE_STR */
517 /* TGSI_OPCODE_MAD */
518 /* TGSI_OPCODE_SWZ */
519 /* TGSI_OPCODE_ARR */
520 /* TGSI_OPCODE_ARA */
521 /* TGSI_OPCODE_BRA */
522 /* TGSI_OPCODE_CAL */
523 /* TGSI_OPCODE_RET */
524
525 /*
526 * GL_NV_vertex_program3
527 */
528 /* TGSI_OPCODE_ARL */
529 /* TGSI_OPCODE_ABS */
530 /* TGSI_OPCODE_FLR */
531 /* TGSI_OPCODE_FRC */
532 /* TGSI_OPCODE_LIT */
533 /* TGSI_OPCODE_MOV */
534 /* TGSI_OPCODE_SSG */
535 /* TGSI_OPCODE_EX2 */
536 /* TGSI_OPCODE_EXP */
537 /* TGSI_OPCODE_LG2 */
538 /* TGSI_OPCODE_LOG */
539 /* TGSI_OPCODE_RCP */
540 /* TGSI_OPCODE_RSQ */
541 /* TGSI_OPCODE_COS */
542 /* TGSI_OPCODE_RCC */
543 /* TGSI_OPCODE_SIN */
544 /* TGSI_OPCODE_POW */
545 /* TGSI_OPCODE_ADD */
546 /* TGSI_OPCODE_DP3 */
547 /* TGSI_OPCODE_DP4 */
548 /* TGSI_OPCODE_DPH */
549 /* TGSI_OPCODE_DST */
550 /* TGSI_OPCODE_MAX */
551 /* TGSI_OPCODE_MIN */
552 /* TGSI_OPCODE_MUL */
553 /* TGSI_OPCODE_SGE */
554 /* TGSI_OPCODE_SLT */
555 /* TGSI_OPCODE_SUB */
556 /* TGSI_OPCODE_XPD */
557 /* TGSI_OPCODE_SEQ */
558 /* TGSI_OPCODE_SFL */
559 /* TGSI_OPCODE_SGT */
560 /* TGSI_OPCODE_SLE */
561 /* TGSI_OPCODE_SNE */
562 /* TGSI_OPCODE_STR */
563 /* TGSI_OPCODE_MAD */
564 /* TGSI_OPCODE_SWZ */
565 /* TGSI_OPCODE_ARR */
566 /* TGSI_OPCODE_ARA */
567 /* TGSI_OPCODE_BRA */
568 /* TGSI_OPCODE_CAL */
569 /* TGSI_OPCODE_RET */
570 #define TGSI_OPCODE_PUSHA 80
571 #define TGSI_OPCODE_POPA 81
572 /* TGSI_OPCODE_TEX */
573 /* TGSI_OPCODE_TXP */
574 /* TGSI_OPCODE_TXB */
575 /* TGSI_OPCODE_TXL */
576
577 /*
578 * GL_NV_gpu_program4
579 */
580 /* TGSI_OPCODE_ABS */
581 #define TGSI_OPCODE_CEIL 82
582 /* TGSI_OPCODE_FLR */
583 /* TGSI_OPCODE_FRC */
584 #define TGSI_OPCODE_I2F 83
585 /* TGSI_OPCODE_LIT */
586 /* TGSI_OPCODE_MOV */
587 #define TGSI_OPCODE_NOT 84
588 /* TGSI_OPCODE_NRM */
589 /* TGSI_OPCODE_PK2H */
590 /* TGSI_OPCODE_PK2US */
591 /* TGSI_OPCODE_PK4B */
592 /* TGSI_OPCODE_PK4UB */
593 /* TGSI_OPCODE_ROUND */
594 /* TGSI_OPCODE_SSG */
595 #define TGSI_OPCODE_TRUNC 85
596 /* TGSI_OPCODE_COS */
597 /* TGSI_OPCODE_EX2 */
598 /* TGSI_OPCODE_LG2 */
599 /* TGSI_OPCODE_RCC */
600 /* TGSI_OPCODE_RCP */
601 /* TGSI_OPCODE_RSQ */
602 /* TGSI_OPCODE_SCS */
603 /* TGSI_OPCODE_SIN */
604 /* TGSI_OPCODE_UP2H */
605 /* TGSI_OPCODE_UP2US */
606 /* TGSI_OPCODE_UP4B */
607 /* TGSI_OPCODE_UP4UB */
608 /* TGSI_OPCODE_POW */
609 /* TGSI_OPCODE_DIV */
610 #define TGSI_OPCODE_SHL 86
611 #define TGSI_OPCODE_SHR 87
612 /* TGSI_OPCODE_ADD */
613 #define TGSI_OPCODE_AND 88
614 /* TGSI_OPCODE_DP3 */
615 /* TGSI_OPCODE_DP4 */
616 /* TGSI_OPCODE_DPH */
617 /* TGSI_OPCODE_DST */
618 /* TGSI_OPCODE_MAX */
619 /* TGSI_OPCODE_MIN */
620 /* TGSI_OPCODE_MUL */
621 #define TGSI_OPCODE_OR 89
622 /* TGSI_OPCODE_RFL */
623 /* TGSI_OPCODE_SEQ */
624 /* TGSI_OPCODE_SFL */
625 /* TGSI_OPCODE_SGE */
626 /* TGSI_OPCODE_SGT */
627 /* TGSI_OPCODE_SLE */
628 /* TGSI_OPCODE_SLT */
629 /* TGSI_OPCODE_SNE */
630 /* TGSI_OPCODE_STR */
631 /* TGSI_OPCODE_SUB */
632 /* TGSI_OPCODE_XPD */
633 /* TGSI_OPCODE_DP2 */
634 #define TGSI_OPCODE_MOD 90
635 #define TGSI_OPCODE_XOR 91
636 /* TGSI_OPCODE_CMP */
637 /* TGSI_OPCODE_DP2A */
638 /* TGSI_OPCODE_LRP */
639 /* TGSI_OPCODE_MAD */
640 #define TGSI_OPCODE_SAD 92
641 /* TGSI_OPCODE_X2D */
642 /* TGSI_OPCODE_SWZ */
643 /* TGSI_OPCODE_TEX */
644 /* TGSI_OPCODE_TXB */
645 #define TGSI_OPCODE_TXF 93
646 /* TGSI_OPCODE_TXL */
647 /* TGSI_OPCODE_TXP */
648 #define TGSI_OPCODE_TXQ 94
649 /* TGSI_OPCODE_TXD */
650 /* TGSI_OPCODE_CAL */
651 /* TGSI_OPCODE_RET */
652 /* TGSI_OPCODE_BRK */
653 #define TGSI_OPCODE_CONT 95
654 /* TGSI_OPCODE_IF */
655 /* TGSI_OPCODE_REP */
656 /* TGSI_OPCODE_ELSE */
657 /* TGSI_OPCODE_ENDIF */
658 /* TGSI_OPCODE_ENDREP */
659
660 /*
661 * GL_NV_vertex_program4
662 */
663 /* Same as GL_NV_gpu_program4 */
664
665 /*
666 * GL_NV_fragment_program4
667 */
668 /* Same as GL_NV_gpu_program4 */
669 /* TGSI_OPCODE_KIL */
670 /* TGSI_OPCODE_DDX */
671 /* TGSI_OPCODE_DDY */
672
673 /*
674 * GL_NV_geometry_program4
675 */
676 /* Same as GL_NV_gpu_program4 */
677 #define TGSI_OPCODE_EMIT 96
678 #define TGSI_OPCODE_ENDPRIM 97
679
680 /*
681 * GLSL
682 */
683 #define TGSI_OPCODE_NOP 98
684 /* TGSI_OPCODE_ABS */
685 /* TGSI_OPCODE_ADD */
686 #define TGSI_OPCODE_BGNLOOP2 99
687 #define TGSI_OPCODE_BGNSUB 100
688 /* TGSI_OPCODE_BRA */
689 /* TGSI_OPCODE_BRK */
690 /* TGSI_OPCODE_CONT */
691 /* TGSI_OPCODE_COS */
692 /* TGSI_OPCODE_DDX */
693 /* TGSI_OPCODE_DDY */
694 /* TGSI_OPCODE_DP3 */
695 /* TGSI_OPCODE_DP4 */
696 /* TGSI_OPCODE_ELSE */
697 /* TGSI_OPCODE_ENDIF */
698 #define TGSI_OPCODE_ENDLOOP2 101
699 #define TGSI_OPCODE_ENDSUB 102
700 /* TGSI_OPCODE_EX2 */
701 /* TGSI_OPCODE_EXP */
702 /* TGSI_OPCODE_FLR */
703 /* TGSI_OPCODE_FRC */
704 /* TGSI_OPCODE_IF */
705 #define TGSI_OPCODE_INT TGSI_OPCODE_TRUNC
706 /* TGSI_OPCODE_KIL */
707 /* TGSI_OPCODE_LG2 */
708 /* TGSI_OPCODE_LOG */
709 /* TGSI_OPCODE_MAD */
710 /* TGSI_OPCODE_MAX */
711 /* TGSI_OPCODE_MIN */
712 /* TGSI_OPCODE_MOV */
713 /* TGSI_OPCODE_MUL */
714 #define TGSI_OPCODE_NOISE1 103
715 #define TGSI_OPCODE_NOISE2 104
716 #define TGSI_OPCODE_NOISE3 105
717 #define TGSI_OPCODE_NOISE4 106
718 /* TGSI_OPCODE_POW */
719 /* TGSI_OPCODE_RCP */
720 /* TGSI_OPCODE_RSQ */
721 /* TGSI_OPCODE_SEQ */
722 /* TGSI_OPCODE_SGE */
723 /* TGSI_OPCODE_SGT */
724 /* TGSI_OPCODE_SIN */
725 /* TGSI_OPCODE_SLE */
726 /* TGSI_OPCODE_SLT */
727 /* TGSI_OPCODE_SNE */
728 /* TGSI_OPCODE_SUB */
729 /* TGSI_OPCODE_TEX */
730 /* TGSI_OPCODE_TXB */
731 /* TGSI_OPCODE_TXD */
732 /* TGSI_OPCODE_TXL */
733 /* TGSI_OPCODE_XPD */
734
735 #define TGSI_OPCODE_LAST 107
736
737 #define TGSI_SAT_NONE 0 /* do not saturate */
738 #define TGSI_SAT_ZERO_ONE 1 /* clamp to [0,1] */
739 #define TGSI_SAT_MINUS_PLUS_ONE 2 /* clamp to [-1,1] */
740
741 /*
742 * Opcode is the operation code to execute. A given operation defines the
743 * semantics how the source registers (if any) are interpreted and what is
744 * written to the destination registers (if any) as a result of execution.
745 *
746 * NumDstRegs and NumSrcRegs is the number of destination and source registers,
747 * respectively. For a given operation code, those numbers are fixed and are
748 * present here only for convenience.
749 *
750 * If Extended is TRUE, it is now executed.
751 *
752 * Saturate controls how are final results in destination registers modified.
753 */
754
755 struct tgsi_instruction
756 {
757 GLuint Type : 4; /* TGSI_TOKEN_TYPE_INSTRUCTION */
758 GLuint Size : 8; /* UINT */
759 GLuint Opcode : 8; /* TGSI_OPCODE_ */
760 GLuint Saturate : 2; /* TGSI_SAT_ */
761 GLuint NumDstRegs : 2; /* UINT */
762 GLuint NumSrcRegs : 4; /* UINT */
763 GLuint Padding : 3;
764 GLuint Extended : 1; /* BOOL */
765 };
766
767 /*
768 * If tgsi_instruction::Extended is TRUE, tgsi_instruction_ext follows.
769 *
770 * Then, tgsi_instruction::NumDstRegs of tgsi_dst_register follow.
771 *
772 * Then, tgsi_instruction::NumSrcRegs of tgsi_src_register follow.
773 *
774 * tgsi_instruction::Size contains the total number of words that make the
775 * instruction, including the instruction word.
776 */
777
778 #define TGSI_INSTRUCTION_EXT_TYPE_NV 0
779 #define TGSI_INSTRUCTION_EXT_TYPE_LABEL 1
780 #define TGSI_INSTRUCTION_EXT_TYPE_TEXTURE 2
781
782 struct tgsi_instruction_ext
783 {
784 GLuint Type : 4; /* TGSI_INSTRUCTION_EXT_TYPE_ */
785 GLuint Padding : 27;
786 GLuint Extended : 1; /* BOOL */
787 };
788
789 /*
790 * If tgsi_instruction_ext::Type is TGSI_INSTRUCTION_EXT_TYPE_NV, it should
791 * be cast to tgsi_instruction_ext_nv.
792 *
793 * If tgsi_instruction_ext::Type is TGSI_INSTRUCTION_EXT_TYPE_LABEL, it
794 * should be cast to tgsi_instruction_ext_label.
795 *
796 * If tgsi_instruction_ext::Type is TGSI_INSTRUCTION_EXT_TYPE_TEXTURE, it
797 * should be cast to tgsi_instruction_ext_texture.
798 *
799 * If tgsi_instruction_ext::Extended is TRUE, another tgsi_instruction_ext
800 * follows.
801 */
802
803 #define TGSI_PRECISION_DEFAULT 0
804 #define TGSI_PRECISION_FLOAT32 1
805 #define TGSI_PRECISION_FLOAT16 2
806 #define TGSI_PRECISION_FIXED12 3
807
808 #define TGSI_CC_GT 0
809 #define TGSI_CC_EQ 1
810 #define TGSI_CC_LT 2
811 #define TGSI_CC_UN 3
812 #define TGSI_CC_GE 4
813 #define TGSI_CC_LE 5
814 #define TGSI_CC_NE 6
815 #define TGSI_CC_TR 7
816 #define TGSI_CC_FL 8
817
818 #define TGSI_SWIZZLE_X 0
819 #define TGSI_SWIZZLE_Y 1
820 #define TGSI_SWIZZLE_Z 2
821 #define TGSI_SWIZZLE_W 3
822
823 /*
824 * Precision controls the precision at which the operation should be executed.
825 *
826 * CondDstUpdate enables condition code register writes. When this field is
827 * TRUE, CondDstIndex specifies the index of the condition code register to
828 * update.
829 *
830 * CondFlowEnable enables conditional execution of the operation. When this
831 * field is TRUE, CondFlowIndex specifies the index of the condition code
832 * register to test against CondMask with component swizzle controled by
833 * CondSwizzleX, CondSwizzleY, CondSwizzleZ and CondSwizzleW. If the test fails,
834 * the operation is not executed.
835 */
836
837 struct tgsi_instruction_ext_nv
838 {
839 GLuint Type : 4; /* TGSI_INSTRUCTION_EXT_TYPE_NV */
840 GLuint Precision : 4; /* TGSI_PRECISION_ */
841 GLuint CondDstIndex : 4; /* UINT */
842 GLuint CondFlowIndex : 4; /* UINT */
843 GLuint CondMask : 4; /* TGSI_CC_ */
844 GLuint CondSwizzleX : 2; /* TGSI_SWIZZLE_ */
845 GLuint CondSwizzleY : 2; /* TGSI_SWIZZLE_ */
846 GLuint CondSwizzleZ : 2; /* TGSI_SWIZZLE_ */
847 GLuint CondSwizzleW : 2; /* TGSI_SWIZZLE_ */
848 GLuint CondDstUpdate : 1; /* BOOL */
849 GLuint CondFlowEnable : 1; /* BOOL */
850 GLuint Padding : 1;
851 GLuint Extended : 1; /* BOOL */
852 };
853
854 struct tgsi_instruction_ext_label
855 {
856 GLuint Type : 4; /* TGSI_INSTRUCTION_EXT_TYPE_LABEL */
857 GLuint Label : 24; /* UINT */
858 GLuint Target : 1; /* BOOL */
859 GLuint Padding : 2;
860 GLuint Extended : 1; /* BOOL */
861 };
862
863 #define TGSI_TEXTURE_UNKNOWN 0
864 #define TGSI_TEXTURE_1D 1
865 #define TGSI_TEXTURE_2D 2
866 #define TGSI_TEXTURE_3D 3
867 #define TGSI_TEXTURE_CUBE 4
868 #define TGSI_TEXTURE_RECT 5
869 #define TGSI_TEXTURE_SHADOW1D 6
870 #define TGSI_TEXTURE_SHADOW2D 7
871 #define TGSI_TEXTURE_SHADOWRECT 8
872
873 struct tgsi_instruction_ext_texture
874 {
875 GLuint Type : 4; /* TGSI_INSTRUCTION_EXT_TYPE_TEXTURE */
876 GLuint Texture : 8; /* TGSI_TEXTURE_ */
877 GLuint Padding : 19;
878 GLuint Extended : 1; /* BOOL */
879 };
880
881 /*
882 * File specifies the register array to access.
883 *
884 * Index specifies the element number of a register in the register file.
885 *
886 * If Indirect is TRUE, Index should be offset by the X component of a source
887 * register that follows. The register can be now fetched into local storage
888 * for further processing.
889 *
890 * If Negate is TRUE, all components of the fetched register are negated.
891 *
892 * The fetched register components are swizzled according to SwizzleX, SwizzleY,
893 * SwizzleZ and SwizzleW.
894 *
895 * If Extended is TRUE, any further modifications to the source register are
896 * made to this temporary storage.
897 */
898
899 struct tgsi_src_register
900 {
901 GLuint File : 4; /* TGSI_FILE_ */
902 GLuint SwizzleX : 2; /* TGSI_SWIZZLE_ */
903 GLuint SwizzleY : 2; /* TGSI_SWIZZLE_ */
904 GLuint SwizzleZ : 2; /* TGSI_SWIZZLE_ */
905 GLuint SwizzleW : 2; /* TGSI_SWIZZLE_ */
906 GLuint Negate : 1; /* BOOL */
907 GLuint Indirect : 1; /* BOOL */
908 GLuint Dimension : 1; /* BOOL */
909 GLint Index : 16; /* SINT */
910 GLuint Extended : 1; /* BOOL */
911 };
912
913 /*
914 * If tgsi_src_register::Extended is TRUE, tgsi_src_register_ext follows.
915 *
916 * Then, if tgsi_src_register::Indirect is TRUE, another tgsi_src_register
917 * follows.
918 *
919 * Then, if tgsi_src_register::Dimension is TRUE, tgsi_dimension follows.
920 */
921
922 #define TGSI_SRC_REGISTER_EXT_TYPE_SWZ 0
923 #define TGSI_SRC_REGISTER_EXT_TYPE_MOD 1
924
925 struct tgsi_src_register_ext
926 {
927 GLuint Type : 4; /* TGSI_SRC_REGISTER_EXT_TYPE_ */
928 GLuint Padding : 27;
929 GLuint Extended : 1; /* BOOL */
930 };
931
932 /*
933 * If tgsi_src_register_ext::Type is TGSI_SRC_REGISTER_EXT_TYPE_SWZ,
934 * it should be cast to tgsi_src_register_ext_extswz.
935 *
936 * If tgsi_src_register_ext::Type is TGSI_SRC_REGISTER_EXT_TYPE_MOD,
937 * it should be cast to tgsi_src_register_ext_mod.
938 *
939 * If tgsi_dst_register_ext::Extended is TRUE, another tgsi_dst_register_ext
940 * follows.
941 */
942
943 #define TGSI_EXTSWIZZLE_X TGSI_SWIZZLE_X
944 #define TGSI_EXTSWIZZLE_Y TGSI_SWIZZLE_Y
945 #define TGSI_EXTSWIZZLE_Z TGSI_SWIZZLE_Z
946 #define TGSI_EXTSWIZZLE_W TGSI_SWIZZLE_W
947 #define TGSI_EXTSWIZZLE_ZERO 4
948 #define TGSI_EXTSWIZZLE_ONE 5
949
950 /*
951 * ExtSwizzleX, ExtSwizzleY, ExtSwizzleZ and ExtSwizzleW swizzle the source
952 * register in an extended manner.
953 *
954 * NegateX, NegateY, NegateZ and NegateW negate individual components of the
955 * source register.
956 *
957 * ExtDivide specifies which component is used to divide all components of the
958 * source register.
959 */
960
961 struct tgsi_src_register_ext_swz
962 {
963 GLuint Type : 4; /* TGSI_SRC_REGISTER_EXT_TYPE_SWZ */
964 GLuint ExtSwizzleX : 4; /* TGSI_EXTSWIZZLE_ */
965 GLuint ExtSwizzleY : 4; /* TGSI_EXTSWIZZLE_ */
966 GLuint ExtSwizzleZ : 4; /* TGSI_EXTSWIZZLE_ */
967 GLuint ExtSwizzleW : 4; /* TGSI_EXTSWIZZLE_ */
968 GLuint NegateX : 1; /* BOOL */
969 GLuint NegateY : 1; /* BOOL */
970 GLuint NegateZ : 1; /* BOOL */
971 GLuint NegateW : 1; /* BOOL */
972 GLuint ExtDivide : 4; /* TGSI_EXTSWIZZLE_ */
973 GLuint Padding : 3;
974 GLuint Extended : 1; /* BOOL */
975 };
976
977 /*
978 * If Complement is TRUE, the source register is modified by subtracting it
979 * from 1.0.
980 *
981 * If Bias is TRUE, the source register is modified by subtracting 0.5 from it.
982 *
983 * If Scale2X is TRUE, the source register is modified by multiplying it by 2.0.
984 *
985 * If Absolute is TRUE, the source register is modified by removing the sign.
986 *
987 * If Negate is TRUE, the source register is modified by negating it.
988 */
989
990 struct tgsi_src_register_ext_mod
991 {
992 GLuint Type : 4; /* TGSI_SRC_REGISTER_EXT_TYPE_MOD */
993 GLuint Complement : 1; /* BOOL */
994 GLuint Bias : 1; /* BOOL */
995 GLuint Scale2X : 1; /* BOOL */
996 GLuint Absolute : 1; /* BOOL */
997 GLuint Negate : 1; /* BOOL */
998 GLuint Padding : 22;
999 GLuint Extended : 1; /* BOOL */
1000 };
1001
1002 struct tgsi_dimension
1003 {
1004 GLuint Indirect : 1; /* BOOL */
1005 GLuint Dimension : 1; /* BOOL */
1006 GLuint Padding : 13;
1007 GLint Index : 16; /* SINT */
1008 GLuint Extended : 1; /* BOOL */
1009 };
1010
1011 #define TGSI_WRITEMASK_NONE 0x00
1012 #define TGSI_WRITEMASK_X 0x01
1013 #define TGSI_WRITEMASK_Y 0x02
1014 #define TGSI_WRITEMASK_XY 0x03
1015 #define TGSI_WRITEMASK_Z 0x04
1016 #define TGSI_WRITEMASK_XZ 0x05
1017 #define TGSI_WRITEMASK_YZ 0x06
1018 #define TGSI_WRITEMASK_XYZ 0x07
1019 #define TGSI_WRITEMASK_W 0x08
1020 #define TGSI_WRITEMASK_XW 0x09
1021 #define TGSI_WRITEMASK_YW 0x0A
1022 #define TGSI_WRITEMASK_XYW 0x0B
1023 #define TGSI_WRITEMASK_ZW 0x0C
1024 #define TGSI_WRITEMASK_XZW 0x0D
1025 #define TGSI_WRITEMASK_YZW 0x0E
1026 #define TGSI_WRITEMASK_XYZW 0x0F
1027
1028 struct tgsi_dst_register
1029 {
1030 GLuint File : 4; /* TGSI_FILE_ */
1031 GLuint WriteMask : 4; /* TGSI_WRITEMASK_ */
1032 GLuint Indirect : 1; /* BOOL */
1033 GLuint Dimension : 1; /* BOOL */
1034 GLint Index : 16; /* SINT */
1035 GLuint Padding : 5;
1036 GLuint Extended : 1; /* BOOL */
1037 };
1038
1039 /*
1040 * If tgsi_dst_register::Extended is TRUE, tgsi_dst_register_ext follows.
1041 *
1042 * Then, if tgsi_dst_register::Indirect is TRUE, tgsi_src_register follows.
1043 */
1044
1045 #define TGSI_DST_REGISTER_EXT_TYPE_CONDCODE 0
1046 #define TGSI_DST_REGISTER_EXT_TYPE_MODULATE 1
1047
1048 struct tgsi_dst_register_ext
1049 {
1050 GLuint Type : 4; /* TGSI_DST_REGISTER_EXT_TYPE_ */
1051 GLuint Padding : 27;
1052 GLuint Extended : 1; /* BOOL */
1053 };
1054
1055 /*
1056 * If tgsi_dst_register_ext::Type is TGSI_DST_REGISTER_EXT_TYPE_CONDCODE,
1057 * it should be cast to tgsi_dst_register_ext_condcode.
1058 *
1059 * If tgsi_dst_register_ext::Type is TGSI_DST_REGISTER_EXT_TYPE_MODULATE,
1060 * it should be cast to tgsi_dst_register_ext_modulate.
1061 *
1062 * If tgsi_dst_register_ext::Extended is TRUE, another tgsi_dst_register_ext
1063 * follows.
1064 */
1065
1066 struct tgsi_dst_register_ext_concode
1067 {
1068 GLuint Type : 4; /* TGSI_DST_REGISTER_EXT_TYPE_CONDCODE */
1069 GLuint CondMask : 4; /* TGSI_CC_ */
1070 GLuint CondSwizzleX : 2; /* TGSI_SWIZZLE_ */
1071 GLuint CondSwizzleY : 2; /* TGSI_SWIZZLE_ */
1072 GLuint CondSwizzleZ : 2; /* TGSI_SWIZZLE_ */
1073 GLuint CondSwizzleW : 2; /* TGSI_SWIZZLE_ */
1074 GLuint CondSrcIndex : 4; /* UINT */
1075 GLuint Padding : 11;
1076 GLuint Extended : 1; /* BOOL */
1077 };
1078
1079 #define TGSI_MODULATE_1X 0
1080 #define TGSI_MODULATE_2X 1
1081 #define TGSI_MODULATE_4X 2
1082 #define TGSI_MODULATE_8X 3
1083 #define TGSI_MODULATE_HALF 4
1084 #define TGSI_MODULATE_QUARTER 5
1085 #define TGSI_MODULATE_EIGHTH 6
1086
1087 struct tgsi_dst_register_ext_modulate
1088 {
1089 GLuint Type : 4; /* TGSI_DST_REGISTER_EXT_TYPE_MODULATE */
1090 GLuint Modulate : 4; /* TGSI_MODULATE_ */
1091 GLuint Padding : 23;
1092 GLuint Extended : 1; /* BOOL */
1093 };
1094
1095 #if defined __cplusplus
1096 } // extern "C"
1097 #endif // defined __cplusplus
1098
1099 #endif // !defined TGSI_TOKEN_H
1100