p_shader_tokens.h revision 73317139a4f78126af0dc4ddaef8206352740727
1984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca/************************************************************************** 2984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * 3984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. 40a7d50ed7e7608eaccba8e9648685e740065c384Michal Krol * Copyright 2009 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 364339744c1676f925d42251bd32795bba9928cd5fKeith Whitwell#include "p_compiler.h" 374339744c1676f925d42251bd32795bba9928cd5fKeith Whitwell 38abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 39abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_header 40abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 41abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned HeaderSize : 8; 42abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned BodySize : 24; 43abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 44abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 45abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_PROCESSOR_FRAGMENT 0 46abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_PROCESSOR_VERTEX 1 47abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_PROCESSOR_GEOMETRY 2 48abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 49abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_processor 50abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 51abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Processor : 4; /* TGSI_PROCESSOR_ */ 52abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Padding : 28; 53abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 54abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 55abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TOKEN_TYPE_DECLARATION 0 56abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TOKEN_TYPE_IMMEDIATE 1 57abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TOKEN_TYPE_INSTRUCTION 2 583ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin#define TGSI_TOKEN_TYPE_PROPERTY 3 59abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 60abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_token 61abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 62868c607c1751fc3e6df1a8dc45e8b70e6bc315f6Brian Paul unsigned Type : 4; /**< TGSI_TOKEN_TYPE_x */ 63bf3930453cb85977510863e5cfba8487e09c093eMichal Krol unsigned NrTokens : 8; /**< UINT */ 64ba1ca28cc62fed71c77902b95ae4ed36c6bf25f8Keith Whitwell unsigned Padding : 20; 65abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 66abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 67e884c7ed9a14aabaa86f6710c594d20812ed11d9Zack Rusinenum tgsi_file_type { 683ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin TGSI_FILE_NULL =0, 693ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin TGSI_FILE_CONSTANT =1, 703ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin TGSI_FILE_INPUT =2, 713ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin TGSI_FILE_OUTPUT =3, 723ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin TGSI_FILE_TEMPORARY =4, 733ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin TGSI_FILE_SAMPLER =5, 743ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin TGSI_FILE_ADDRESS =6, 753ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin TGSI_FILE_IMMEDIATE =7, 763ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin TGSI_FILE_LOOP =8, 773ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin TGSI_FILE_PREDICATE =9, 783ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin TGSI_FILE_SYSTEM_VALUE =10, 79e884c7ed9a14aabaa86f6710c594d20812ed11d9Zack Rusin TGSI_FILE_COUNT /**< how many TGSI_FILE_ types */ 80e884c7ed9a14aabaa86f6710c594d20812ed11d9Zack Rusin}; 8135ca45daba3906ac94fb879d2374d476ba2dac47Brian 82abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 83abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_NONE 0x00 84abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_X 0x01 85abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_Y 0x02 86abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_XY 0x03 87abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_Z 0x04 88abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_XZ 0x05 89abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_YZ 0x06 90abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_XYZ 0x07 91abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_W 0x08 92abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_XW 0x09 93abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_YW 0x0A 94abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_XYW 0x0B 95abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_ZW 0x0C 96abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_XZW 0x0D 97abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_YZW 0x0E 98abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_XYZW 0x0F 99abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 1004e33edfd06999e7c65b761be2d1cdc16e5b659c5Michal Krol#define TGSI_INTERPOLATE_CONSTANT 0 1014e33edfd06999e7c65b761be2d1cdc16e5b659c5Michal Krol#define TGSI_INTERPOLATE_LINEAR 1 1024e33edfd06999e7c65b761be2d1cdc16e5b659c5Michal Krol#define TGSI_INTERPOLATE_PERSPECTIVE 2 103bd3b47590e2a8e91a8f5545d7c8872b26879c228Michal Krol#define TGSI_INTERPOLATE_COUNT 3 1044e33edfd06999e7c65b761be2d1cdc16e5b659c5Michal Krol 105abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_declaration 106abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 107868c607c1751fc3e6df1a8dc45e8b70e6bc315f6Brian Paul unsigned Type : 4; /**< TGSI_TOKEN_TYPE_DECLARATION */ 108bf3930453cb85977510863e5cfba8487e09c093eMichal Krol unsigned NrTokens : 8; /**< UINT */ 109868c607c1751fc3e6df1a8dc45e8b70e6bc315f6Brian Paul unsigned File : 4; /**< one of TGSI_FILE_x */ 110868c607c1751fc3e6df1a8dc45e8b70e6bc315f6Brian Paul unsigned UsageMask : 4; /**< bitmask of TGSI_WRITEMASK_x flags */ 111868c607c1751fc3e6df1a8dc45e8b70e6bc315f6Brian Paul unsigned Interpolate : 4; /**< one of TGSI_INTERPOLATE_x */ 1120adfdaeaa1e20c81a9f37455fe78d15c6406e3d3Michal Krol unsigned Dimension : 1; /**< any extra dimension info? */ 113868c607c1751fc3e6df1a8dc45e8b70e6bc315f6Brian Paul unsigned Semantic : 1; /**< BOOL, any semantic info? */ 114868c607c1751fc3e6df1a8dc45e8b70e6bc315f6Brian Paul unsigned Centroid : 1; /**< centroid sampling? */ 115868c607c1751fc3e6df1a8dc45e8b70e6bc315f6Brian Paul unsigned Invariant : 1; /**< invariant optimization? */ 1160adfdaeaa1e20c81a9f37455fe78d15c6406e3d3Michal Krol unsigned Padding : 4; 117abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 118abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 119abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_declaration_range 120abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 121868c607c1751fc3e6df1a8dc45e8b70e6bc315f6Brian Paul unsigned First : 16; /**< UINT */ 122868c607c1751fc3e6df1a8dc45e8b70e6bc315f6Brian Paul unsigned Last : 16; /**< UINT */ 123abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 124abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 1250adfdaeaa1e20c81a9f37455fe78d15c6406e3d3Michal Krolstruct tgsi_declaration_dimension 1260adfdaeaa1e20c81a9f37455fe78d15c6406e3d3Michal Krol{ 1270adfdaeaa1e20c81a9f37455fe78d15c6406e3d3Michal Krol unsigned Index2D:16; /**< UINT */ 1280adfdaeaa1e20c81a9f37455fe78d15c6406e3d3Michal Krol unsigned Padding:16; 1290adfdaeaa1e20c81a9f37455fe78d15c6406e3d3Michal Krol}; 1300adfdaeaa1e20c81a9f37455fe78d15c6406e3d3Michal Krol 1319b21b3c52a8a7d58d08151d1a6bf25c472dec213Michal Krol#define TGSI_SEMANTIC_POSITION 0 1329b21b3c52a8a7d58d08151d1a6bf25c472dec213Michal Krol#define TGSI_SEMANTIC_COLOR 1 1339b21b3c52a8a7d58d08151d1a6bf25c472dec213Michal Krol#define TGSI_SEMANTIC_BCOLOR 2 /**< back-face color */ 1349b21b3c52a8a7d58d08151d1a6bf25c472dec213Michal Krol#define TGSI_SEMANTIC_FOG 3 1359b21b3c52a8a7d58d08151d1a6bf25c472dec213Michal Krol#define TGSI_SEMANTIC_PSIZE 4 1369b21b3c52a8a7d58d08151d1a6bf25c472dec213Michal Krol#define TGSI_SEMANTIC_GENERIC 5 1379b21b3c52a8a7d58d08151d1a6bf25c472dec213Michal Krol#define TGSI_SEMANTIC_NORMAL 6 1389b21b3c52a8a7d58d08151d1a6bf25c472dec213Michal Krol#define TGSI_SEMANTIC_FACE 7 1399b21b3c52a8a7d58d08151d1a6bf25c472dec213Michal Krol#define TGSI_SEMANTIC_EDGEFLAG 8 1409b21b3c52a8a7d58d08151d1a6bf25c472dec213Michal Krol#define TGSI_SEMANTIC_PRIMID 9 1419b21b3c52a8a7d58d08151d1a6bf25c472dec213Michal Krol#define TGSI_SEMANTIC_INSTANCEID 10 1429b21b3c52a8a7d58d08151d1a6bf25c472dec213Michal Krol#define TGSI_SEMANTIC_COUNT 11 /**< number of semantic values */ 143abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 144abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_declaration_semantic 145abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 146763426a0256f0ab06f8af53947bd630f8600183aKeith Whitwell unsigned Name : 8; /**< one of TGSI_SEMANTIC_x */ 147763426a0256f0ab06f8af53947bd630f8600183aKeith Whitwell unsigned Index : 16; /**< UINT */ 148abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Padding : 8; 149abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 150abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 151abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_IMM_FLOAT32 0 152b1c55e80aa600c88a20117cdca4bde2a46f79730Michal Krol#define TGSI_IMM_UINT32 1 153b1c55e80aa600c88a20117cdca4bde2a46f79730Michal Krol#define TGSI_IMM_INT32 2 154abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 155abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_immediate 156abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 157868c607c1751fc3e6df1a8dc45e8b70e6bc315f6Brian Paul unsigned Type : 4; /**< TGSI_TOKEN_TYPE_IMMEDIATE */ 158bf3930453cb85977510863e5cfba8487e09c093eMichal Krol unsigned NrTokens : 8; /**< UINT */ 159868c607c1751fc3e6df1a8dc45e8b70e6bc315f6Brian Paul unsigned DataType : 4; /**< one of TGSI_IMM_x */ 160ba1ca28cc62fed71c77902b95ae4ed36c6bf25f8Keith Whitwell unsigned Padding : 16; 161abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 162abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 163fd31f92cea0ce8613a22d8f4b3c75b340bcc5689Keith Whitwellunion tgsi_immediate_data 164abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 165abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol float Float; 166b1c55e80aa600c88a20117cdca4bde2a46f79730Michal Krol unsigned Uint; 167b1c55e80aa600c88a20117cdca4bde2a46f79730Michal Krol int Int; 168abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 169abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 1703ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin#define TGSI_PROPERTY_GS_INPUT_PRIM 0 1713ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin#define TGSI_PROPERTY_GS_OUTPUT_PRIM 1 1723ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin#define TGSI_PROPERTY_GS_MAX_VERTICES 2 17373317139a4f78126af0dc4ddaef8206352740727Luca Barbieri#define TGSI_PROPERTY_FS_COORD_ORIGIN 3 17473317139a4f78126af0dc4ddaef8206352740727Luca Barbieri#define TGSI_PROPERTY_FS_COORD_PIXEL_CENTER 4 17573317139a4f78126af0dc4ddaef8206352740727Luca Barbieri#define TGSI_PROPERTY_COUNT 5 1763ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin 1773ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusinstruct tgsi_property { 1783ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin unsigned Type : 4; /**< TGSI_TOKEN_TYPE_PROPERTY */ 1793ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin unsigned NrTokens : 8; /**< UINT */ 1803ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin unsigned PropertyName : 8; /**< one of TGSI_PROPERTY */ 1813ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin unsigned Padding : 12; 1823ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin}; 1833ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin 18473317139a4f78126af0dc4ddaef8206352740727Luca Barbieri#define TGSI_FS_COORD_ORIGIN_UPPER_LEFT 0 18573317139a4f78126af0dc4ddaef8206352740727Luca Barbieri#define TGSI_FS_COORD_ORIGIN_LOWER_LEFT 1 18673317139a4f78126af0dc4ddaef8206352740727Luca Barbieri 18773317139a4f78126af0dc4ddaef8206352740727Luca Barbieri#define TGSI_FS_COORD_PIXEL_CENTER_HALF_INTEGER 0 18873317139a4f78126af0dc4ddaef8206352740727Luca Barbieri#define TGSI_FS_COORD_PIXEL_CENTER_INTEGER 1 18973317139a4f78126af0dc4ddaef8206352740727Luca Barbieri 1903ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusinstruct tgsi_property_data { 1913ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin unsigned Data; 1923ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin}; 1933ff688ea299581e60caf5d6e1a464f68c717fe83Zack Rusin 194d0d98f3ecfed7d7e0c4426185c13ec4f7c1761f9Keith Whitwell/* TGSI opcodes. 195d0d98f3ecfed7d7e0c4426185c13ec4f7c1761f9Keith Whitwell * 196d0d98f3ecfed7d7e0c4426185c13ec4f7c1761f9Keith Whitwell * For more information on semantics of opcodes and 197d0d98f3ecfed7d7e0c4426185c13ec4f7c1761f9Keith Whitwell * which APIs are known to use which opcodes, see 198d0d98f3ecfed7d7e0c4426185c13ec4f7c1761f9Keith Whitwell * auxiliary/tgsi/tgsi-instruction-set.txt 199abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 200abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_ARL 0 201abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_MOV 1 202abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_LIT 2 203abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_RCP 3 204abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_RSQ 4 205abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_EXP 5 206abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_LOG 6 207abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_MUL 7 208abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_ADD 8 209abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DP3 9 210abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DP4 10 211abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DST 11 212abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_MIN 12 213abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_MAX 13 214abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SLT 14 215abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SGE 15 216abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_MAD 16 217abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SUB 17 218ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell#define TGSI_OPCODE_LRP 18 219abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_CND 19 220b3f4b56a3b7f979c631358caefed635c6ec56453Keith Whitwell /* gap */ 221ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell#define TGSI_OPCODE_DP2A 21 222d0d98f3ecfed7d7e0c4426185c13ec4f7c1761f9Keith Whitwell /* gap */ 223ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell#define TGSI_OPCODE_FRC 24 224abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_CLAMP 25 225ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell#define TGSI_OPCODE_FLR 26 226abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_ROUND 27 227ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell#define TGSI_OPCODE_EX2 28 228ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell#define TGSI_OPCODE_LG2 29 229ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell#define TGSI_OPCODE_POW 30 230ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell#define TGSI_OPCODE_XPD 31 231d0d98f3ecfed7d7e0c4426185c13ec4f7c1761f9Keith Whitwell /* gap */ 232abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_ABS 33 233abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_RCC 34 234abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DPH 35 235abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_COS 36 236abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DDX 37 237abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DDY 38 238abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_KILP 39 /* predicated kill */ 239abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_PK2H 40 240abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_PK2US 41 241abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_PK4B 42 242abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_PK4UB 43 243abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_RFL 44 244abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SEQ 45 245abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SFL 46 246abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SGT 47 247abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SIN 48 248abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SLE 49 249abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SNE 50 250abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_STR 51 251abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEX 52 252abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TXD 53 253bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_TXP 54 254bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_UP2H 55 255bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_UP2US 56 256bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_UP4B 57 257bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_UP4UB 58 258bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_X2D 59 259bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_ARA 60 260bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_ARR 61 261bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_BRA 62 262bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_CAL 63 263bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_RET 64 264d0d98f3ecfed7d7e0c4426185c13ec4f7c1761f9Keith Whitwell#define TGSI_OPCODE_SSG 65 /* SGN */ 265bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_CMP 66 266bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_SCS 67 267bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_TXB 68 268bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_NRM 69 269bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_DIV 70 270bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_DP2 71 271bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_TXL 72 272bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_BRK 73 273bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_IF 74 274cb90c43676c258419e4b617c908570891d3674cbMichal Krol#define TGSI_OPCODE_BGNFOR 75 275bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_REP 76 276bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_ELSE 77 277bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_ENDIF 78 278cb90c43676c258419e4b617c908570891d3674cbMichal Krol#define TGSI_OPCODE_ENDFOR 79 279bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_ENDREP 80 280bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_PUSHA 81 281bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_POPA 82 282bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_CEIL 83 283bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_I2F 84 284bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_NOT 85 285bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_TRUNC 86 286bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_SHL 87 2872c046034dc5c95dd2fe84d0b4fd44f25235480b9Michal Krol /* gap */ 288bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_AND 89 289bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_OR 90 290bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_MOD 91 291bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_XOR 92 292bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_SAD 93 293bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_TXF 94 294bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_TXQ 95 295bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_CONT 96 296bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_EMIT 97 297bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_ENDPRIM 98 298cb90c43676c258419e4b617c908570891d3674cbMichal Krol#define TGSI_OPCODE_BGNLOOP 99 299bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_BGNSUB 100 300cb90c43676c258419e4b617c908570891d3674cbMichal Krol#define TGSI_OPCODE_ENDLOOP 101 301bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_ENDSUB 102 3024e1d51786e0657c7430d731ac464f2a73e32eddfKeith Whitwell /* gap */ 303bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_NOP 107 304d0d98f3ecfed7d7e0c4426185c13ec4f7c1761f9Keith Whitwell /* gap */ 305bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_NRM4 112 306bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_CALLNZ 113 307bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_IFC 114 308bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_BREAKC 115 309d0d98f3ecfed7d7e0c4426185c13ec4f7c1761f9Keith Whitwell#define TGSI_OPCODE_KIL 116 /* conditional kill */ 310bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_END 117 /* aka HALT */ 311b9cb74c7f826dfd320f5e5b54aa933898f7ddd3dKeith Whitwell /* gap */ 312c59eda099306aca3a950f7157bde6fe84d0db604Michal Krol#define TGSI_OPCODE_F2I 119 313c59eda099306aca3a950f7157bde6fe84d0db604Michal Krol#define TGSI_OPCODE_IDIV 120 314c59eda099306aca3a950f7157bde6fe84d0db604Michal Krol#define TGSI_OPCODE_IMAX 121 315c59eda099306aca3a950f7157bde6fe84d0db604Michal Krol#define TGSI_OPCODE_IMIN 122 316c59eda099306aca3a950f7157bde6fe84d0db604Michal Krol#define TGSI_OPCODE_INEG 123 317c59eda099306aca3a950f7157bde6fe84d0db604Michal Krol#define TGSI_OPCODE_ISGE 124 318c59eda099306aca3a950f7157bde6fe84d0db604Michal Krol#define TGSI_OPCODE_ISHR 125 319c59eda099306aca3a950f7157bde6fe84d0db604Michal Krol#define TGSI_OPCODE_ISLT 126 320c59eda099306aca3a950f7157bde6fe84d0db604Michal Krol#define TGSI_OPCODE_F2U 127 321c59eda099306aca3a950f7157bde6fe84d0db604Michal Krol#define TGSI_OPCODE_U2F 128 322c59eda099306aca3a950f7157bde6fe84d0db604Michal Krol#define TGSI_OPCODE_UADD 129 323c59eda099306aca3a950f7157bde6fe84d0db604Michal Krol#define TGSI_OPCODE_UDIV 130 324c59eda099306aca3a950f7157bde6fe84d0db604Michal Krol#define TGSI_OPCODE_UMAD 131 325c59eda099306aca3a950f7157bde6fe84d0db604Michal Krol#define TGSI_OPCODE_UMAX 132 326c59eda099306aca3a950f7157bde6fe84d0db604Michal Krol#define TGSI_OPCODE_UMIN 133 327c34f6faf35c16ff81a1c4420290be4ed7f542121Michal Krol#define TGSI_OPCODE_UMOD 134 328c34f6faf35c16ff81a1c4420290be4ed7f542121Michal Krol#define TGSI_OPCODE_UMUL 135 329c34f6faf35c16ff81a1c4420290be4ed7f542121Michal Krol#define TGSI_OPCODE_USEQ 136 330c34f6faf35c16ff81a1c4420290be4ed7f542121Michal Krol#define TGSI_OPCODE_USGE 137 331c34f6faf35c16ff81a1c4420290be4ed7f542121Michal Krol#define TGSI_OPCODE_USHR 138 332c34f6faf35c16ff81a1c4420290be4ed7f542121Michal Krol#define TGSI_OPCODE_USLT 139 333c34f6faf35c16ff81a1c4420290be4ed7f542121Michal Krol#define TGSI_OPCODE_USNE 140 334c34f6faf35c16ff81a1c4420290be4ed7f542121Michal Krol#define TGSI_OPCODE_SWITCH 141 335c34f6faf35c16ff81a1c4420290be4ed7f542121Michal Krol#define TGSI_OPCODE_CASE 142 336c34f6faf35c16ff81a1c4420290be4ed7f542121Michal Krol#define TGSI_OPCODE_DEFAULT 143 337c34f6faf35c16ff81a1c4420290be4ed7f542121Michal Krol#define TGSI_OPCODE_ENDSWITCH 144 338c34f6faf35c16ff81a1c4420290be4ed7f542121Michal Krol#define TGSI_OPCODE_LAST 145 339abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 340abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SAT_NONE 0 /* do not saturate */ 341abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SAT_ZERO_ONE 1 /* clamp to [0,1] */ 342abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SAT_MINUS_PLUS_ONE 2 /* clamp to [-1,1] */ 343abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 344984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca/** 345abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Opcode is the operation code to execute. A given operation defines the 346abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * semantics how the source registers (if any) are interpreted and what is 347abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * written to the destination registers (if any) as a result of execution. 348abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 349abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * NumDstRegs and NumSrcRegs is the number of destination and source registers, 350abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * respectively. For a given operation code, those numbers are fixed and are 351abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * present here only for convenience. 352abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 35357221c54387a43e268a80ee6b578d57e03efcc5eMichal Krol * If Predicate is TRUE, tgsi_instruction_predicate token immediately follows. 35457221c54387a43e268a80ee6b578d57e03efcc5eMichal Krol * 355abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Saturate controls how are final results in destination registers modified. 356abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 357abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 358abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_instruction 359abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 360abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Type : 4; /* TGSI_TOKEN_TYPE_INSTRUCTION */ 361bf3930453cb85977510863e5cfba8487e09c093eMichal Krol unsigned NrTokens : 8; /* UINT */ 362abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Opcode : 8; /* TGSI_OPCODE_ */ 363abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Saturate : 2; /* TGSI_SAT_ */ 364abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned NumDstRegs : 2; /* UINT */ 365abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned NumSrcRegs : 4; /* UINT */ 36657221c54387a43e268a80ee6b578d57e03efcc5eMichal Krol unsigned Predicate : 1; /* BOOL */ 367ba1ca28cc62fed71c77902b95ae4ed36c6bf25f8Keith Whitwell unsigned Label : 1; 368ba1ca28cc62fed71c77902b95ae4ed36c6bf25f8Keith Whitwell unsigned Texture : 1; 369ba1ca28cc62fed71c77902b95ae4ed36c6bf25f8Keith Whitwell unsigned Padding : 1; 370abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 371abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 372abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* 373ba1ca28cc62fed71c77902b95ae4ed36c6bf25f8Keith Whitwell * If tgsi_instruction::Label is TRUE, tgsi_instruction_label follows. 374ba1ca28cc62fed71c77902b95ae4ed36c6bf25f8Keith Whitwell * 375ba1ca28cc62fed71c77902b95ae4ed36c6bf25f8Keith Whitwell * If tgsi_instruction::Texture is TRUE, tgsi_instruction_texture follows. 376abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 377abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Then, tgsi_instruction::NumDstRegs of tgsi_dst_register follow. 378abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 379abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Then, tgsi_instruction::NumSrcRegs of tgsi_src_register follow. 380abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 381bf3930453cb85977510863e5cfba8487e09c093eMichal Krol * tgsi_instruction::NrTokens contains the total number of words that make the 382abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * instruction, including the instruction word. 383abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 384abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 385abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SWIZZLE_X 0 386abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SWIZZLE_Y 1 387abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SWIZZLE_Z 2 388abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SWIZZLE_W 3 389abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 390ba1ca28cc62fed71c77902b95ae4ed36c6bf25f8Keith Whitwellstruct tgsi_instruction_label 391abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 392abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Label : 24; /* UINT */ 393ba1ca28cc62fed71c77902b95ae4ed36c6bf25f8Keith Whitwell unsigned Padding : 8; 394abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 395abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 396abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_UNKNOWN 0 397abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_1D 1 398abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_2D 2 399abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_3D 3 400abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_CUBE 4 401abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_RECT 5 402abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_SHADOW1D 6 403abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_SHADOW2D 7 404abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_SHADOWRECT 8 4053d5dcc2203f5018863ad51958871542696e1ed1bMichal Krol#define TGSI_TEXTURE_COUNT 9 406abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 407ba1ca28cc62fed71c77902b95ae4ed36c6bf25f8Keith Whitwellstruct tgsi_instruction_texture 408abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 409abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Texture : 8; /* TGSI_TEXTURE_ */ 410ba1ca28cc62fed71c77902b95ae4ed36c6bf25f8Keith Whitwell unsigned Padding : 24; 411abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 412abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 4130a7d50ed7e7608eaccba8e9648685e740065c384Michal Krol/* 4140a7d50ed7e7608eaccba8e9648685e740065c384Michal Krol * For SM3, the following constraint applies. 4150a7d50ed7e7608eaccba8e9648685e740065c384Michal Krol * - Swizzle is either set to identity or replicate. 4160a7d50ed7e7608eaccba8e9648685e740065c384Michal Krol */ 41757221c54387a43e268a80ee6b578d57e03efcc5eMichal Krolstruct tgsi_instruction_predicate 418abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 41957221c54387a43e268a80ee6b578d57e03efcc5eMichal Krol int Index : 16; /* SINT */ 4200a7d50ed7e7608eaccba8e9648685e740065c384Michal Krol unsigned SwizzleX : 2; /* TGSI_SWIZZLE_x */ 4210a7d50ed7e7608eaccba8e9648685e740065c384Michal Krol unsigned SwizzleY : 2; /* TGSI_SWIZZLE_x */ 4220a7d50ed7e7608eaccba8e9648685e740065c384Michal Krol unsigned SwizzleZ : 2; /* TGSI_SWIZZLE_x */ 4230a7d50ed7e7608eaccba8e9648685e740065c384Michal Krol unsigned SwizzleW : 2; /* TGSI_SWIZZLE_x */ 4240a7d50ed7e7608eaccba8e9648685e740065c384Michal Krol unsigned Negate : 1; /* BOOL */ 42557221c54387a43e268a80ee6b578d57e03efcc5eMichal Krol unsigned Padding : 7; 426abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 427abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 428984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca/** 429abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * File specifies the register array to access. 430abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 431abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Index specifies the element number of a register in the register file. 432abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 433abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If Indirect is TRUE, Index should be offset by the X component of a source 434abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * register that follows. The register can be now fetched into local storage 435abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * for further processing. 436abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 437abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If Negate is TRUE, all components of the fetched register are negated. 438abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 439abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * The fetched register components are swizzled according to SwizzleX, SwizzleY, 440abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * SwizzleZ and SwizzleW. 441abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 442abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 443abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 444abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_src_register 445abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 446abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned File : 4; /* TGSI_FILE_ */ 447ba1ca28cc62fed71c77902b95ae4ed36c6bf25f8Keith Whitwell unsigned Indirect : 1; /* BOOL */ 448ba1ca28cc62fed71c77902b95ae4ed36c6bf25f8Keith Whitwell unsigned Dimension : 1; /* BOOL */ 449ba1ca28cc62fed71c77902b95ae4ed36c6bf25f8Keith Whitwell int Index : 16; /* SINT */ 450abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned SwizzleX : 2; /* TGSI_SWIZZLE_ */ 451abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned SwizzleY : 2; /* TGSI_SWIZZLE_ */ 452abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned SwizzleZ : 2; /* TGSI_SWIZZLE_ */ 453abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned SwizzleW : 2; /* TGSI_SWIZZLE_ */ 454ba1ca28cc62fed71c77902b95ae4ed36c6bf25f8Keith Whitwell unsigned Absolute : 1; /* BOOL */ 455ba1ca28cc62fed71c77902b95ae4ed36c6bf25f8Keith Whitwell unsigned Negate : 1; /* BOOL */ 456abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 457abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 458984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca/** 459ba1ca28cc62fed71c77902b95ae4ed36c6bf25f8Keith Whitwell * If tgsi_src_register::Modifier is TRUE, tgsi_src_register_modifier follows. 460abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 461abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Then, if tgsi_src_register::Indirect is TRUE, another tgsi_src_register 462abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * follows. 463abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * 464abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Then, if tgsi_src_register::Dimension is TRUE, tgsi_dimension follows. 465abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */ 466abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 467abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 468abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_dimension 469abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 470abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Indirect : 1; /* BOOL */ 471abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Dimension : 1; /* BOOL */ 472ba1ca28cc62fed71c77902b95ae4ed36c6bf25f8Keith Whitwell unsigned Padding : 14; 473abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol int Index : 16; /* SINT */ 474abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 475abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 476abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_dst_register 477abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{ 478abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned File : 4; /* TGSI_FILE_ */ 479abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned WriteMask : 4; /* TGSI_WRITEMASK_ */ 480abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Indirect : 1; /* BOOL */ 481abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol unsigned Dimension : 1; /* BOOL */ 482abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol int Index : 16; /* SINT */ 483ba1ca28cc62fed71c77902b95ae4ed36c6bf25f8Keith Whitwell unsigned Padding : 6; 484abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol}; 485abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 486abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 48794c73d1bb9037a1eead1d5174f218b15852b52d7José Fonseca#ifdef __cplusplus 48894c73d1bb9037a1eead1d5174f218b15852b52d7José Fonseca} 48994c73d1bb9037a1eead1d5174f218b15852b52d7José Fonseca#endif 490abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol 4910a7d50ed7e7608eaccba8e9648685e740065c384Michal Krol#endif /* P_SHADER_TOKENS_H */ 492