1af69d88dSmrg/************************************************************************** 2af69d88dSmrg * 3af69d88dSmrg * Copyright 2007-2008 VMware, Inc. 4af69d88dSmrg * Copyright 2012 VMware, Inc. 5af69d88dSmrg * All Rights Reserved. 6af69d88dSmrg * 7af69d88dSmrg * Permission is hereby granted, free of charge, to any person obtaining a 8af69d88dSmrg * copy of this software and associated documentation files (the 9af69d88dSmrg * "Software"), to deal in the Software without restriction, including 10af69d88dSmrg * without limitation the rights to use, copy, modify, merge, publish, 11af69d88dSmrg * distribute, sub license, and/or sell copies of the Software, and to 12af69d88dSmrg * permit persons to whom the Software is furnished to do so, subject to 13af69d88dSmrg * the following conditions: 14af69d88dSmrg * 15af69d88dSmrg * The above copyright notice and this permission notice (including the 16af69d88dSmrg * next paragraph) shall be included in all copies or substantial portions 17af69d88dSmrg * of the Software. 18af69d88dSmrg * 19af69d88dSmrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 20af69d88dSmrg * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 21af69d88dSmrg * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 22af69d88dSmrg * IN NO EVENT SHALL THE AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR 23af69d88dSmrg * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 24af69d88dSmrg * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 25af69d88dSmrg * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 26af69d88dSmrg * 27af69d88dSmrg **************************************************************************/ 28af69d88dSmrg 29af69d88dSmrg 30af69d88dSmrg#include "pipe/p_compiler.h" 31af69d88dSmrg#include "util/u_memory.h" 32af69d88dSmrg#include "tgsi_strings.h" 33af69d88dSmrg 34af69d88dSmrg 3501e04c3fSmrgconst char *tgsi_processor_type_names[6] = 36af69d88dSmrg{ 37af69d88dSmrg "VERT", 3801e04c3fSmrg "FRAG", 39af69d88dSmrg "GEOM", 4001e04c3fSmrg "TESS_CTRL", 4101e04c3fSmrg "TESS_EVAL", 42af69d88dSmrg "COMP" 43af69d88dSmrg}; 44af69d88dSmrg 45af69d88dSmrgstatic const char *tgsi_file_names[] = 46af69d88dSmrg{ 47af69d88dSmrg "NULL", 48af69d88dSmrg "CONST", 49af69d88dSmrg "IN", 50af69d88dSmrg "OUT", 51af69d88dSmrg "TEMP", 52af69d88dSmrg "SAMP", 53af69d88dSmrg "ADDR", 54af69d88dSmrg "IMM", 55af69d88dSmrg "SV", 5601e04c3fSmrg "IMAGE", 5701e04c3fSmrg "SVIEW", 5801e04c3fSmrg "BUFFER", 5901e04c3fSmrg "MEMORY", 6001e04c3fSmrg "CONSTBUF", 6101e04c3fSmrg "HWATOMIC", 62af69d88dSmrg}; 63af69d88dSmrg 64af69d88dSmrgconst char *tgsi_semantic_names[TGSI_SEMANTIC_COUNT] = 65af69d88dSmrg{ 66af69d88dSmrg "POSITION", 67af69d88dSmrg "COLOR", 68af69d88dSmrg "BCOLOR", 69af69d88dSmrg "FOG", 70af69d88dSmrg "PSIZE", 71af69d88dSmrg "GENERIC", 72af69d88dSmrg "NORMAL", 73af69d88dSmrg "FACE", 74af69d88dSmrg "EDGEFLAG", 75af69d88dSmrg "PRIM_ID", 76af69d88dSmrg "INSTANCEID", 77af69d88dSmrg "VERTEXID", 78af69d88dSmrg "STENCIL", 79af69d88dSmrg "CLIPDIST", 80af69d88dSmrg "CLIPVERTEX", 81af69d88dSmrg "GRID_SIZE", 82af69d88dSmrg "BLOCK_ID", 83af69d88dSmrg "BLOCK_SIZE", 84af69d88dSmrg "THREAD_ID", 85af69d88dSmrg "TEXCOORD", 86af69d88dSmrg "PCOORD", 87af69d88dSmrg "VIEWPORT_INDEX", 88af69d88dSmrg "LAYER", 89af69d88dSmrg "SAMPLEID", 90af69d88dSmrg "SAMPLEPOS", 91af69d88dSmrg "SAMPLEMASK", 92af69d88dSmrg "INVOCATIONID", 9301e04c3fSmrg "VERTEXID_NOBASE", 9401e04c3fSmrg "BASEVERTEX", 9501e04c3fSmrg "PATCH", 9601e04c3fSmrg "TESSCOORD", 9701e04c3fSmrg "TESSOUTER", 9801e04c3fSmrg "TESSINNER", 9901e04c3fSmrg "VERTICESIN", 10001e04c3fSmrg "HELPER_INVOCATION", 10101e04c3fSmrg "BASEINSTANCE", 10201e04c3fSmrg "DRAWID", 10301e04c3fSmrg "WORK_DIM", 10401e04c3fSmrg "SUBGROUP_SIZE", 10501e04c3fSmrg "SUBGROUP_INVOCATION", 10601e04c3fSmrg "SUBGROUP_EQ_MASK", 10701e04c3fSmrg "SUBGROUP_GE_MASK", 10801e04c3fSmrg "SUBGROUP_GT_MASK", 10901e04c3fSmrg "SUBGROUP_LE_MASK", 11001e04c3fSmrg "SUBGROUP_LT_MASK", 1117ec681f3Smrg "CS_USER_DATA_AMD", 1127ec681f3Smrg "VIEWPORT_MASK", 113af69d88dSmrg}; 114af69d88dSmrg 115af69d88dSmrgconst char *tgsi_texture_names[TGSI_TEXTURE_COUNT] = 116af69d88dSmrg{ 117af69d88dSmrg "BUFFER", 118af69d88dSmrg "1D", 119af69d88dSmrg "2D", 120af69d88dSmrg "3D", 121af69d88dSmrg "CUBE", 122af69d88dSmrg "RECT", 123af69d88dSmrg "SHADOW1D", 124af69d88dSmrg "SHADOW2D", 125af69d88dSmrg "SHADOWRECT", 126af69d88dSmrg "1D_ARRAY", 127af69d88dSmrg "2D_ARRAY", 128af69d88dSmrg "SHADOW1D_ARRAY", 129af69d88dSmrg "SHADOW2D_ARRAY", 130af69d88dSmrg "SHADOWCUBE", 131af69d88dSmrg "2D_MSAA", 132af69d88dSmrg "2D_ARRAY_MSAA", 133af69d88dSmrg "CUBEARRAY", 134af69d88dSmrg "SHADOWCUBEARRAY", 135af69d88dSmrg "UNKNOWN", 136af69d88dSmrg}; 137af69d88dSmrg 138af69d88dSmrgconst char *tgsi_property_names[TGSI_PROPERTY_COUNT] = 139af69d88dSmrg{ 140af69d88dSmrg "GS_INPUT_PRIMITIVE", 141af69d88dSmrg "GS_OUTPUT_PRIMITIVE", 142af69d88dSmrg "GS_MAX_OUTPUT_VERTICES", 143af69d88dSmrg "FS_COORD_ORIGIN", 144af69d88dSmrg "FS_COORD_PIXEL_CENTER", 145af69d88dSmrg "FS_COLOR0_WRITES_ALL_CBUFS", 146af69d88dSmrg "FS_DEPTH_LAYOUT", 147af69d88dSmrg "VS_PROHIBIT_UCPS", 148af69d88dSmrg "GS_INVOCATIONS", 14901e04c3fSmrg "VS_WINDOW_SPACE_POSITION", 15001e04c3fSmrg "TCS_VERTICES_OUT", 15101e04c3fSmrg "TES_PRIM_MODE", 15201e04c3fSmrg "TES_SPACING", 15301e04c3fSmrg "TES_VERTEX_ORDER_CW", 15401e04c3fSmrg "TES_POINT_MODE", 15501e04c3fSmrg "NUM_CLIPDIST_ENABLED", 15601e04c3fSmrg "NUM_CULLDIST_ENABLED", 15701e04c3fSmrg "FS_EARLY_DEPTH_STENCIL", 15801e04c3fSmrg "FS_POST_DEPTH_COVERAGE", 15901e04c3fSmrg "NEXT_SHADER", 16001e04c3fSmrg "CS_FIXED_BLOCK_WIDTH", 16101e04c3fSmrg "CS_FIXED_BLOCK_HEIGHT", 16201e04c3fSmrg "CS_FIXED_BLOCK_DEPTH", 16301e04c3fSmrg "MUL_ZERO_WINS", 1647ec681f3Smrg "VS_BLIT_SGPRS_AMD", 1657ec681f3Smrg "CS_USER_DATA_COMPONENTS_AMD", 1667ec681f3Smrg "LAYER_VIEWPORT_RELATIVE", 1677ec681f3Smrg "FS_BLEND_EQUATION_ADVANCED", 168af69d88dSmrg}; 169af69d88dSmrg 17001e04c3fSmrgconst char *tgsi_return_type_names[TGSI_RETURN_TYPE_COUNT] = 171af69d88dSmrg{ 172af69d88dSmrg "UNORM", 173af69d88dSmrg "SNORM", 174af69d88dSmrg "SINT", 175af69d88dSmrg "UINT", 176af69d88dSmrg "FLOAT" 177af69d88dSmrg}; 178af69d88dSmrg 179af69d88dSmrgconst char *tgsi_interpolate_names[TGSI_INTERPOLATE_COUNT] = 180af69d88dSmrg{ 181af69d88dSmrg "CONSTANT", 182af69d88dSmrg "LINEAR", 183af69d88dSmrg "PERSPECTIVE", 184af69d88dSmrg "COLOR" 185af69d88dSmrg}; 186af69d88dSmrg 187af69d88dSmrgconst char *tgsi_interpolate_locations[TGSI_INTERPOLATE_LOC_COUNT] = 188af69d88dSmrg{ 189af69d88dSmrg "CENTER", 190af69d88dSmrg "CENTROID", 191af69d88dSmrg "SAMPLE", 192af69d88dSmrg}; 193af69d88dSmrg 19401e04c3fSmrgconst char *tgsi_invariant_name = "INVARIANT"; 19501e04c3fSmrg 196af69d88dSmrgconst char *tgsi_primitive_names[PIPE_PRIM_MAX] = 197af69d88dSmrg{ 198af69d88dSmrg "POINTS", 199af69d88dSmrg "LINES", 200af69d88dSmrg "LINE_LOOP", 201af69d88dSmrg "LINE_STRIP", 202af69d88dSmrg "TRIANGLES", 203af69d88dSmrg "TRIANGLE_STRIP", 204af69d88dSmrg "TRIANGLE_FAN", 205af69d88dSmrg "QUADS", 206af69d88dSmrg "QUAD_STRIP", 207af69d88dSmrg "POLYGON", 208af69d88dSmrg "LINES_ADJACENCY", 209af69d88dSmrg "LINE_STRIP_ADJACENCY", 210af69d88dSmrg "TRIANGLES_ADJACENCY", 21101e04c3fSmrg "TRIANGLE_STRIP_ADJACENCY", 21201e04c3fSmrg "PATCHES", 213af69d88dSmrg}; 214af69d88dSmrg 215af69d88dSmrgconst char *tgsi_fs_coord_origin_names[2] = 216af69d88dSmrg{ 217af69d88dSmrg "UPPER_LEFT", 218af69d88dSmrg "LOWER_LEFT" 219af69d88dSmrg}; 220af69d88dSmrg 221af69d88dSmrgconst char *tgsi_fs_coord_pixel_center_names[2] = 222af69d88dSmrg{ 223af69d88dSmrg "HALF_INTEGER", 224af69d88dSmrg "INTEGER" 225af69d88dSmrg}; 226af69d88dSmrg 22701e04c3fSmrgconst char *tgsi_immediate_type_names[6] = 228af69d88dSmrg{ 229af69d88dSmrg "FLT32", 230af69d88dSmrg "UINT32", 23101e04c3fSmrg "INT32", 23201e04c3fSmrg "FLT64", 23301e04c3fSmrg "UINT64", 23401e04c3fSmrg "INT64", 23501e04c3fSmrg}; 23601e04c3fSmrg 23701e04c3fSmrgconst char *tgsi_memory_names[4] = 23801e04c3fSmrg{ 23901e04c3fSmrg "COHERENT", 24001e04c3fSmrg "RESTRICT", 24101e04c3fSmrg "VOLATILE", 24201e04c3fSmrg "STREAM_CACHE_POLICY", 243af69d88dSmrg}; 244af69d88dSmrg 245af69d88dSmrg 246361fc4cbSmayaUNUSED static inline void 247af69d88dSmrgtgsi_strings_check(void) 248af69d88dSmrg{ 24901e04c3fSmrg STATIC_ASSERT(ARRAY_SIZE(tgsi_semantic_names) == TGSI_SEMANTIC_COUNT); 25001e04c3fSmrg STATIC_ASSERT(ARRAY_SIZE(tgsi_texture_names) == TGSI_TEXTURE_COUNT); 25101e04c3fSmrg STATIC_ASSERT(ARRAY_SIZE(tgsi_property_names) == TGSI_PROPERTY_COUNT); 25201e04c3fSmrg STATIC_ASSERT(ARRAY_SIZE(tgsi_primitive_names) == PIPE_PRIM_MAX); 25301e04c3fSmrg STATIC_ASSERT(ARRAY_SIZE(tgsi_interpolate_names) == TGSI_INTERPOLATE_COUNT); 25401e04c3fSmrg STATIC_ASSERT(ARRAY_SIZE(tgsi_return_type_names) == TGSI_RETURN_TYPE_COUNT); 255af69d88dSmrg (void) tgsi_processor_type_names; 25601e04c3fSmrg (void) tgsi_return_type_names; 257af69d88dSmrg (void) tgsi_immediate_type_names; 258af69d88dSmrg (void) tgsi_fs_coord_origin_names; 259af69d88dSmrg (void) tgsi_fs_coord_pixel_center_names; 260af69d88dSmrg} 261af69d88dSmrg 262af69d88dSmrg 263af69d88dSmrgconst char * 264af69d88dSmrgtgsi_file_name(unsigned file) 265af69d88dSmrg{ 26601e04c3fSmrg STATIC_ASSERT(ARRAY_SIZE(tgsi_file_names) == TGSI_FILE_COUNT); 26701e04c3fSmrg if (file < ARRAY_SIZE(tgsi_file_names)) 268af69d88dSmrg return tgsi_file_names[file]; 269af69d88dSmrg else 270af69d88dSmrg return "invalid file"; 271af69d88dSmrg} 272