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