1848b8605Smrg/************************************************************************** 2848b8605Smrg * 3848b8605Smrg * Copyright 2007-2008 VMware, Inc. 4848b8605Smrg * Copyright 2012 VMware, Inc. 5848b8605Smrg * All Rights Reserved. 6848b8605Smrg * 7848b8605Smrg * Permission is hereby granted, free of charge, to any person obtaining a 8848b8605Smrg * copy of this software and associated documentation files (the 9848b8605Smrg * "Software"), to deal in the Software without restriction, including 10848b8605Smrg * without limitation the rights to use, copy, modify, merge, publish, 11848b8605Smrg * distribute, sub license, and/or sell copies of the Software, and to 12848b8605Smrg * permit persons to whom the Software is furnished to do so, subject to 13848b8605Smrg * the following conditions: 14848b8605Smrg * 15848b8605Smrg * The above copyright notice and this permission notice (including the 16848b8605Smrg * next paragraph) shall be included in all copies or substantial portions 17848b8605Smrg * of the Software. 18848b8605Smrg * 19848b8605Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 20848b8605Smrg * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 21848b8605Smrg * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 22848b8605Smrg * IN NO EVENT SHALL THE AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR 23848b8605Smrg * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 24848b8605Smrg * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 25848b8605Smrg * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 26848b8605Smrg * 27848b8605Smrg **************************************************************************/ 28848b8605Smrg 29848b8605Smrg 30848b8605Smrg#include "pipe/p_compiler.h" 31848b8605Smrg#include "util/u_memory.h" 32848b8605Smrg#include "tgsi_strings.h" 33848b8605Smrg 34848b8605Smrg 35b8e80941Smrgconst char *tgsi_processor_type_names[6] = 36848b8605Smrg{ 37848b8605Smrg "VERT", 38b8e80941Smrg "FRAG", 39848b8605Smrg "GEOM", 40b8e80941Smrg "TESS_CTRL", 41b8e80941Smrg "TESS_EVAL", 42848b8605Smrg "COMP" 43848b8605Smrg}; 44848b8605Smrg 45848b8605Smrgstatic const char *tgsi_file_names[] = 46848b8605Smrg{ 47848b8605Smrg "NULL", 48848b8605Smrg "CONST", 49848b8605Smrg "IN", 50848b8605Smrg "OUT", 51848b8605Smrg "TEMP", 52848b8605Smrg "SAMP", 53848b8605Smrg "ADDR", 54848b8605Smrg "IMM", 55848b8605Smrg "SV", 56b8e80941Smrg "IMAGE", 57b8e80941Smrg "SVIEW", 58b8e80941Smrg "BUFFER", 59b8e80941Smrg "MEMORY", 60b8e80941Smrg "CONSTBUF", 61b8e80941Smrg "HWATOMIC", 62848b8605Smrg}; 63848b8605Smrg 64848b8605Smrgconst char *tgsi_semantic_names[TGSI_SEMANTIC_COUNT] = 65848b8605Smrg{ 66848b8605Smrg "POSITION", 67848b8605Smrg "COLOR", 68848b8605Smrg "BCOLOR", 69848b8605Smrg "FOG", 70848b8605Smrg "PSIZE", 71848b8605Smrg "GENERIC", 72848b8605Smrg "NORMAL", 73848b8605Smrg "FACE", 74848b8605Smrg "EDGEFLAG", 75848b8605Smrg "PRIM_ID", 76848b8605Smrg "INSTANCEID", 77848b8605Smrg "VERTEXID", 78848b8605Smrg "STENCIL", 79848b8605Smrg "CLIPDIST", 80848b8605Smrg "CLIPVERTEX", 81848b8605Smrg "GRID_SIZE", 82848b8605Smrg "BLOCK_ID", 83848b8605Smrg "BLOCK_SIZE", 84848b8605Smrg "THREAD_ID", 85848b8605Smrg "TEXCOORD", 86848b8605Smrg "PCOORD", 87848b8605Smrg "VIEWPORT_INDEX", 88848b8605Smrg "LAYER", 89848b8605Smrg "SAMPLEID", 90848b8605Smrg "SAMPLEPOS", 91848b8605Smrg "SAMPLEMASK", 92848b8605Smrg "INVOCATIONID", 93b8e80941Smrg "VERTEXID_NOBASE", 94b8e80941Smrg "BASEVERTEX", 95b8e80941Smrg "PATCH", 96b8e80941Smrg "TESSCOORD", 97b8e80941Smrg "TESSOUTER", 98b8e80941Smrg "TESSINNER", 99b8e80941Smrg "VERTICESIN", 100b8e80941Smrg "HELPER_INVOCATION", 101b8e80941Smrg "BASEINSTANCE", 102b8e80941Smrg "DRAWID", 103b8e80941Smrg "WORK_DIM", 104b8e80941Smrg "SUBGROUP_SIZE", 105b8e80941Smrg "SUBGROUP_INVOCATION", 106b8e80941Smrg "SUBGROUP_EQ_MASK", 107b8e80941Smrg "SUBGROUP_GE_MASK", 108b8e80941Smrg "SUBGROUP_GT_MASK", 109b8e80941Smrg "SUBGROUP_LE_MASK", 110b8e80941Smrg "SUBGROUP_LT_MASK", 111848b8605Smrg}; 112848b8605Smrg 113848b8605Smrgconst char *tgsi_texture_names[TGSI_TEXTURE_COUNT] = 114848b8605Smrg{ 115848b8605Smrg "BUFFER", 116848b8605Smrg "1D", 117848b8605Smrg "2D", 118848b8605Smrg "3D", 119848b8605Smrg "CUBE", 120848b8605Smrg "RECT", 121848b8605Smrg "SHADOW1D", 122848b8605Smrg "SHADOW2D", 123848b8605Smrg "SHADOWRECT", 124848b8605Smrg "1D_ARRAY", 125848b8605Smrg "2D_ARRAY", 126848b8605Smrg "SHADOW1D_ARRAY", 127848b8605Smrg "SHADOW2D_ARRAY", 128848b8605Smrg "SHADOWCUBE", 129848b8605Smrg "2D_MSAA", 130848b8605Smrg "2D_ARRAY_MSAA", 131848b8605Smrg "CUBEARRAY", 132848b8605Smrg "SHADOWCUBEARRAY", 133848b8605Smrg "UNKNOWN", 134848b8605Smrg}; 135848b8605Smrg 136848b8605Smrgconst char *tgsi_property_names[TGSI_PROPERTY_COUNT] = 137848b8605Smrg{ 138848b8605Smrg "GS_INPUT_PRIMITIVE", 139848b8605Smrg "GS_OUTPUT_PRIMITIVE", 140848b8605Smrg "GS_MAX_OUTPUT_VERTICES", 141848b8605Smrg "FS_COORD_ORIGIN", 142848b8605Smrg "FS_COORD_PIXEL_CENTER", 143848b8605Smrg "FS_COLOR0_WRITES_ALL_CBUFS", 144848b8605Smrg "FS_DEPTH_LAYOUT", 145848b8605Smrg "VS_PROHIBIT_UCPS", 146848b8605Smrg "GS_INVOCATIONS", 147b8e80941Smrg "VS_WINDOW_SPACE_POSITION", 148b8e80941Smrg "TCS_VERTICES_OUT", 149b8e80941Smrg "TES_PRIM_MODE", 150b8e80941Smrg "TES_SPACING", 151b8e80941Smrg "TES_VERTEX_ORDER_CW", 152b8e80941Smrg "TES_POINT_MODE", 153b8e80941Smrg "NUM_CLIPDIST_ENABLED", 154b8e80941Smrg "NUM_CULLDIST_ENABLED", 155b8e80941Smrg "FS_EARLY_DEPTH_STENCIL", 156b8e80941Smrg "FS_POST_DEPTH_COVERAGE", 157b8e80941Smrg "NEXT_SHADER", 158b8e80941Smrg "CS_FIXED_BLOCK_WIDTH", 159b8e80941Smrg "CS_FIXED_BLOCK_HEIGHT", 160b8e80941Smrg "CS_FIXED_BLOCK_DEPTH", 161b8e80941Smrg "MUL_ZERO_WINS", 162848b8605Smrg}; 163848b8605Smrg 164b8e80941Smrgconst char *tgsi_return_type_names[TGSI_RETURN_TYPE_COUNT] = 165848b8605Smrg{ 166848b8605Smrg "UNORM", 167848b8605Smrg "SNORM", 168848b8605Smrg "SINT", 169848b8605Smrg "UINT", 170848b8605Smrg "FLOAT" 171848b8605Smrg}; 172848b8605Smrg 173848b8605Smrgconst char *tgsi_interpolate_names[TGSI_INTERPOLATE_COUNT] = 174848b8605Smrg{ 175848b8605Smrg "CONSTANT", 176848b8605Smrg "LINEAR", 177848b8605Smrg "PERSPECTIVE", 178848b8605Smrg "COLOR" 179848b8605Smrg}; 180848b8605Smrg 181848b8605Smrgconst char *tgsi_interpolate_locations[TGSI_INTERPOLATE_LOC_COUNT] = 182848b8605Smrg{ 183848b8605Smrg "CENTER", 184848b8605Smrg "CENTROID", 185848b8605Smrg "SAMPLE", 186848b8605Smrg}; 187848b8605Smrg 188b8e80941Smrgconst char *tgsi_invariant_name = "INVARIANT"; 189b8e80941Smrg 190848b8605Smrgconst char *tgsi_primitive_names[PIPE_PRIM_MAX] = 191848b8605Smrg{ 192848b8605Smrg "POINTS", 193848b8605Smrg "LINES", 194848b8605Smrg "LINE_LOOP", 195848b8605Smrg "LINE_STRIP", 196848b8605Smrg "TRIANGLES", 197848b8605Smrg "TRIANGLE_STRIP", 198848b8605Smrg "TRIANGLE_FAN", 199848b8605Smrg "QUADS", 200848b8605Smrg "QUAD_STRIP", 201848b8605Smrg "POLYGON", 202848b8605Smrg "LINES_ADJACENCY", 203848b8605Smrg "LINE_STRIP_ADJACENCY", 204848b8605Smrg "TRIANGLES_ADJACENCY", 205b8e80941Smrg "TRIANGLE_STRIP_ADJACENCY", 206b8e80941Smrg "PATCHES", 207848b8605Smrg}; 208848b8605Smrg 209848b8605Smrgconst char *tgsi_fs_coord_origin_names[2] = 210848b8605Smrg{ 211848b8605Smrg "UPPER_LEFT", 212848b8605Smrg "LOWER_LEFT" 213848b8605Smrg}; 214848b8605Smrg 215848b8605Smrgconst char *tgsi_fs_coord_pixel_center_names[2] = 216848b8605Smrg{ 217848b8605Smrg "HALF_INTEGER", 218848b8605Smrg "INTEGER" 219848b8605Smrg}; 220848b8605Smrg 221b8e80941Smrgconst char *tgsi_immediate_type_names[6] = 222848b8605Smrg{ 223848b8605Smrg "FLT32", 224848b8605Smrg "UINT32", 225b8e80941Smrg "INT32", 226b8e80941Smrg "FLT64", 227b8e80941Smrg "UINT64", 228b8e80941Smrg "INT64", 229b8e80941Smrg}; 230b8e80941Smrg 231b8e80941Smrgconst char *tgsi_memory_names[4] = 232b8e80941Smrg{ 233b8e80941Smrg "COHERENT", 234b8e80941Smrg "RESTRICT", 235b8e80941Smrg "VOLATILE", 236b8e80941Smrg "STREAM_CACHE_POLICY", 237848b8605Smrg}; 238848b8605Smrg 239848b8605Smrg 240b8e80941SmrgUNUSED static inline void 241848b8605Smrgtgsi_strings_check(void) 242848b8605Smrg{ 243b8e80941Smrg STATIC_ASSERT(ARRAY_SIZE(tgsi_semantic_names) == TGSI_SEMANTIC_COUNT); 244b8e80941Smrg STATIC_ASSERT(ARRAY_SIZE(tgsi_texture_names) == TGSI_TEXTURE_COUNT); 245b8e80941Smrg STATIC_ASSERT(ARRAY_SIZE(tgsi_property_names) == TGSI_PROPERTY_COUNT); 246b8e80941Smrg STATIC_ASSERT(ARRAY_SIZE(tgsi_primitive_names) == PIPE_PRIM_MAX); 247b8e80941Smrg STATIC_ASSERT(ARRAY_SIZE(tgsi_interpolate_names) == TGSI_INTERPOLATE_COUNT); 248b8e80941Smrg STATIC_ASSERT(ARRAY_SIZE(tgsi_return_type_names) == TGSI_RETURN_TYPE_COUNT); 249848b8605Smrg (void) tgsi_processor_type_names; 250b8e80941Smrg (void) tgsi_return_type_names; 251848b8605Smrg (void) tgsi_immediate_type_names; 252848b8605Smrg (void) tgsi_fs_coord_origin_names; 253848b8605Smrg (void) tgsi_fs_coord_pixel_center_names; 254848b8605Smrg} 255848b8605Smrg 256848b8605Smrg 257848b8605Smrgconst char * 258848b8605Smrgtgsi_file_name(unsigned file) 259848b8605Smrg{ 260b8e80941Smrg STATIC_ASSERT(ARRAY_SIZE(tgsi_file_names) == TGSI_FILE_COUNT); 261b8e80941Smrg if (file < ARRAY_SIZE(tgsi_file_names)) 262848b8605Smrg return tgsi_file_names[file]; 263848b8605Smrg else 264848b8605Smrg return "invalid file"; 265848b8605Smrg} 266