p_shader_tokens.h revision 06f217d80f3d1318da4974bf7b31ea7edcf5eb0b
1/************************************************************************** 2 * 3 * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. 4 * Copyright 2009-2010 VMware, Inc. 5 * All Rights Reserved. 6 * 7 * Permission is hereby granted, free of charge, to any person obtaining a 8 * copy of this software and associated documentation files (the 9 * "Software"), to deal in the Software without restriction, including 10 * without limitation the rights to use, copy, modify, merge, publish, 11 * distribute, sub license, and/or sell copies of the Software, and to 12 * permit persons to whom the Software is furnished to do so, subject to 13 * the following conditions: 14 * 15 * The above copyright notice and this permission notice (including the 16 * next paragraph) shall be included in all copies or substantial portions 17 * of the Software. 18 * 19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 20 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 21 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 22 * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR 23 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 24 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 25 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 26 * 27 **************************************************************************/ 28 29#ifndef P_SHADER_TOKENS_H 30#define P_SHADER_TOKENS_H 31 32#ifdef __cplusplus 33extern "C" { 34#endif 35 36 37struct tgsi_header 38{ 39 unsigned HeaderSize : 8; 40 unsigned BodySize : 24; 41}; 42 43#define TGSI_PROCESSOR_FRAGMENT 0 44#define TGSI_PROCESSOR_VERTEX 1 45#define TGSI_PROCESSOR_GEOMETRY 2 46 47struct tgsi_processor 48{ 49 unsigned Processor : 4; /* TGSI_PROCESSOR_ */ 50 unsigned Padding : 28; 51}; 52 53#define TGSI_TOKEN_TYPE_DECLARATION 0 54#define TGSI_TOKEN_TYPE_IMMEDIATE 1 55#define TGSI_TOKEN_TYPE_INSTRUCTION 2 56#define TGSI_TOKEN_TYPE_PROPERTY 3 57 58struct tgsi_token 59{ 60 unsigned Type : 4; /**< TGSI_TOKEN_TYPE_x */ 61 unsigned NrTokens : 8; /**< UINT */ 62 unsigned Padding : 20; 63}; 64 65enum tgsi_file_type { 66 TGSI_FILE_NULL =0, 67 TGSI_FILE_CONSTANT =1, 68 TGSI_FILE_INPUT =2, 69 TGSI_FILE_OUTPUT =3, 70 TGSI_FILE_TEMPORARY =4, 71 TGSI_FILE_SAMPLER =5, 72 TGSI_FILE_ADDRESS =6, 73 TGSI_FILE_IMMEDIATE =7, 74 TGSI_FILE_PREDICATE =8, 75 TGSI_FILE_SYSTEM_VALUE =9, 76 TGSI_FILE_IMMEDIATE_ARRAY =10, 77 TGSI_FILE_TEMPORARY_ARRAY =11, 78 TGSI_FILE_RESOURCE =12, 79 TGSI_FILE_COUNT /**< how many TGSI_FILE_ types */ 80}; 81 82 83#define TGSI_WRITEMASK_NONE 0x00 84#define TGSI_WRITEMASK_X 0x01 85#define TGSI_WRITEMASK_Y 0x02 86#define TGSI_WRITEMASK_XY 0x03 87#define TGSI_WRITEMASK_Z 0x04 88#define TGSI_WRITEMASK_XZ 0x05 89#define TGSI_WRITEMASK_YZ 0x06 90#define TGSI_WRITEMASK_XYZ 0x07 91#define TGSI_WRITEMASK_W 0x08 92#define TGSI_WRITEMASK_XW 0x09 93#define TGSI_WRITEMASK_YW 0x0A 94#define TGSI_WRITEMASK_XYW 0x0B 95#define TGSI_WRITEMASK_ZW 0x0C 96#define TGSI_WRITEMASK_XZW 0x0D 97#define TGSI_WRITEMASK_YZW 0x0E 98#define TGSI_WRITEMASK_XYZW 0x0F 99 100#define TGSI_INTERPOLATE_CONSTANT 0 101#define TGSI_INTERPOLATE_LINEAR 1 102#define TGSI_INTERPOLATE_PERSPECTIVE 2 103#define TGSI_INTERPOLATE_COUNT 3 104 105#define TGSI_CYLINDRICAL_WRAP_X (1 << 0) 106#define TGSI_CYLINDRICAL_WRAP_Y (1 << 1) 107#define TGSI_CYLINDRICAL_WRAP_Z (1 << 2) 108#define TGSI_CYLINDRICAL_WRAP_W (1 << 3) 109 110struct tgsi_declaration 111{ 112 unsigned Type : 4; /**< TGSI_TOKEN_TYPE_DECLARATION */ 113 unsigned NrTokens : 8; /**< UINT */ 114 unsigned File : 4; /**< one of TGSI_FILE_x */ 115 unsigned UsageMask : 4; /**< bitmask of TGSI_WRITEMASK_x flags */ 116 unsigned Interpolate : 4; /**< one of TGSI_INTERPOLATE_x */ 117 unsigned Dimension : 1; /**< any extra dimension info? */ 118 unsigned Semantic : 1; /**< BOOL, any semantic info? */ 119 unsigned Centroid : 1; /**< centroid sampling? */ 120 unsigned Invariant : 1; /**< invariant optimization? */ 121 unsigned CylindricalWrap:4; /**< TGSI_CYLINDRICAL_WRAP_x flags */ 122}; 123 124struct tgsi_declaration_range 125{ 126 unsigned First : 16; /**< UINT */ 127 unsigned Last : 16; /**< UINT */ 128}; 129 130struct tgsi_declaration_dimension 131{ 132 unsigned Index2D:16; /**< UINT */ 133 unsigned Padding:16; 134}; 135 136#define TGSI_SEMANTIC_POSITION 0 137#define TGSI_SEMANTIC_COLOR 1 138#define TGSI_SEMANTIC_BCOLOR 2 /**< back-face color */ 139#define TGSI_SEMANTIC_FOG 3 140#define TGSI_SEMANTIC_PSIZE 4 141#define TGSI_SEMANTIC_GENERIC 5 142#define TGSI_SEMANTIC_NORMAL 6 143#define TGSI_SEMANTIC_FACE 7 144#define TGSI_SEMANTIC_EDGEFLAG 8 145#define TGSI_SEMANTIC_PRIMID 9 146#define TGSI_SEMANTIC_INSTANCEID 10 147#define TGSI_SEMANTIC_VERTEXID 11 148#define TGSI_SEMANTIC_STENCIL 12 149#define TGSI_SEMANTIC_COUNT 13 /**< number of semantic values */ 150 151struct tgsi_declaration_semantic 152{ 153 unsigned Name : 8; /**< one of TGSI_SEMANTIC_x */ 154 unsigned Index : 16; /**< UINT */ 155 unsigned Padding : 8; 156}; 157 158struct tgsi_declaration_resource { 159 unsigned Resource : 8; /**< one of TGSI_TEXTURE_ */ 160 unsigned ReturnTypeX : 6; /**< one of enum pipe_type */ 161 unsigned ReturnTypeY : 6; /**< one of enum pipe_type */ 162 unsigned ReturnTypeZ : 6; /**< one of enum pipe_type */ 163 unsigned ReturnTypeW : 6; /**< one of enum pipe_type */ 164}; 165 166#define TGSI_IMM_FLOAT32 0 167#define TGSI_IMM_UINT32 1 168#define TGSI_IMM_INT32 2 169 170struct tgsi_immediate 171{ 172 unsigned Type : 4; /**< TGSI_TOKEN_TYPE_IMMEDIATE */ 173 unsigned NrTokens : 14; /**< UINT */ 174 unsigned DataType : 4; /**< one of TGSI_IMM_x */ 175 unsigned Padding : 10; 176}; 177 178union tgsi_immediate_data 179{ 180 float Float; 181 unsigned Uint; 182 int Int; 183}; 184 185#define TGSI_PROPERTY_GS_INPUT_PRIM 0 186#define TGSI_PROPERTY_GS_OUTPUT_PRIM 1 187#define TGSI_PROPERTY_GS_MAX_OUTPUT_VERTICES 2 188#define TGSI_PROPERTY_FS_COORD_ORIGIN 3 189#define TGSI_PROPERTY_FS_COORD_PIXEL_CENTER 4 190#define TGSI_PROPERTY_FS_COLOR0_WRITES_ALL_CBUFS 5 191#define TGSI_PROPERTY_FS_DEPTH_LAYOUT 6 192#define TGSI_PROPERTY_COUNT 7 193 194struct tgsi_property { 195 unsigned Type : 4; /**< TGSI_TOKEN_TYPE_PROPERTY */ 196 unsigned NrTokens : 8; /**< UINT */ 197 unsigned PropertyName : 8; /**< one of TGSI_PROPERTY */ 198 unsigned Padding : 12; 199}; 200 201#define TGSI_FS_COORD_ORIGIN_UPPER_LEFT 0 202#define TGSI_FS_COORD_ORIGIN_LOWER_LEFT 1 203 204#define TGSI_FS_COORD_PIXEL_CENTER_HALF_INTEGER 0 205#define TGSI_FS_COORD_PIXEL_CENTER_INTEGER 1 206 207#define TGSI_FS_DEPTH_LAYOUT_NONE 0 208#define TGSI_FS_DEPTH_LAYOUT_ANY 1 209#define TGSI_FS_DEPTH_LAYOUT_GREATER 2 210#define TGSI_FS_DEPTH_LAYOUT_LESS 3 211#define TGSI_FS_DEPTH_LAYOUT_UNCHANGED 4 212 213 214struct tgsi_property_data { 215 unsigned Data; 216}; 217 218/* TGSI opcodes. 219 * 220 * For more information on semantics of opcodes and 221 * which APIs are known to use which opcodes, see 222 * gallium/docs/source/tgsi.rst 223 */ 224#define TGSI_OPCODE_ARL 0 225#define TGSI_OPCODE_MOV 1 226#define TGSI_OPCODE_LIT 2 227#define TGSI_OPCODE_RCP 3 228#define TGSI_OPCODE_RSQ 4 229#define TGSI_OPCODE_EXP 5 230#define TGSI_OPCODE_LOG 6 231#define TGSI_OPCODE_MUL 7 232#define TGSI_OPCODE_ADD 8 233#define TGSI_OPCODE_DP3 9 234#define TGSI_OPCODE_DP4 10 235#define TGSI_OPCODE_DST 11 236#define TGSI_OPCODE_MIN 12 237#define TGSI_OPCODE_MAX 13 238#define TGSI_OPCODE_SLT 14 239#define TGSI_OPCODE_SGE 15 240#define TGSI_OPCODE_MAD 16 241#define TGSI_OPCODE_SUB 17 242#define TGSI_OPCODE_LRP 18 243#define TGSI_OPCODE_CND 19 244 /* gap */ 245#define TGSI_OPCODE_DP2A 21 246 /* gap */ 247#define TGSI_OPCODE_FRC 24 248#define TGSI_OPCODE_CLAMP 25 249#define TGSI_OPCODE_FLR 26 250#define TGSI_OPCODE_ROUND 27 251#define TGSI_OPCODE_EX2 28 252#define TGSI_OPCODE_LG2 29 253#define TGSI_OPCODE_POW 30 254#define TGSI_OPCODE_XPD 31 255 /* gap */ 256#define TGSI_OPCODE_ABS 33 257#define TGSI_OPCODE_RCC 34 258#define TGSI_OPCODE_DPH 35 259#define TGSI_OPCODE_COS 36 260#define TGSI_OPCODE_DDX 37 261#define TGSI_OPCODE_DDY 38 262#define TGSI_OPCODE_KILP 39 /* predicated kill */ 263#define TGSI_OPCODE_PK2H 40 264#define TGSI_OPCODE_PK2US 41 265#define TGSI_OPCODE_PK4B 42 266#define TGSI_OPCODE_PK4UB 43 267#define TGSI_OPCODE_RFL 44 268#define TGSI_OPCODE_SEQ 45 269#define TGSI_OPCODE_SFL 46 270#define TGSI_OPCODE_SGT 47 271#define TGSI_OPCODE_SIN 48 272#define TGSI_OPCODE_SLE 49 273#define TGSI_OPCODE_SNE 50 274#define TGSI_OPCODE_STR 51 275#define TGSI_OPCODE_TEX 52 276#define TGSI_OPCODE_TXD 53 277#define TGSI_OPCODE_TXP 54 278#define TGSI_OPCODE_UP2H 55 279#define TGSI_OPCODE_UP2US 56 280#define TGSI_OPCODE_UP4B 57 281#define TGSI_OPCODE_UP4UB 58 282#define TGSI_OPCODE_X2D 59 283#define TGSI_OPCODE_ARA 60 284#define TGSI_OPCODE_ARR 61 285#define TGSI_OPCODE_BRA 62 286#define TGSI_OPCODE_CAL 63 287#define TGSI_OPCODE_RET 64 288#define TGSI_OPCODE_SSG 65 /* SGN */ 289#define TGSI_OPCODE_CMP 66 290#define TGSI_OPCODE_SCS 67 291#define TGSI_OPCODE_TXB 68 292#define TGSI_OPCODE_NRM 69 293#define TGSI_OPCODE_DIV 70 294#define TGSI_OPCODE_DP2 71 295#define TGSI_OPCODE_TXL 72 296#define TGSI_OPCODE_BRK 73 297#define TGSI_OPCODE_IF 74 298 /* gap */ 299#define TGSI_OPCODE_ELSE 77 300#define TGSI_OPCODE_ENDIF 78 301 /* gap */ 302#define TGSI_OPCODE_PUSHA 81 303#define TGSI_OPCODE_POPA 82 304#define TGSI_OPCODE_CEIL 83 305#define TGSI_OPCODE_I2F 84 306#define TGSI_OPCODE_NOT 85 307#define TGSI_OPCODE_TRUNC 86 308#define TGSI_OPCODE_SHL 87 309 /* gap */ 310#define TGSI_OPCODE_AND 89 311#define TGSI_OPCODE_OR 90 312#define TGSI_OPCODE_MOD 91 313#define TGSI_OPCODE_XOR 92 314#define TGSI_OPCODE_SAD 93 315#define TGSI_OPCODE_TXF 94 316#define TGSI_OPCODE_TXQ 95 317#define TGSI_OPCODE_CONT 96 318#define TGSI_OPCODE_EMIT 97 319#define TGSI_OPCODE_ENDPRIM 98 320#define TGSI_OPCODE_BGNLOOP 99 321#define TGSI_OPCODE_BGNSUB 100 322#define TGSI_OPCODE_ENDLOOP 101 323#define TGSI_OPCODE_ENDSUB 102 324 /* gap */ 325#define TGSI_OPCODE_NOP 107 326 /* gap */ 327#define TGSI_OPCODE_NRM4 112 328#define TGSI_OPCODE_CALLNZ 113 329#define TGSI_OPCODE_IFC 114 330#define TGSI_OPCODE_BREAKC 115 331#define TGSI_OPCODE_KIL 116 /* conditional kill */ 332#define TGSI_OPCODE_END 117 /* aka HALT */ 333 /* gap */ 334#define TGSI_OPCODE_F2I 119 335#define TGSI_OPCODE_IDIV 120 336#define TGSI_OPCODE_IMAX 121 337#define TGSI_OPCODE_IMIN 122 338#define TGSI_OPCODE_INEG 123 339#define TGSI_OPCODE_ISGE 124 340#define TGSI_OPCODE_ISHR 125 341#define TGSI_OPCODE_ISLT 126 342#define TGSI_OPCODE_F2U 127 343#define TGSI_OPCODE_U2F 128 344#define TGSI_OPCODE_UADD 129 345#define TGSI_OPCODE_UDIV 130 346#define TGSI_OPCODE_UMAD 131 347#define TGSI_OPCODE_UMAX 132 348#define TGSI_OPCODE_UMIN 133 349#define TGSI_OPCODE_UMOD 134 350#define TGSI_OPCODE_UMUL 135 351#define TGSI_OPCODE_USEQ 136 352#define TGSI_OPCODE_USGE 137 353#define TGSI_OPCODE_USHR 138 354#define TGSI_OPCODE_USLT 139 355#define TGSI_OPCODE_USNE 140 356#define TGSI_OPCODE_SWITCH 141 357#define TGSI_OPCODE_CASE 142 358#define TGSI_OPCODE_DEFAULT 143 359#define TGSI_OPCODE_ENDSWITCH 144 360 361/* resource related opcodes */ 362#define TGSI_OPCODE_LOAD 145 363#define TGSI_OPCODE_LOAD_MS 146 364#define TGSI_OPCODE_SAMPLE 147 365#define TGSI_OPCODE_SAMPLE_B 148 366#define TGSI_OPCODE_SAMPLE_C 149 367#define TGSI_OPCODE_SAMPLE_C_LZ 150 368#define TGSI_OPCODE_SAMPLE_D 151 369#define TGSI_OPCODE_SAMPLE_L 152 370#define TGSI_OPCODE_GATHER4 153 371#define TGSI_OPCODE_RESINFO 154 372#define TGSI_OPCODE_SAMPLE_POS 155 373#define TGSI_OPCODE_SAMPLE_INFO 156 374 375#define TGSI_OPCODE_UARL 157 376#define TGSI_OPCODE_UCMP 158 377 378#define TGSI_OPCODE_LAST 159 379 380#define TGSI_SAT_NONE 0 /* do not saturate */ 381#define TGSI_SAT_ZERO_ONE 1 /* clamp to [0,1] */ 382#define TGSI_SAT_MINUS_PLUS_ONE 2 /* clamp to [-1,1] */ 383 384/** 385 * Opcode is the operation code to execute. A given operation defines the 386 * semantics how the source registers (if any) are interpreted and what is 387 * written to the destination registers (if any) as a result of execution. 388 * 389 * NumDstRegs and NumSrcRegs is the number of destination and source registers, 390 * respectively. For a given operation code, those numbers are fixed and are 391 * present here only for convenience. 392 * 393 * If Predicate is TRUE, tgsi_instruction_predicate token immediately follows. 394 * 395 * Saturate controls how are final results in destination registers modified. 396 */ 397 398struct tgsi_instruction 399{ 400 unsigned Type : 4; /* TGSI_TOKEN_TYPE_INSTRUCTION */ 401 unsigned NrTokens : 8; /* UINT */ 402 unsigned Opcode : 8; /* TGSI_OPCODE_ */ 403 unsigned Saturate : 2; /* TGSI_SAT_ */ 404 unsigned NumDstRegs : 2; /* UINT */ 405 unsigned NumSrcRegs : 4; /* UINT */ 406 unsigned Predicate : 1; /* BOOL */ 407 unsigned Label : 1; 408 unsigned Texture : 1; 409 unsigned Padding : 1; 410}; 411 412/* 413 * If tgsi_instruction::Label is TRUE, tgsi_instruction_label follows. 414 * 415 * If tgsi_instruction::Texture is TRUE, tgsi_instruction_texture follows. 416 * if texture instruction has a number of offsets, 417 * then tgsi_instruction::Texture::NumOffset of tgsi_texture_offset follow. 418 * 419 * Then, tgsi_instruction::NumDstRegs of tgsi_dst_register follow. 420 * 421 * Then, tgsi_instruction::NumSrcRegs of tgsi_src_register follow. 422 * 423 * tgsi_instruction::NrTokens contains the total number of words that make the 424 * instruction, including the instruction word. 425 */ 426 427#define TGSI_SWIZZLE_X 0 428#define TGSI_SWIZZLE_Y 1 429#define TGSI_SWIZZLE_Z 2 430#define TGSI_SWIZZLE_W 3 431 432struct tgsi_instruction_label 433{ 434 unsigned Label : 24; /* UINT */ 435 unsigned Padding : 8; 436}; 437 438#define TGSI_TEXTURE_UNKNOWN 0 439#define TGSI_TEXTURE_1D 1 440#define TGSI_TEXTURE_2D 2 441#define TGSI_TEXTURE_3D 3 442#define TGSI_TEXTURE_CUBE 4 443#define TGSI_TEXTURE_RECT 5 444#define TGSI_TEXTURE_SHADOW1D 6 445#define TGSI_TEXTURE_SHADOW2D 7 446#define TGSI_TEXTURE_SHADOWRECT 8 447#define TGSI_TEXTURE_1D_ARRAY 9 448#define TGSI_TEXTURE_2D_ARRAY 10 449#define TGSI_TEXTURE_SHADOW1D_ARRAY 11 450#define TGSI_TEXTURE_SHADOW2D_ARRAY 12 451#define TGSI_TEXTURE_COUNT 13 452 453struct tgsi_instruction_texture 454{ 455 unsigned Texture : 8; /* TGSI_TEXTURE_ */ 456 unsigned NumOffsets : 4; 457 unsigned Padding : 20; 458}; 459 460/* for texture offsets in GLSL and DirectX. 461 * Generally these always come from TGSI_FILE_IMMEDIATE, 462 * however DX11 appears to have the capability to do 463 * non-constant texture offsets. 464 */ 465struct tgsi_texture_offset 466{ 467 int Index : 16; 468 unsigned File : 4; /**< one of TGSI_FILE_x */ 469 unsigned SwizzleX : 2; /* TGSI_SWIZZLE_x */ 470 unsigned SwizzleY : 2; /* TGSI_SWIZZLE_x */ 471 unsigned SwizzleZ : 2; /* TGSI_SWIZZLE_x */ 472 unsigned Padding : 6; 473}; 474 475/* 476 * For SM3, the following constraint applies. 477 * - Swizzle is either set to identity or replicate. 478 */ 479struct tgsi_instruction_predicate 480{ 481 int Index : 16; /* SINT */ 482 unsigned SwizzleX : 2; /* TGSI_SWIZZLE_x */ 483 unsigned SwizzleY : 2; /* TGSI_SWIZZLE_x */ 484 unsigned SwizzleZ : 2; /* TGSI_SWIZZLE_x */ 485 unsigned SwizzleW : 2; /* TGSI_SWIZZLE_x */ 486 unsigned Negate : 1; /* BOOL */ 487 unsigned Padding : 7; 488}; 489 490/** 491 * File specifies the register array to access. 492 * 493 * Index specifies the element number of a register in the register file. 494 * 495 * If Indirect is TRUE, Index should be offset by the X component of a source 496 * register that follows. The register can be now fetched into local storage 497 * for further processing. 498 * 499 * If Negate is TRUE, all components of the fetched register are negated. 500 * 501 * The fetched register components are swizzled according to SwizzleX, SwizzleY, 502 * SwizzleZ and SwizzleW. 503 * 504 */ 505 506struct tgsi_src_register 507{ 508 unsigned File : 4; /* TGSI_FILE_ */ 509 unsigned Indirect : 1; /* BOOL */ 510 unsigned Dimension : 1; /* BOOL */ 511 int Index : 16; /* SINT */ 512 unsigned SwizzleX : 2; /* TGSI_SWIZZLE_ */ 513 unsigned SwizzleY : 2; /* TGSI_SWIZZLE_ */ 514 unsigned SwizzleZ : 2; /* TGSI_SWIZZLE_ */ 515 unsigned SwizzleW : 2; /* TGSI_SWIZZLE_ */ 516 unsigned Absolute : 1; /* BOOL */ 517 unsigned Negate : 1; /* BOOL */ 518}; 519 520/** 521 * If tgsi_src_register::Modifier is TRUE, tgsi_src_register_modifier follows. 522 * 523 * Then, if tgsi_src_register::Indirect is TRUE, another tgsi_src_register 524 * follows. 525 * 526 * Then, if tgsi_src_register::Dimension is TRUE, tgsi_dimension follows. 527 */ 528 529 530struct tgsi_dimension 531{ 532 unsigned Indirect : 1; /* BOOL */ 533 unsigned Dimension : 1; /* BOOL */ 534 unsigned Padding : 14; 535 int Index : 16; /* SINT */ 536}; 537 538struct tgsi_dst_register 539{ 540 unsigned File : 4; /* TGSI_FILE_ */ 541 unsigned WriteMask : 4; /* TGSI_WRITEMASK_ */ 542 unsigned Indirect : 1; /* BOOL */ 543 unsigned Dimension : 1; /* BOOL */ 544 int Index : 16; /* SINT */ 545 unsigned Padding : 6; 546}; 547 548 549#ifdef __cplusplus 550} 551#endif 552 553#endif /* P_SHADER_TOKENS_H */ 554