/**************************************************************************
*
* Copyright 2007-2008 VMware, Inc.
* Copyright 2012 VMware, Inc.
* All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sub license, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
**************************************************************************/
#include "pipe/p_compiler.h"
#include "util/u_memory.h"
#include "tgsi_strings.h"
const char *tgsi_processor_type_names[6] =
{
"VERT",
"FRAG",
"GEOM",
"TESS_CTRL",
"TESS_EVAL",
"COMP"
};
static const char *tgsi_file_names[] =
{
"NULL",
"CONST",
"IN",
"OUT",
"TEMP",
"SAMP",
"ADDR",
"IMM",
"SV",
"IMAGE",
"SVIEW",
"BUFFER",
"MEMORY",
"CONSTBUF",
"HWATOMIC",
};
const char *tgsi_semantic_names[TGSI_SEMANTIC_COUNT] =
{
"POSITION",
"COLOR",
"BCOLOR",
"FOG",
"PSIZE",
"GENERIC",
"NORMAL",
"FACE",
"EDGEFLAG",
"PRIM_ID",
"INSTANCEID",
"VERTEXID",
"STENCIL",
"CLIPDIST",
"CLIPVERTEX",
"GRID_SIZE",
"BLOCK_ID",
"BLOCK_SIZE",
"THREAD_ID",
"TEXCOORD",
"PCOORD",
"VIEWPORT_INDEX",
"LAYER",
"SAMPLEID",
"SAMPLEPOS",
"SAMPLEMASK",
"INVOCATIONID",
"VERTEXID_NOBASE",
"BASEVERTEX",
"PATCH",
"TESSCOORD",
"TESSOUTER",
"TESSINNER",
"VERTICESIN",
"HELPER_INVOCATION",
"BASEINSTANCE",
"DRAWID",
"WORK_DIM",
"SUBGROUP_SIZE",
"SUBGROUP_INVOCATION",
"SUBGROUP_EQ_MASK",
"SUBGROUP_GE_MASK",
"SUBGROUP_GT_MASK",
"SUBGROUP_LE_MASK",
"SUBGROUP_LT_MASK",
};
const char *tgsi_texture_names[TGSI_TEXTURE_COUNT] =
{
"BUFFER",
"1D",
"2D",
"3D",
"CUBE",
"RECT",
"SHADOW1D",
"SHADOW2D",
"SHADOWRECT",
"1D_ARRAY",
"2D_ARRAY",
"SHADOW1D_ARRAY",
"SHADOW2D_ARRAY",
"SHADOWCUBE",
"2D_MSAA",
"2D_ARRAY_MSAA",
"CUBEARRAY",
"SHADOWCUBEARRAY",
"UNKNOWN",
};
const char *tgsi_property_names[TGSI_PROPERTY_COUNT] =
{
"GS_INPUT_PRIMITIVE",
"GS_OUTPUT_PRIMITIVE",
"GS_MAX_OUTPUT_VERTICES",
"FS_COORD_ORIGIN",
"FS_COORD_PIXEL_CENTER",
"FS_COLOR0_WRITES_ALL_CBUFS",
"FS_DEPTH_LAYOUT",
"VS_PROHIBIT_UCPS",
"GS_INVOCATIONS",
"VS_WINDOW_SPACE_POSITION",
"TCS_VERTICES_OUT",
"TES_PRIM_MODE",
"TES_SPACING",
"TES_VERTEX_ORDER_CW",
"TES_POINT_MODE",
"NUM_CLIPDIST_ENABLED",
"NUM_CULLDIST_ENABLED",
"FS_EARLY_DEPTH_STENCIL",
"FS_POST_DEPTH_COVERAGE",
"NEXT_SHADER",
"CS_FIXED_BLOCK_WIDTH",
"CS_FIXED_BLOCK_HEIGHT",
"CS_FIXED_BLOCK_DEPTH",
"MUL_ZERO_WINS",
};
const char *tgsi_return_type_names[TGSI_RETURN_TYPE_COUNT] =
{
"UNORM",
"SNORM",
"SINT",
"UINT",
"FLOAT"
};
const char *tgsi_interpolate_names[TGSI_INTERPOLATE_COUNT] =
{
"CONSTANT",
"LINEAR",
"PERSPECTIVE",
"COLOR"
};
const char *tgsi_interpolate_locations[TGSI_INTERPOLATE_LOC_COUNT] =
{
"CENTER",
"CENTROID",
"SAMPLE",
};
const char *tgsi_primitive_names[PIPE_PRIM_MAX] =
{
"POINTS",
"LINES",
"LINE_LOOP",
"LINE_STRIP",
"TRIANGLES",
"TRIANGLE_STRIP",
"TRIANGLE_FAN",
"QUADS",
"QUAD_STRIP",
"POLYGON",
"LINES_ADJACENCY",
"LINE_STRIP_ADJACENCY",
"TRIANGLES_ADJACENCY",
"TRIANGLE_STRIP_ADJACENCY",
"PATCHES",
};
const char *tgsi_fs_coord_origin_names[2] =
{
"UPPER_LEFT",
"LOWER_LEFT"
};
const char *tgsi_fs_coord_pixel_center_names[2] =
{
"HALF_INTEGER",
"INTEGER"
};
const char *tgsi_immediate_type_names[6] =
{
"FLT32",
"UINT32",
"INT32",
"FLT64",
"UINT64",
"INT64",
};
const char *tgsi_memory_names[3] =
{
"COHERENT",
"RESTRICT",
"VOLATILE",
};
static inline void
tgsi_strings_check(void)
{
STATIC_ASSERT(ARRAY_SIZE(tgsi_semantic_names) == TGSI_SEMANTIC_COUNT);
STATIC_ASSERT(ARRAY_SIZE(tgsi_texture_names) == TGSI_TEXTURE_COUNT);
STATIC_ASSERT(ARRAY_SIZE(tgsi_property_names) == TGSI_PROPERTY_COUNT);
STATIC_ASSERT(ARRAY_SIZE(tgsi_primitive_names) == PIPE_PRIM_MAX);
STATIC_ASSERT(ARRAY_SIZE(tgsi_interpolate_names) == TGSI_INTERPOLATE_COUNT);
STATIC_ASSERT(ARRAY_SIZE(tgsi_return_type_names) == TGSI_RETURN_TYPE_COUNT);
(void) tgsi_processor_type_names;
(void) tgsi_return_type_names;
(void) tgsi_immediate_type_names;
(void) tgsi_fs_coord_origin_names;
(void) tgsi_fs_coord_pixel_center_names;
}
const char *
tgsi_file_name(unsigned file)
{
STATIC_ASSERT(ARRAY_SIZE(tgsi_file_names) == TGSI_FILE_COUNT);
if (file < ARRAY_SIZE(tgsi_file_names))
return tgsi_file_names[file];
else
return "invalid file";
}