1984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca/************************************************************************** 2984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * 3984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. 46f6d740c851aa8bedc7c51dbd5db14de338787f1Michal Krol * Copyright 2009-2010 VMware, Inc. 5984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * All Rights Reserved. 6984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * 7984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * Permission is hereby granted, free of charge, to any person obtaining a 8984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * copy of this software and associated documentation files (the 9984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * "Software"), to deal in the Software without restriction, including 10984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * without limitation the rights to use, copy, modify, merge, publish, 11984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * distribute, sub license, and/or sell copies of the Software, and to 12984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * permit persons to whom the Software is furnished to do so, subject to 13984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * the following conditions: 14984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * 15984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * The above copyright notice and this permission notice (including the 16984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * next paragraph) shall be included in all copies or substantial portions 17984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * of the Software. 18984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * 19984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 20984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 21984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 22984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR 23984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 24984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 25984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 26984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * 27984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca **************************************************************************/ 28984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca 290a7d50ed7e7608eaccba8e9648685e740065c384Michal Krol#ifndef P_SHADER_TOKENS_H 300a7d50ed7e7608eaccba8e9648685e740065c384Michal Krol#define P_SHADER_TOKENS_H 31abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 3294c73d1bb9037a1eead1d5174f218b15852b52d7José Fonseca#ifdef __cplusplus 33abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolextern "C" { 3494c73d1bb9037a1eead1d5174f218b15852b52d7José Fonseca#endif 35abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 36abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 37abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_header 38abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 39abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned HeaderSize : 8; 40abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned BodySize : 24; 41abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 42abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 43abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_PROCESSOR_FRAGMENT 0 44abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_PROCESSOR_VERTEX 1 45abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_PROCESSOR_GEOMETRY 2 4663428372cadc73a7124f4e7d383eb86a0c7affd7Francisco Jerez#define TGSI_PROCESSOR_COMPUTE 3 47abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 48abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_processor 49abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 50abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Processor : 4; /* TGSI_PROCESSOR_ */ 51abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Padding : 28; 52abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 53abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 54abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TOKEN_TYPE_DECLARATION 0 55abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TOKEN_TYPE_IMMEDIATE 1 56abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TOKEN_TYPE_INSTRUCTION 2 573ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin#define TGSI_TOKEN_TYPE_PROPERTY 3 58abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 59abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_token 60abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 61868c607c1751fc3e6df1a8dc45e8b70e6bc315f6Brian Paul unsigned Type : 4; /**< TGSI_TOKEN_TYPE_x */ 62bf3930453cb85977510863e5cfba8487e09c093eMichal Krol unsigned NrTokens : 8; /**< UINT */ 63ba1ca28cc62fed71c77902b95ae4ed36c6bf25f8Keith Whitwell unsigned Padding : 20; 64abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 65abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 66e884c7ed9a14aabaa86f6710c594d20812ed11d9Zack Rusinenum tgsi_file_type { 672b221e11da7a8bf759e3c359f22ba6f49d5f0997Zack Rusin TGSI_FILE_NULL =0, 682b221e11da7a8bf759e3c359f22ba6f49d5f0997Zack Rusin TGSI_FILE_CONSTANT =1, 692b221e11da7a8bf759e3c359f22ba6f49d5f0997Zack Rusin TGSI_FILE_INPUT =2, 702b221e11da7a8bf759e3c359f22ba6f49d5f0997Zack Rusin TGSI_FILE_OUTPUT =3, 712b221e11da7a8bf759e3c359f22ba6f49d5f0997Zack Rusin TGSI_FILE_TEMPORARY =4, 722b221e11da7a8bf759e3c359f22ba6f49d5f0997Zack Rusin TGSI_FILE_SAMPLER =5, 732b221e11da7a8bf759e3c359f22ba6f49d5f0997Zack Rusin TGSI_FILE_ADDRESS =6, 742b221e11da7a8bf759e3c359f22ba6f49d5f0997Zack Rusin TGSI_FILE_IMMEDIATE =7, 752b221e11da7a8bf759e3c359f22ba6f49d5f0997Zack Rusin TGSI_FILE_PREDICATE =8, 762b221e11da7a8bf759e3c359f22ba6f49d5f0997Zack Rusin TGSI_FILE_SYSTEM_VALUE =9, 772b221e11da7a8bf759e3c359f22ba6f49d5f0997Zack Rusin TGSI_FILE_IMMEDIATE_ARRAY =10, 78101f792a2af9c9a19a050afba8b60caa689466a5Zack Rusin TGSI_FILE_TEMPORARY_ARRAY =11, 79bdbe77f9c6f06cfaa155f27c2ade3c523d7fbea7Zack Rusin TGSI_FILE_RESOURCE =12, 80a5f44cc8c2ce0916809ce5da5a2490ad000ef099Francisco Jerez TGSI_FILE_SAMPLER_VIEW =13, 81e884c7ed9a14aabaa86f6710c594d20812ed11d9Zack Rusin TGSI_FILE_COUNT /**< how many TGSI_FILE_ types */ 82e884c7ed9a14aabaa86f6710c594d20812ed11d9Zack Rusin}; 8335ca45daba3906ac94fb879d2374d476ba2dac47Brian 84abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 85abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_NONE 0x00 86abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_X 0x01 87abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_Y 0x02 88abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_XY 0x03 89abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_Z 0x04 90abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_XZ 0x05 91abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_YZ 0x06 92abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_XYZ 0x07 93abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_W 0x08 94abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_XW 0x09 95abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_YW 0x0A 96abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_XYW 0x0B 97abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_ZW 0x0C 98abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_XZW 0x0D 99abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_YZW 0x0E 100abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_XYZW 0x0F 101abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 1024e33edfd06999e7c65b761be2d1cdc16e5b659c5Michal Krol#define TGSI_INTERPOLATE_CONSTANT 0 1034e33edfd06999e7c65b761be2d1cdc16e5b659c5Michal Krol#define TGSI_INTERPOLATE_LINEAR 1 1044e33edfd06999e7c65b761be2d1cdc16e5b659c5Michal Krol#define TGSI_INTERPOLATE_PERSPECTIVE 2 10567e3cbf1632e361220234013147331e4618b70cbDave Airlie#define TGSI_INTERPOLATE_COLOR 3 /* special color case for smooth/flat */ 10667e3cbf1632e361220234013147331e4618b70cbDave Airlie#define TGSI_INTERPOLATE_COUNT 4 1074e33edfd06999e7c65b761be2d1cdc16e5b659c5Michal Krol 1086f6d740c851aa8bedc7c51dbd5db14de338787f1Michal Krol#define TGSI_CYLINDRICAL_WRAP_X (1 << 0) 1096f6d740c851aa8bedc7c51dbd5db14de338787f1Michal Krol#define TGSI_CYLINDRICAL_WRAP_Y (1 << 1) 1106f6d740c851aa8bedc7c51dbd5db14de338787f1Michal Krol#define TGSI_CYLINDRICAL_WRAP_Z (1 << 2) 1116f6d740c851aa8bedc7c51dbd5db14de338787f1Michal Krol#define TGSI_CYLINDRICAL_WRAP_W (1 << 3) 1126f6d740c851aa8bedc7c51dbd5db14de338787f1Michal Krol 113abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_declaration 114abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 115868c607c1751fc3e6df1a8dc45e8b70e6bc315f6Brian Paul unsigned Type : 4; /**< TGSI_TOKEN_TYPE_DECLARATION */ 116bf3930453cb85977510863e5cfba8487e09c093eMichal Krol unsigned NrTokens : 8; /**< UINT */ 117868c607c1751fc3e6df1a8dc45e8b70e6bc315f6Brian Paul unsigned File : 4; /**< one of TGSI_FILE_x */ 118868c607c1751fc3e6df1a8dc45e8b70e6bc315f6Brian Paul unsigned UsageMask : 4; /**< bitmask of TGSI_WRITEMASK_x flags */ 1190adfdaeaa1e20c81a9f37455fe78d15c6406e3d3Michal Krol unsigned Dimension : 1; /**< any extra dimension info? */ 120868c607c1751fc3e6df1a8dc45e8b70e6bc315f6Brian Paul unsigned Semantic : 1; /**< BOOL, any semantic info? */ 1211279923d72942ee201fcc6ad40d552143f651f03Francisco Jerez unsigned Interpolate : 1; /**< any interpolation info? */ 122868c607c1751fc3e6df1a8dc45e8b70e6bc315f6Brian Paul unsigned Invariant : 1; /**< invariant optimization? */ 1232644952bd4dfa3b75112dee8dfd287a12d770705Francisco Jerez unsigned Local : 1; /**< optimize as subroutine local variable? */ 1242644952bd4dfa3b75112dee8dfd287a12d770705Francisco Jerez unsigned Padding : 7; 125abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 126abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 127abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_declaration_range 128abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 129868c607c1751fc3e6df1a8dc45e8b70e6bc315f6Brian Paul unsigned First : 16; /**< UINT */ 130868c607c1751fc3e6df1a8dc45e8b70e6bc315f6Brian Paul unsigned Last : 16; /**< UINT */ 131abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 132abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 1330adfdaeaa1e20c81a9f37455fe78d15c6406e3d3Michal Krolstruct tgsi_declaration_dimension 1340adfdaeaa1e20c81a9f37455fe78d15c6406e3d3Michal Krol{ 1350adfdaeaa1e20c81a9f37455fe78d15c6406e3d3Michal Krol unsigned Index2D:16; /**< UINT */ 1360adfdaeaa1e20c81a9f37455fe78d15c6406e3d3Michal Krol unsigned Padding:16; 1371279923d72942ee201fcc6ad40d552143f651f03Francisco Jerez}; 1381279923d72942ee201fcc6ad40d552143f651f03Francisco Jerez 1391279923d72942ee201fcc6ad40d552143f651f03Francisco Jerezstruct tgsi_declaration_interp 1401279923d72942ee201fcc6ad40d552143f651f03Francisco Jerez{ 1411279923d72942ee201fcc6ad40d552143f651f03Francisco Jerez unsigned Interpolate : 4; /**< one of TGSI_INTERPOLATE_x */ 1421279923d72942ee201fcc6ad40d552143f651f03Francisco Jerez unsigned Centroid : 1; /**< centroid sampling? */ 1431279923d72942ee201fcc6ad40d552143f651f03Francisco Jerez unsigned CylindricalWrap:4; /**< TGSI_CYLINDRICAL_WRAP_x flags */ 1441279923d72942ee201fcc6ad40d552143f651f03Francisco Jerez unsigned Padding : 23; 1450adfdaeaa1e20c81a9f37455fe78d15c6406e3d3Michal Krol}; 1460adfdaeaa1e20c81a9f37455fe78d15c6406e3d3Michal Krol 1479b21b3c52a8a7d58d08151d1a6bf25c472dec213Michal Krol#define TGSI_SEMANTIC_POSITION 0 1489b21b3c52a8a7d58d08151d1a6bf25c472dec213Michal Krol#define TGSI_SEMANTIC_COLOR 1 1499b21b3c52a8a7d58d08151d1a6bf25c472dec213Michal Krol#define TGSI_SEMANTIC_BCOLOR 2 /**< back-face color */ 1509b21b3c52a8a7d58d08151d1a6bf25c472dec213Michal Krol#define TGSI_SEMANTIC_FOG 3 1519b21b3c52a8a7d58d08151d1a6bf25c472dec213Michal Krol#define TGSI_SEMANTIC_PSIZE 4 1529b21b3c52a8a7d58d08151d1a6bf25c472dec213Michal Krol#define TGSI_SEMANTIC_GENERIC 5 1539b21b3c52a8a7d58d08151d1a6bf25c472dec213Michal Krol#define TGSI_SEMANTIC_NORMAL 6 1549b21b3c52a8a7d58d08151d1a6bf25c472dec213Michal Krol#define TGSI_SEMANTIC_FACE 7 1559b21b3c52a8a7d58d08151d1a6bf25c472dec213Michal Krol#define TGSI_SEMANTIC_EDGEFLAG 8 1569b21b3c52a8a7d58d08151d1a6bf25c472dec213Michal Krol#define TGSI_SEMANTIC_PRIMID 9 1579b21b3c52a8a7d58d08151d1a6bf25c472dec213Michal Krol#define TGSI_SEMANTIC_INSTANCEID 10 158e7ccd703a28e14431b90f29540cec0bf67be1e0fChristoph Bumiller#define TGSI_SEMANTIC_VERTEXID 11 159e7ccd703a28e14431b90f29540cec0bf67be1e0fChristoph Bumiller#define TGSI_SEMANTIC_STENCIL 12 1606951870e5790a4b563bfa3b943ed338f9c5922acBryan Cain#define TGSI_SEMANTIC_CLIPDIST 13 1619cea86f501eab1f72a148280c12286244cd26acfDave Airlie#define TGSI_SEMANTIC_CLIPVERTEX 14 162581ddbcf93ea8111e71ef43e90fa6937cf46a2cbFrancisco Jerez#define TGSI_SEMANTIC_GRID_SIZE 15 /**< grid size in blocks */ 163581ddbcf93ea8111e71ef43e90fa6937cf46a2cbFrancisco Jerez#define TGSI_SEMANTIC_BLOCK_ID 16 /**< id of the current block */ 164581ddbcf93ea8111e71ef43e90fa6937cf46a2cbFrancisco Jerez#define TGSI_SEMANTIC_BLOCK_SIZE 17 /**< block size in threads */ 165581ddbcf93ea8111e71ef43e90fa6937cf46a2cbFrancisco Jerez#define TGSI_SEMANTIC_THREAD_ID 18 /**< block-relative id of the current thread */ 166581ddbcf93ea8111e71ef43e90fa6937cf46a2cbFrancisco Jerez#define TGSI_SEMANTIC_COUNT 19 /**< number of semantic values */ 167abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 168abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_declaration_semantic 169abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 170763426a0256f0ab06f8af53947bd630f8600183aKeith Whitwell unsigned Name : 8; /**< one of TGSI_SEMANTIC_x */ 171763426a0256f0ab06f8af53947bd630f8600183aKeith Whitwell unsigned Index : 16; /**< UINT */ 172abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Padding : 8; 173abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 174abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 175bdbe77f9c6f06cfaa155f27c2ade3c523d7fbea7Zack Rusinstruct tgsi_declaration_resource { 176bdbe77f9c6f06cfaa155f27c2ade3c523d7fbea7Zack Rusin unsigned Resource : 8; /**< one of TGSI_TEXTURE_ */ 17782c90b2da8e236bc134cb2bd0ec4e09551b12164Francisco Jerez unsigned Raw : 1; 178b8e808f1ef9462af8545999df514fddbbff34345Francisco Jerez unsigned Writable : 1; 179b8e808f1ef9462af8545999df514fddbbff34345Francisco Jerez unsigned Padding : 22; 180a5f44cc8c2ce0916809ce5da5a2490ad000ef099Francisco Jerez}; 181a5f44cc8c2ce0916809ce5da5a2490ad000ef099Francisco Jerez 182a5f44cc8c2ce0916809ce5da5a2490ad000ef099Francisco Jerezstruct tgsi_declaration_sampler_view { 183a5f44cc8c2ce0916809ce5da5a2490ad000ef099Francisco Jerez unsigned Resource : 8; /**< one of TGSI_TEXTURE_ */ 184bdbe77f9c6f06cfaa155f27c2ade3c523d7fbea7Zack Rusin unsigned ReturnTypeX : 6; /**< one of enum pipe_type */ 185bdbe77f9c6f06cfaa155f27c2ade3c523d7fbea7Zack Rusin unsigned ReturnTypeY : 6; /**< one of enum pipe_type */ 186bdbe77f9c6f06cfaa155f27c2ade3c523d7fbea7Zack Rusin unsigned ReturnTypeZ : 6; /**< one of enum pipe_type */ 187bdbe77f9c6f06cfaa155f27c2ade3c523d7fbea7Zack Rusin unsigned ReturnTypeW : 6; /**< one of enum pipe_type */ 188bdbe77f9c6f06cfaa155f27c2ade3c523d7fbea7Zack Rusin}; 189bdbe77f9c6f06cfaa155f27c2ade3c523d7fbea7Zack Rusin 190d9d82dcd006c124e6569789c90390c43c1360c06Francisco Jerez/* 191d9d82dcd006c124e6569789c90390c43c1360c06Francisco Jerez * Special resources that don't need to be declared. They map to the 192d9d82dcd006c124e6569789c90390c43c1360c06Francisco Jerez * GLOBAL/LOCAL/PRIVATE/INPUT compute memory spaces. 193d9d82dcd006c124e6569789c90390c43c1360c06Francisco Jerez */ 194d9d82dcd006c124e6569789c90390c43c1360c06Francisco Jerez#define TGSI_RESOURCE_GLOBAL 0x7fff 195d9d82dcd006c124e6569789c90390c43c1360c06Francisco Jerez#define TGSI_RESOURCE_LOCAL 0x7ffe 196d9d82dcd006c124e6569789c90390c43c1360c06Francisco Jerez#define TGSI_RESOURCE_PRIVATE 0x7ffd 197d9d82dcd006c124e6569789c90390c43c1360c06Francisco Jerez#define TGSI_RESOURCE_INPUT 0x7ffc 198d9d82dcd006c124e6569789c90390c43c1360c06Francisco Jerez 199abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_IMM_FLOAT32 0 200b1c55e80aa600c88a20117cdca4bde2a46f79730Michal Krol#define TGSI_IMM_UINT32 1 201b1c55e80aa600c88a20117cdca4bde2a46f79730Michal Krol#define TGSI_IMM_INT32 2 202abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 203abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_immediate 204abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 205868c607c1751fc3e6df1a8dc45e8b70e6bc315f6Brian Paul unsigned Type : 4; /**< TGSI_TOKEN_TYPE_IMMEDIATE */ 2062b221e11da7a8bf759e3c359f22ba6f49d5f0997Zack Rusin unsigned NrTokens : 14; /**< UINT */ 207868c607c1751fc3e6df1a8dc45e8b70e6bc315f6Brian Paul unsigned DataType : 4; /**< one of TGSI_IMM_x */ 2082b221e11da7a8bf759e3c359f22ba6f49d5f0997Zack Rusin unsigned Padding : 10; 209abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 210abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 211fd31f92cea0ce8613a22d8f4b3c75b340bcc5689Keith Whitwellunion tgsi_immediate_data 212abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 213abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol float Float; 214b1c55e80aa600c88a20117cdca4bde2a46f79730Michal Krol unsigned Uint; 215b1c55e80aa600c88a20117cdca4bde2a46f79730Michal Krol int Int; 216abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 217abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 2183ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin#define TGSI_PROPERTY_GS_INPUT_PRIM 0 2193ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin#define TGSI_PROPERTY_GS_OUTPUT_PRIM 1 220d4ef0f6c67aefe06d8dd647acf8d9005df39a709Zack Rusin#define TGSI_PROPERTY_GS_MAX_OUTPUT_VERTICES 2 22173317139a4f78126af0dc4ddaef8206352740727Luca Barbieri#define TGSI_PROPERTY_FS_COORD_ORIGIN 3 22273317139a4f78126af0dc4ddaef8206352740727Luca Barbieri#define TGSI_PROPERTY_FS_COORD_PIXEL_CENTER 4 223c9c8a5ed02408495b3132cabd7947cc352a117a2Dave Airlie#define TGSI_PROPERTY_FS_COLOR0_WRITES_ALL_CBUFS 5 22406f217d80f3d1318da4974bf7b31ea7edcf5eb0bMarek Olšák#define TGSI_PROPERTY_FS_DEPTH_LAYOUT 6 225dc4c821f0817a3db716f965692fb701079f66340Marek Olšák#define TGSI_PROPERTY_VS_PROHIBIT_UCPS 7 226dc4c821f0817a3db716f965692fb701079f66340Marek Olšák#define TGSI_PROPERTY_COUNT 8 2273ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin 2283ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusinstruct tgsi_property { 2293ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin unsigned Type : 4; /**< TGSI_TOKEN_TYPE_PROPERTY */ 2303ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin unsigned NrTokens : 8; /**< UINT */ 2313ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin unsigned PropertyName : 8; /**< one of TGSI_PROPERTY */ 2323ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin unsigned Padding : 12; 2333ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin}; 2343ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin 23573317139a4f78126af0dc4ddaef8206352740727Luca Barbieri#define TGSI_FS_COORD_ORIGIN_UPPER_LEFT 0 23673317139a4f78126af0dc4ddaef8206352740727Luca Barbieri#define TGSI_FS_COORD_ORIGIN_LOWER_LEFT 1 23773317139a4f78126af0dc4ddaef8206352740727Luca Barbieri 23873317139a4f78126af0dc4ddaef8206352740727Luca Barbieri#define TGSI_FS_COORD_PIXEL_CENTER_HALF_INTEGER 0 23973317139a4f78126af0dc4ddaef8206352740727Luca Barbieri#define TGSI_FS_COORD_PIXEL_CENTER_INTEGER 1 24073317139a4f78126af0dc4ddaef8206352740727Luca Barbieri 24106f217d80f3d1318da4974bf7b31ea7edcf5eb0bMarek Olšák#define TGSI_FS_DEPTH_LAYOUT_NONE 0 24206f217d80f3d1318da4974bf7b31ea7edcf5eb0bMarek Olšák#define TGSI_FS_DEPTH_LAYOUT_ANY 1 24306f217d80f3d1318da4974bf7b31ea7edcf5eb0bMarek Olšák#define TGSI_FS_DEPTH_LAYOUT_GREATER 2 24406f217d80f3d1318da4974bf7b31ea7edcf5eb0bMarek Olšák#define TGSI_FS_DEPTH_LAYOUT_LESS 3 24506f217d80f3d1318da4974bf7b31ea7edcf5eb0bMarek Olšák#define TGSI_FS_DEPTH_LAYOUT_UNCHANGED 4 24606f217d80f3d1318da4974bf7b31ea7edcf5eb0bMarek Olšák 24706f217d80f3d1318da4974bf7b31ea7edcf5eb0bMarek Olšák 2483ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusinstruct tgsi_property_data { 2493ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin unsigned Data; 2503ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin}; 2513ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin 252d0d98f3ecfed7d7e0c4426185c13ec4f7c1761f9Keith Whitwell/* TGSI opcodes. 253d0d98f3ecfed7d7e0c4426185c13ec4f7c1761f9Keith Whitwell * 254d0d98f3ecfed7d7e0c4426185c13ec4f7c1761f9Keith Whitwell * For more information on semantics of opcodes and 255d0d98f3ecfed7d7e0c4426185c13ec4f7c1761f9Keith Whitwell * which APIs are known to use which opcodes, see 25698e277111bd6f6e5bcbbcd663e42e18ce449b533Tilman Sauerbeck * gallium/docs/source/tgsi.rst 257abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 258abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_ARL 0 259abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_MOV 1 260abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_LIT 2 261abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_RCP 3 262abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_RSQ 4 263abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_EXP 5 264abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_LOG 6 265abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_MUL 7 266abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_ADD 8 267abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DP3 9 268abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DP4 10 269abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DST 11 270abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_MIN 12 271abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_MAX 13 272abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SLT 14 273abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SGE 15 274abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_MAD 16 275abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SUB 17 276ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell#define TGSI_OPCODE_LRP 18 277abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_CND 19 278b3f4b56a3b7f979c631358caefed635c6ec56453Keith Whitwell /* gap */ 279ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell#define TGSI_OPCODE_DP2A 21 280d0d98f3ecfed7d7e0c4426185c13ec4f7c1761f9Keith Whitwell /* gap */ 281ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell#define TGSI_OPCODE_FRC 24 282abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_CLAMP 25 283ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell#define TGSI_OPCODE_FLR 26 284abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_ROUND 27 285ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell#define TGSI_OPCODE_EX2 28 286ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell#define TGSI_OPCODE_LG2 29 287ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell#define TGSI_OPCODE_POW 30 288ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell#define TGSI_OPCODE_XPD 31 289d0d98f3ecfed7d7e0c4426185c13ec4f7c1761f9Keith Whitwell /* gap */ 290abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_ABS 33 291abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_RCC 34 292abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DPH 35 293abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_COS 36 294abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DDX 37 295abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DDY 38 296abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_KILP 39 /* predicated kill */ 297abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_PK2H 40 298abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_PK2US 41 299abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_PK4B 42 300abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_PK4UB 43 301abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_RFL 44 302abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SEQ 45 303abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SFL 46 304abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SGT 47 305abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SIN 48 306abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SLE 49 307abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SNE 50 308abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_STR 51 309abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEX 52 310abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TXD 53 311bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_TXP 54 312bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_UP2H 55 313bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_UP2US 56 314bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_UP4B 57 315bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_UP4UB 58 316bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_X2D 59 317bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_ARA 60 318bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_ARR 61 319bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_BRA 62 320bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_CAL 63 321bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_RET 64 322d0d98f3ecfed7d7e0c4426185c13ec4f7c1761f9Keith Whitwell#define TGSI_OPCODE_SSG 65 /* SGN */ 323bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_CMP 66 324bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_SCS 67 325bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_TXB 68 326bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_NRM 69 327bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_DIV 70 328bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_DP2 71 329bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_TXL 72 330bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_BRK 73 331bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_IF 74 332a5e032853a8bac8895fab6fe88ba8a1a692121a6José Fonseca /* gap */ 333bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_ELSE 77 334bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_ENDIF 78 335a5e032853a8bac8895fab6fe88ba8a1a692121a6José Fonseca /* gap */ 336bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_PUSHA 81 337bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_POPA 82 338bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_CEIL 83 339bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_I2F 84 340bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_NOT 85 341bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_TRUNC 86 342bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_SHL 87 3432c046034dc5c95dd2fe84d0b4fd44f25235480b9Michal Krol /* gap */ 344bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_AND 89 345bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_OR 90 346bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_MOD 91 347bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_XOR 92 348bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_SAD 93 349bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_TXF 94 350bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_TXQ 95 351bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_CONT 96 352bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_EMIT 97 353bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_ENDPRIM 98 354cb90c43676c258419e4b617c908570891d3674cbMichal Krol#define TGSI_OPCODE_BGNLOOP 99 355bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_BGNSUB 100 356cb90c43676c258419e4b617c908570891d3674cbMichal Krol#define TGSI_OPCODE_ENDLOOP 101 357bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_ENDSUB 102 358dacf5dc9ac1a700b86e0dc385513afaff41e7aeaMarek Olšák#define TGSI_OPCODE_TXQ_LZ 103 /* TXQ for mipmap level 0 */ 3594e1d51786e0657c7430d731ac464f2a73e32eddfKeith Whitwell /* gap */ 360bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_NOP 107 361d0d98f3ecfed7d7e0c4426185c13ec4f7c1761f9Keith Whitwell /* gap */ 362bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_NRM4 112 363bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_CALLNZ 113 364bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_IFC 114 365bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_BREAKC 115 366d0d98f3ecfed7d7e0c4426185c13ec4f7c1761f9Keith Whitwell#define TGSI_OPCODE_KIL 116 /* conditional kill */ 367bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_END 117 /* aka HALT */ 368b9cb74c7f826dfd320f5e5b54aa933898f7ddd3dKeith Whitwell /* gap */ 369c59eda099306aca3a950f7157bde6fe84d0db604Michal Krol#define TGSI_OPCODE_F2I 119 370c59eda099306aca3a950f7157bde6fe84d0db604Michal Krol#define TGSI_OPCODE_IDIV 120 371c59eda099306aca3a950f7157bde6fe84d0db604Michal Krol#define TGSI_OPCODE_IMAX 121 372c59eda099306aca3a950f7157bde6fe84d0db604Michal Krol#define TGSI_OPCODE_IMIN 122 373c59eda099306aca3a950f7157bde6fe84d0db604Michal Krol#define TGSI_OPCODE_INEG 123 374c59eda099306aca3a950f7157bde6fe84d0db604Michal Krol#define TGSI_OPCODE_ISGE 124 375c59eda099306aca3a950f7157bde6fe84d0db604Michal Krol#define TGSI_OPCODE_ISHR 125 376c59eda099306aca3a950f7157bde6fe84d0db604Michal Krol#define TGSI_OPCODE_ISLT 126 377c59eda099306aca3a950f7157bde6fe84d0db604Michal Krol#define TGSI_OPCODE_F2U 127 378c59eda099306aca3a950f7157bde6fe84d0db604Michal Krol#define TGSI_OPCODE_U2F 128 379c59eda099306aca3a950f7157bde6fe84d0db604Michal Krol#define TGSI_OPCODE_UADD 129 380c59eda099306aca3a950f7157bde6fe84d0db604Michal Krol#define TGSI_OPCODE_UDIV 130 381c59eda099306aca3a950f7157bde6fe84d0db604Michal Krol#define TGSI_OPCODE_UMAD 131 382c59eda099306aca3a950f7157bde6fe84d0db604Michal Krol#define TGSI_OPCODE_UMAX 132 383c59eda099306aca3a950f7157bde6fe84d0db604Michal Krol#define TGSI_OPCODE_UMIN 133 384c34f6faf35c16ff81a1c4420290be4ed7f542121Michal Krol#define TGSI_OPCODE_UMOD 134 385c34f6faf35c16ff81a1c4420290be4ed7f542121Michal Krol#define TGSI_OPCODE_UMUL 135 386c34f6faf35c16ff81a1c4420290be4ed7f542121Michal Krol#define TGSI_OPCODE_USEQ 136 387c34f6faf35c16ff81a1c4420290be4ed7f542121Michal Krol#define TGSI_OPCODE_USGE 137 388c34f6faf35c16ff81a1c4420290be4ed7f542121Michal Krol#define TGSI_OPCODE_USHR 138 389c34f6faf35c16ff81a1c4420290be4ed7f542121Michal Krol#define TGSI_OPCODE_USLT 139 390c34f6faf35c16ff81a1c4420290be4ed7f542121Michal Krol#define TGSI_OPCODE_USNE 140 391c34f6faf35c16ff81a1c4420290be4ed7f542121Michal Krol#define TGSI_OPCODE_SWITCH 141 392c34f6faf35c16ff81a1c4420290be4ed7f542121Michal Krol#define TGSI_OPCODE_CASE 142 393c34f6faf35c16ff81a1c4420290be4ed7f542121Michal Krol#define TGSI_OPCODE_DEFAULT 143 394c34f6faf35c16ff81a1c4420290be4ed7f542121Michal Krol#define TGSI_OPCODE_ENDSWITCH 144 395bdbe77f9c6f06cfaa155f27c2ade3c523d7fbea7Zack Rusin 396bdbe77f9c6f06cfaa155f27c2ade3c523d7fbea7Zack Rusin/* resource related opcodes */ 397a5f44cc8c2ce0916809ce5da5a2490ad000ef099Francisco Jerez#define TGSI_OPCODE_SAMPLE 145 398a5f44cc8c2ce0916809ce5da5a2490ad000ef099Francisco Jerez#define TGSI_OPCODE_SAMPLE_I 146 399a5f44cc8c2ce0916809ce5da5a2490ad000ef099Francisco Jerez#define TGSI_OPCODE_SAMPLE_I_MS 147 400bdbe77f9c6f06cfaa155f27c2ade3c523d7fbea7Zack Rusin#define TGSI_OPCODE_SAMPLE_B 148 401bdbe77f9c6f06cfaa155f27c2ade3c523d7fbea7Zack Rusin#define TGSI_OPCODE_SAMPLE_C 149 402bdbe77f9c6f06cfaa155f27c2ade3c523d7fbea7Zack Rusin#define TGSI_OPCODE_SAMPLE_C_LZ 150 403bdbe77f9c6f06cfaa155f27c2ade3c523d7fbea7Zack Rusin#define TGSI_OPCODE_SAMPLE_D 151 404bdbe77f9c6f06cfaa155f27c2ade3c523d7fbea7Zack Rusin#define TGSI_OPCODE_SAMPLE_L 152 405bdbe77f9c6f06cfaa155f27c2ade3c523d7fbea7Zack Rusin#define TGSI_OPCODE_GATHER4 153 406a5f44cc8c2ce0916809ce5da5a2490ad000ef099Francisco Jerez#define TGSI_OPCODE_SVIEWINFO 154 407bdbe77f9c6f06cfaa155f27c2ade3c523d7fbea7Zack Rusin#define TGSI_OPCODE_SAMPLE_POS 155 408bdbe77f9c6f06cfaa155f27c2ade3c523d7fbea7Zack Rusin#define TGSI_OPCODE_SAMPLE_INFO 156 409bdbe77f9c6f06cfaa155f27c2ade3c523d7fbea7Zack Rusin 410324ac982d8e7c2693035342de2d24baff3042911Bryan Cain#define TGSI_OPCODE_UARL 157 411324ac982d8e7c2693035342de2d24baff3042911Bryan Cain#define TGSI_OPCODE_UCMP 158 4124c0f1fb5ec6117f07c9c911d7f74ff0d18c51d98Bryan Cain#define TGSI_OPCODE_IABS 159 413b6cbc28533a3fd68dbfe694c0774735233df8758Dave Airlie#define TGSI_OPCODE_ISSG 160 414324ac982d8e7c2693035342de2d24baff3042911Bryan Cain 415a5f44cc8c2ce0916809ce5da5a2490ad000ef099Francisco Jerez#define TGSI_OPCODE_LOAD 161 416b8e808f1ef9462af8545999df514fddbbff34345Francisco Jerez#define TGSI_OPCODE_STORE 162 417a5f44cc8c2ce0916809ce5da5a2490ad000ef099Francisco Jerez 4189e550c34237898385c07af2cbb2da76670ed994eFrancisco Jerez#define TGSI_OPCODE_MFENCE 163 4199e550c34237898385c07af2cbb2da76670ed994eFrancisco Jerez#define TGSI_OPCODE_LFENCE 164 4209e550c34237898385c07af2cbb2da76670ed994eFrancisco Jerez#define TGSI_OPCODE_SFENCE 165 4219e550c34237898385c07af2cbb2da76670ed994eFrancisco Jerez#define TGSI_OPCODE_BARRIER 166 4229e550c34237898385c07af2cbb2da76670ed994eFrancisco Jerez 423c2d31a83a8104acba05f92b025bc9b145ca34974Francisco Jerez#define TGSI_OPCODE_ATOMUADD 167 424c2d31a83a8104acba05f92b025bc9b145ca34974Francisco Jerez#define TGSI_OPCODE_ATOMXCHG 168 425c2d31a83a8104acba05f92b025bc9b145ca34974Francisco Jerez#define TGSI_OPCODE_ATOMCAS 169 426c2d31a83a8104acba05f92b025bc9b145ca34974Francisco Jerez#define TGSI_OPCODE_ATOMAND 170 427c2d31a83a8104acba05f92b025bc9b145ca34974Francisco Jerez#define TGSI_OPCODE_ATOMOR 171 428c2d31a83a8104acba05f92b025bc9b145ca34974Francisco Jerez#define TGSI_OPCODE_ATOMXOR 172 429c2d31a83a8104acba05f92b025bc9b145ca34974Francisco Jerez#define TGSI_OPCODE_ATOMUMIN 173 430c2d31a83a8104acba05f92b025bc9b145ca34974Francisco Jerez#define TGSI_OPCODE_ATOMUMAX 174 431c2d31a83a8104acba05f92b025bc9b145ca34974Francisco Jerez#define TGSI_OPCODE_ATOMIMIN 175 432c2d31a83a8104acba05f92b025bc9b145ca34974Francisco Jerez#define TGSI_OPCODE_ATOMIMAX 176 433c2d31a83a8104acba05f92b025bc9b145ca34974Francisco Jerez 434c2d31a83a8104acba05f92b025bc9b145ca34974Francisco Jerez#define TGSI_OPCODE_LAST 177 435abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 436abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SAT_NONE 0 /* do not saturate */ 437abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SAT_ZERO_ONE 1 /* clamp to [0,1] */ 438abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SAT_MINUS_PLUS_ONE 2 /* clamp to [-1,1] */ 439abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 440984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca/** 441abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Opcode is the operation code to execute. A given operation defines the 442abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * semantics how the source registers (if any) are interpreted and what is 443abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * written to the destination registers (if any) as a result of execution. 444abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 445abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * NumDstRegs and NumSrcRegs is the number of destination and source registers, 446abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * respectively. For a given operation code, those numbers are fixed and are 447abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * present here only for convenience. 448abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 44957221c54387a43e268a80ee6b578d57e03efcc5eMichal Krol * If Predicate is TRUE, tgsi_instruction_predicate token immediately follows. 45057221c54387a43e268a80ee6b578d57e03efcc5eMichal Krol * 451abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Saturate controls how are final results in destination registers modified. 452abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 453abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 454abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_instruction 455abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 456abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Type : 4; /* TGSI_TOKEN_TYPE_INSTRUCTION */ 457bf3930453cb85977510863e5cfba8487e09c093eMichal Krol unsigned NrTokens : 8; /* UINT */ 458abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Opcode : 8; /* TGSI_OPCODE_ */ 459abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Saturate : 2; /* TGSI_SAT_ */ 460abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned NumDstRegs : 2; /* UINT */ 461abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned NumSrcRegs : 4; /* UINT */ 46257221c54387a43e268a80ee6b578d57e03efcc5eMichal Krol unsigned Predicate : 1; /* BOOL */ 463ba1ca28cc62fed71c77902b95ae4ed36c6bf25f8Keith Whitwell unsigned Label : 1; 464ba1ca28cc62fed71c77902b95ae4ed36c6bf25f8Keith Whitwell unsigned Texture : 1; 465ba1ca28cc62fed71c77902b95ae4ed36c6bf25f8Keith Whitwell unsigned Padding : 1; 466abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 467abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 468abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* 469ba1ca28cc62fed71c77902b95ae4ed36c6bf25f8Keith Whitwell * If tgsi_instruction::Label is TRUE, tgsi_instruction_label follows. 470ba1ca28cc62fed71c77902b95ae4ed36c6bf25f8Keith Whitwell * 471ba1ca28cc62fed71c77902b95ae4ed36c6bf25f8Keith Whitwell * If tgsi_instruction::Texture is TRUE, tgsi_instruction_texture follows. 4722083a276eb270b748d1c2668eb9faa5aadc8e700Dave Airlie * if texture instruction has a number of offsets, 4732083a276eb270b748d1c2668eb9faa5aadc8e700Dave Airlie * then tgsi_instruction::Texture::NumOffset of tgsi_texture_offset follow. 474abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 475abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Then, tgsi_instruction::NumDstRegs of tgsi_dst_register follow. 476abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 477abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Then, tgsi_instruction::NumSrcRegs of tgsi_src_register follow. 478abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 479bf3930453cb85977510863e5cfba8487e09c093eMichal Krol * tgsi_instruction::NrTokens contains the total number of words that make the 480abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * instruction, including the instruction word. 481abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 482abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 483abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SWIZZLE_X 0 484abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SWIZZLE_Y 1 485abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SWIZZLE_Z 2 486abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SWIZZLE_W 3 487abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 488ba1ca28cc62fed71c77902b95ae4ed36c6bf25f8Keith Whitwellstruct tgsi_instruction_label 489abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 490abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Label : 24; /* UINT */ 491ba1ca28cc62fed71c77902b95ae4ed36c6bf25f8Keith Whitwell unsigned Padding : 8; 492abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 493abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 49496956dc5076fc03b9290368ca90e3f3b870ee613José Fonseca#define TGSI_TEXTURE_BUFFER 0 495abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_1D 1 496abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_2D 2 497abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_3D 3 498abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_CUBE 4 499abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_RECT 5 500abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_SHADOW1D 6 501abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_SHADOW2D 7 502abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_SHADOWRECT 8 503c0d941877b410b2402ed853d1d33b0664a3d1445Brian Paul#define TGSI_TEXTURE_1D_ARRAY 9 504d8452a0be810d7176b0cbfe6632fc0f8016b5733Marek Olšák#define TGSI_TEXTURE_2D_ARRAY 10 505d8452a0be810d7176b0cbfe6632fc0f8016b5733Marek Olšák#define TGSI_TEXTURE_SHADOW1D_ARRAY 11 506d8452a0be810d7176b0cbfe6632fc0f8016b5733Marek Olšák#define TGSI_TEXTURE_SHADOW2D_ARRAY 12 5070ec30805a4aad945515957e980374f65fbd3b66eDave Airlie#define TGSI_TEXTURE_SHADOWCUBE 13 508dacf5dc9ac1a700b86e0dc385513afaff41e7aeaMarek Olšák#define TGSI_TEXTURE_2D_MSAA 14 509dacf5dc9ac1a700b86e0dc385513afaff41e7aeaMarek Olšák#define TGSI_TEXTURE_2D_ARRAY_MSAA 15 510dacf5dc9ac1a700b86e0dc385513afaff41e7aeaMarek Olšák#define TGSI_TEXTURE_UNKNOWN 16 511dacf5dc9ac1a700b86e0dc385513afaff41e7aeaMarek Olšák#define TGSI_TEXTURE_COUNT 17 512abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 513ba1ca28cc62fed71c77902b95ae4ed36c6bf25f8Keith Whitwellstruct tgsi_instruction_texture 514abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 515abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Texture : 8; /* TGSI_TEXTURE_ */ 5162083a276eb270b748d1c2668eb9faa5aadc8e700Dave Airlie unsigned NumOffsets : 4; 5172083a276eb270b748d1c2668eb9faa5aadc8e700Dave Airlie unsigned Padding : 20; 5182083a276eb270b748d1c2668eb9faa5aadc8e700Dave Airlie}; 5192083a276eb270b748d1c2668eb9faa5aadc8e700Dave Airlie 5202083a276eb270b748d1c2668eb9faa5aadc8e700Dave Airlie/* for texture offsets in GLSL and DirectX. 5212083a276eb270b748d1c2668eb9faa5aadc8e700Dave Airlie * Generally these always come from TGSI_FILE_IMMEDIATE, 5222083a276eb270b748d1c2668eb9faa5aadc8e700Dave Airlie * however DX11 appears to have the capability to do 5232083a276eb270b748d1c2668eb9faa5aadc8e700Dave Airlie * non-constant texture offsets. 5242083a276eb270b748d1c2668eb9faa5aadc8e700Dave Airlie */ 5252083a276eb270b748d1c2668eb9faa5aadc8e700Dave Airliestruct tgsi_texture_offset 5262083a276eb270b748d1c2668eb9faa5aadc8e700Dave Airlie{ 5272083a276eb270b748d1c2668eb9faa5aadc8e700Dave Airlie int Index : 16; 5282083a276eb270b748d1c2668eb9faa5aadc8e700Dave Airlie unsigned File : 4; /**< one of TGSI_FILE_x */ 5292083a276eb270b748d1c2668eb9faa5aadc8e700Dave Airlie unsigned SwizzleX : 2; /* TGSI_SWIZZLE_x */ 5302083a276eb270b748d1c2668eb9faa5aadc8e700Dave Airlie unsigned SwizzleY : 2; /* TGSI_SWIZZLE_x */ 5312083a276eb270b748d1c2668eb9faa5aadc8e700Dave Airlie unsigned SwizzleZ : 2; /* TGSI_SWIZZLE_x */ 5322083a276eb270b748d1c2668eb9faa5aadc8e700Dave Airlie unsigned Padding : 6; 533abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 534abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 5350a7d50ed7e7608eaccba8e9648685e740065c384Michal Krol/* 5360a7d50ed7e7608eaccba8e9648685e740065c384Michal Krol * For SM3, the following constraint applies. 5370a7d50ed7e7608eaccba8e9648685e740065c384Michal Krol * - Swizzle is either set to identity or replicate. 5380a7d50ed7e7608eaccba8e9648685e740065c384Michal Krol */ 53957221c54387a43e268a80ee6b578d57e03efcc5eMichal Krolstruct tgsi_instruction_predicate 540abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 54157221c54387a43e268a80ee6b578d57e03efcc5eMichal Krol int Index : 16; /* SINT */ 5420a7d50ed7e7608eaccba8e9648685e740065c384Michal Krol unsigned SwizzleX : 2; /* TGSI_SWIZZLE_x */ 5430a7d50ed7e7608eaccba8e9648685e740065c384Michal Krol unsigned SwizzleY : 2; /* TGSI_SWIZZLE_x */ 5440a7d50ed7e7608eaccba8e9648685e740065c384Michal Krol unsigned SwizzleZ : 2; /* TGSI_SWIZZLE_x */ 5450a7d50ed7e7608eaccba8e9648685e740065c384Michal Krol unsigned SwizzleW : 2; /* TGSI_SWIZZLE_x */ 5460a7d50ed7e7608eaccba8e9648685e740065c384Michal Krol unsigned Negate : 1; /* BOOL */ 54757221c54387a43e268a80ee6b578d57e03efcc5eMichal Krol unsigned Padding : 7; 548abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 549abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 550984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca/** 551abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * File specifies the register array to access. 552abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 553abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Index specifies the element number of a register in the register file. 554abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 555abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If Indirect is TRUE, Index should be offset by the X component of a source 556abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * register that follows. The register can be now fetched into local storage 557abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * for further processing. 558abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 559abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If Negate is TRUE, all components of the fetched register are negated. 560abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 561abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * The fetched register components are swizzled according to SwizzleX, SwizzleY, 562abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * SwizzleZ and SwizzleW. 563abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 564abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 565abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 566abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_src_register 567abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 568abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned File : 4; /* TGSI_FILE_ */ 569ba1ca28cc62fed71c77902b95ae4ed36c6bf25f8Keith Whitwell unsigned Indirect : 1; /* BOOL */ 570ba1ca28cc62fed71c77902b95ae4ed36c6bf25f8Keith Whitwell unsigned Dimension : 1; /* BOOL */ 571ba1ca28cc62fed71c77902b95ae4ed36c6bf25f8Keith Whitwell int Index : 16; /* SINT */ 572abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned SwizzleX : 2; /* TGSI_SWIZZLE_ */ 573abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned SwizzleY : 2; /* TGSI_SWIZZLE_ */ 574abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned SwizzleZ : 2; /* TGSI_SWIZZLE_ */ 575abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned SwizzleW : 2; /* TGSI_SWIZZLE_ */ 576ba1ca28cc62fed71c77902b95ae4ed36c6bf25f8Keith Whitwell unsigned Absolute : 1; /* BOOL */ 577ba1ca28cc62fed71c77902b95ae4ed36c6bf25f8Keith Whitwell unsigned Negate : 1; /* BOOL */ 578abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 579abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 580984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca/** 581ba1ca28cc62fed71c77902b95ae4ed36c6bf25f8Keith Whitwell * If tgsi_src_register::Modifier is TRUE, tgsi_src_register_modifier follows. 582abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 583abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Then, if tgsi_src_register::Indirect is TRUE, another tgsi_src_register 584abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * follows. 585abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 586abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Then, if tgsi_src_register::Dimension is TRUE, tgsi_dimension follows. 587abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 588abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 589abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 590abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_dimension 591abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 592abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Indirect : 1; /* BOOL */ 593abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Dimension : 1; /* BOOL */ 594ba1ca28cc62fed71c77902b95ae4ed36c6bf25f8Keith Whitwell unsigned Padding : 14; 595abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol int Index : 16; /* SINT */ 596abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 597abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 598abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_dst_register 599abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 600abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned File : 4; /* TGSI_FILE_ */ 601abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned WriteMask : 4; /* TGSI_WRITEMASK_ */ 602abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Indirect : 1; /* BOOL */ 603abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Dimension : 1; /* BOOL */ 604abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol int Index : 16; /* SINT */ 605ba1ca28cc62fed71c77902b95ae4ed36c6bf25f8Keith Whitwell unsigned Padding : 6; 606abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 607abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 608abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 60994c73d1bb9037a1eead1d5174f218b15852b52d7José Fonseca#ifdef __cplusplus 61094c73d1bb9037a1eead1d5174f218b15852b52d7José Fonseca} 61194c73d1bb9037a1eead1d5174f218b15852b52d7José Fonseca#endif 612abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 6130a7d50ed7e7608eaccba8e9648685e740065c384Michal Krol#endif /* P_SHADER_TOKENS_H */ 614