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