101e04c3fSmrg/* 201e04c3fSmrg * Mesa 3-D graphics library 301e04c3fSmrg * 401e04c3fSmrg * Copyright © 2015 Red Hat 501e04c3fSmrg * 601e04c3fSmrg * Permission is hereby granted, free of charge, to any person obtaining a 701e04c3fSmrg * copy of this software and associated documentation files (the "Software"), 801e04c3fSmrg * to deal in the Software without restriction, including without limitation 901e04c3fSmrg * the rights to use, copy, modify, merge, publish, distribute, sublicense, 1001e04c3fSmrg * and/or sell copies of the Software, and to permit persons to whom the 1101e04c3fSmrg * Software is furnished to do so, subject to the following conditions: 1201e04c3fSmrg * 1301e04c3fSmrg * The above copyright notice and this permission notice (including the next 1401e04c3fSmrg * paragraph) shall be included in all copies or substantial portions of the 1501e04c3fSmrg * Software. 1601e04c3fSmrg * 1701e04c3fSmrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1801e04c3fSmrg * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1901e04c3fSmrg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 2001e04c3fSmrg * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 2101e04c3fSmrg * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 2201e04c3fSmrg * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 2301e04c3fSmrg * IN THE SOFTWARE. 2401e04c3fSmrg * 2501e04c3fSmrg * Authors: 2601e04c3fSmrg * Rob Clark <robclark@freedesktop.org> 2701e04c3fSmrg */ 2801e04c3fSmrg 2901e04c3fSmrg#include "shader_enums.h" 3001e04c3fSmrg#include "util/macros.h" 3101e04c3fSmrg#include "mesa/main/config.h" 3201e04c3fSmrg 3301e04c3fSmrg#define ENUM(x) [x] = #x 3401e04c3fSmrg#define NAME(val) ((((val) < ARRAY_SIZE(names)) && names[(val)]) ? names[(val)] : "UNKNOWN") 3501e04c3fSmrg 3601e04c3fSmrgconst char * 3701e04c3fSmrggl_shader_stage_name(gl_shader_stage stage) 3801e04c3fSmrg{ 3901e04c3fSmrg static const char *names[] = { 4001e04c3fSmrg ENUM(MESA_SHADER_VERTEX), 4101e04c3fSmrg ENUM(MESA_SHADER_TESS_CTRL), 4201e04c3fSmrg ENUM(MESA_SHADER_TESS_EVAL), 4301e04c3fSmrg ENUM(MESA_SHADER_GEOMETRY), 4401e04c3fSmrg ENUM(MESA_SHADER_FRAGMENT), 4501e04c3fSmrg ENUM(MESA_SHADER_COMPUTE), 467ec681f3Smrg ENUM(MESA_SHADER_TASK), 477ec681f3Smrg ENUM(MESA_SHADER_MESH), 487ec681f3Smrg ENUM(MESA_SHADER_RAYGEN), 497ec681f3Smrg ENUM(MESA_SHADER_ANY_HIT), 507ec681f3Smrg ENUM(MESA_SHADER_CLOSEST_HIT), 517ec681f3Smrg ENUM(MESA_SHADER_MISS), 527ec681f3Smrg ENUM(MESA_SHADER_INTERSECTION), 537ec681f3Smrg ENUM(MESA_SHADER_CALLABLE), 54ed98bd31Smaya ENUM(MESA_SHADER_KERNEL), 5501e04c3fSmrg }; 56ed98bd31Smaya STATIC_ASSERT(ARRAY_SIZE(names) == MESA_ALL_SHADER_STAGES); 5701e04c3fSmrg return NAME(stage); 5801e04c3fSmrg} 5901e04c3fSmrg 6001e04c3fSmrg/** 6101e04c3fSmrg * Translate a gl_shader_stage to a short shader stage name for debug 6201e04c3fSmrg * printouts and error messages. 6301e04c3fSmrg */ 6401e04c3fSmrgconst char * 6501e04c3fSmrg_mesa_shader_stage_to_string(unsigned stage) 6601e04c3fSmrg{ 6701e04c3fSmrg switch (stage) { 6801e04c3fSmrg case MESA_SHADER_VERTEX: return "vertex"; 6901e04c3fSmrg case MESA_SHADER_FRAGMENT: return "fragment"; 7001e04c3fSmrg case MESA_SHADER_GEOMETRY: return "geometry"; 7101e04c3fSmrg case MESA_SHADER_COMPUTE: return "compute"; 72ed98bd31Smaya case MESA_SHADER_KERNEL: return "kernel"; 7301e04c3fSmrg case MESA_SHADER_TESS_CTRL: return "tessellation control"; 7401e04c3fSmrg case MESA_SHADER_TESS_EVAL: return "tessellation evaluation"; 757ec681f3Smrg case MESA_SHADER_TASK: return "task"; 767ec681f3Smrg case MESA_SHADER_MESH: return "mesh"; 777ec681f3Smrg case MESA_SHADER_RAYGEN: return "raygen"; 787ec681f3Smrg case MESA_SHADER_ANY_HIT: return "any hit"; 797ec681f3Smrg case MESA_SHADER_CLOSEST_HIT: return "closest hit"; 807ec681f3Smrg case MESA_SHADER_MISS: return "miss"; 817ec681f3Smrg case MESA_SHADER_INTERSECTION: return "intersection"; 827ec681f3Smrg case MESA_SHADER_CALLABLE: return "callable"; 8301e04c3fSmrg } 8401e04c3fSmrg 8501e04c3fSmrg unreachable("Unknown shader stage."); 8601e04c3fSmrg} 8701e04c3fSmrg 8801e04c3fSmrg/** 8901e04c3fSmrg * Translate a gl_shader_stage to a shader stage abbreviation (VS, GS, FS) 9001e04c3fSmrg * for debug printouts and error messages. 9101e04c3fSmrg */ 9201e04c3fSmrgconst char * 9301e04c3fSmrg_mesa_shader_stage_to_abbrev(unsigned stage) 9401e04c3fSmrg{ 9501e04c3fSmrg switch (stage) { 9601e04c3fSmrg case MESA_SHADER_VERTEX: return "VS"; 9701e04c3fSmrg case MESA_SHADER_FRAGMENT: return "FS"; 9801e04c3fSmrg case MESA_SHADER_GEOMETRY: return "GS"; 9901e04c3fSmrg case MESA_SHADER_COMPUTE: return "CS"; 100ed98bd31Smaya case MESA_SHADER_KERNEL: return "CL"; 10101e04c3fSmrg case MESA_SHADER_TESS_CTRL: return "TCS"; 10201e04c3fSmrg case MESA_SHADER_TESS_EVAL: return "TES"; 1037ec681f3Smrg case MESA_SHADER_TASK: return "TASK"; 1047ec681f3Smrg case MESA_SHADER_MESH: return "MESH"; 1057ec681f3Smrg case MESA_SHADER_RAYGEN: return "RGEN"; 1067ec681f3Smrg case MESA_SHADER_ANY_HIT: return "RAHIT"; 1077ec681f3Smrg case MESA_SHADER_CLOSEST_HIT: return "RCHIT"; 1087ec681f3Smrg case MESA_SHADER_MISS: return "RMISS"; 1097ec681f3Smrg case MESA_SHADER_INTERSECTION: return "RINT"; 1107ec681f3Smrg case MESA_SHADER_CALLABLE: return "RCALL"; 11101e04c3fSmrg } 11201e04c3fSmrg 11301e04c3fSmrg unreachable("Unknown shader stage."); 11401e04c3fSmrg} 11501e04c3fSmrg 11601e04c3fSmrgconst char * 11701e04c3fSmrggl_vert_attrib_name(gl_vert_attrib attrib) 11801e04c3fSmrg{ 11901e04c3fSmrg static const char *names[] = { 12001e04c3fSmrg ENUM(VERT_ATTRIB_POS), 12101e04c3fSmrg ENUM(VERT_ATTRIB_NORMAL), 12201e04c3fSmrg ENUM(VERT_ATTRIB_COLOR0), 12301e04c3fSmrg ENUM(VERT_ATTRIB_COLOR1), 12401e04c3fSmrg ENUM(VERT_ATTRIB_FOG), 12501e04c3fSmrg ENUM(VERT_ATTRIB_COLOR_INDEX), 12601e04c3fSmrg ENUM(VERT_ATTRIB_TEX0), 12701e04c3fSmrg ENUM(VERT_ATTRIB_TEX1), 12801e04c3fSmrg ENUM(VERT_ATTRIB_TEX2), 12901e04c3fSmrg ENUM(VERT_ATTRIB_TEX3), 13001e04c3fSmrg ENUM(VERT_ATTRIB_TEX4), 13101e04c3fSmrg ENUM(VERT_ATTRIB_TEX5), 13201e04c3fSmrg ENUM(VERT_ATTRIB_TEX6), 13301e04c3fSmrg ENUM(VERT_ATTRIB_TEX7), 13401e04c3fSmrg ENUM(VERT_ATTRIB_POINT_SIZE), 13501e04c3fSmrg ENUM(VERT_ATTRIB_GENERIC0), 13601e04c3fSmrg ENUM(VERT_ATTRIB_GENERIC1), 13701e04c3fSmrg ENUM(VERT_ATTRIB_GENERIC2), 13801e04c3fSmrg ENUM(VERT_ATTRIB_GENERIC3), 13901e04c3fSmrg ENUM(VERT_ATTRIB_GENERIC4), 14001e04c3fSmrg ENUM(VERT_ATTRIB_GENERIC5), 14101e04c3fSmrg ENUM(VERT_ATTRIB_GENERIC6), 14201e04c3fSmrg ENUM(VERT_ATTRIB_GENERIC7), 14301e04c3fSmrg ENUM(VERT_ATTRIB_GENERIC8), 14401e04c3fSmrg ENUM(VERT_ATTRIB_GENERIC9), 14501e04c3fSmrg ENUM(VERT_ATTRIB_GENERIC10), 14601e04c3fSmrg ENUM(VERT_ATTRIB_GENERIC11), 14701e04c3fSmrg ENUM(VERT_ATTRIB_GENERIC12), 14801e04c3fSmrg ENUM(VERT_ATTRIB_GENERIC13), 14901e04c3fSmrg ENUM(VERT_ATTRIB_GENERIC14), 15001e04c3fSmrg ENUM(VERT_ATTRIB_GENERIC15), 1517ec681f3Smrg ENUM(VERT_ATTRIB_EDGEFLAG), 15201e04c3fSmrg }; 15301e04c3fSmrg STATIC_ASSERT(ARRAY_SIZE(names) == VERT_ATTRIB_MAX); 15401e04c3fSmrg return NAME(attrib); 15501e04c3fSmrg} 15601e04c3fSmrg 15701e04c3fSmrgconst char * 1587ec681f3Smrggl_varying_slot_name_for_stage(gl_varying_slot slot, gl_shader_stage stage) 15901e04c3fSmrg{ 1607ec681f3Smrg if (stage != MESA_SHADER_FRAGMENT && slot == VARYING_SLOT_PRIMITIVE_SHADING_RATE) 1617ec681f3Smrg return "VARYING_SLOT_PRIMITIVE_SHADING_RATE"; 1627ec681f3Smrg 1637ec681f3Smrg switch (stage) { 1647ec681f3Smrg case MESA_SHADER_MESH: 1657ec681f3Smrg switch (slot) { 1667ec681f3Smrg case VARYING_SLOT_PRIMITIVE_COUNT: return "VARYING_SLOT_PRIMITIVE_COUNT"; 1677ec681f3Smrg case VARYING_SLOT_PRIMITIVE_INDICES: return "VARYING_SLOT_PRIMITIVE_INDICES"; 1687ec681f3Smrg default: 1697ec681f3Smrg /* Not an overlapping value. */ 1707ec681f3Smrg break; 1717ec681f3Smrg } 1727ec681f3Smrg break; 1737ec681f3Smrg 1747ec681f3Smrg case MESA_SHADER_TASK: 1757ec681f3Smrg switch (slot) { 1767ec681f3Smrg case VARYING_SLOT_TASK_COUNT: return "VARYING_SLOT_TASK_COUNT"; 1777ec681f3Smrg default: 1787ec681f3Smrg /* Not an overlapping value. */ 1797ec681f3Smrg break; 1807ec681f3Smrg } 1817ec681f3Smrg break; 1827ec681f3Smrg 1837ec681f3Smrg default: 1847ec681f3Smrg break; 1857ec681f3Smrg } 1867ec681f3Smrg 18701e04c3fSmrg static const char *names[] = { 18801e04c3fSmrg ENUM(VARYING_SLOT_POS), 18901e04c3fSmrg ENUM(VARYING_SLOT_COL0), 19001e04c3fSmrg ENUM(VARYING_SLOT_COL1), 19101e04c3fSmrg ENUM(VARYING_SLOT_FOGC), 19201e04c3fSmrg ENUM(VARYING_SLOT_TEX0), 19301e04c3fSmrg ENUM(VARYING_SLOT_TEX1), 19401e04c3fSmrg ENUM(VARYING_SLOT_TEX2), 19501e04c3fSmrg ENUM(VARYING_SLOT_TEX3), 19601e04c3fSmrg ENUM(VARYING_SLOT_TEX4), 19701e04c3fSmrg ENUM(VARYING_SLOT_TEX5), 19801e04c3fSmrg ENUM(VARYING_SLOT_TEX6), 19901e04c3fSmrg ENUM(VARYING_SLOT_TEX7), 20001e04c3fSmrg ENUM(VARYING_SLOT_PSIZ), 20101e04c3fSmrg ENUM(VARYING_SLOT_BFC0), 20201e04c3fSmrg ENUM(VARYING_SLOT_BFC1), 20301e04c3fSmrg ENUM(VARYING_SLOT_EDGE), 20401e04c3fSmrg ENUM(VARYING_SLOT_CLIP_VERTEX), 20501e04c3fSmrg ENUM(VARYING_SLOT_CLIP_DIST0), 20601e04c3fSmrg ENUM(VARYING_SLOT_CLIP_DIST1), 20701e04c3fSmrg ENUM(VARYING_SLOT_CULL_DIST0), 20801e04c3fSmrg ENUM(VARYING_SLOT_CULL_DIST1), 20901e04c3fSmrg ENUM(VARYING_SLOT_PRIMITIVE_ID), 21001e04c3fSmrg ENUM(VARYING_SLOT_LAYER), 21101e04c3fSmrg ENUM(VARYING_SLOT_VIEWPORT), 21201e04c3fSmrg ENUM(VARYING_SLOT_FACE), 21301e04c3fSmrg ENUM(VARYING_SLOT_PNTC), 21401e04c3fSmrg ENUM(VARYING_SLOT_TESS_LEVEL_OUTER), 21501e04c3fSmrg ENUM(VARYING_SLOT_TESS_LEVEL_INNER), 21601e04c3fSmrg ENUM(VARYING_SLOT_BOUNDING_BOX0), 21701e04c3fSmrg ENUM(VARYING_SLOT_BOUNDING_BOX1), 21801e04c3fSmrg ENUM(VARYING_SLOT_VIEW_INDEX), 2197ec681f3Smrg ENUM(VARYING_SLOT_VIEWPORT_MASK), 22001e04c3fSmrg ENUM(VARYING_SLOT_VAR0), 22101e04c3fSmrg ENUM(VARYING_SLOT_VAR1), 22201e04c3fSmrg ENUM(VARYING_SLOT_VAR2), 22301e04c3fSmrg ENUM(VARYING_SLOT_VAR3), 22401e04c3fSmrg ENUM(VARYING_SLOT_VAR4), 22501e04c3fSmrg ENUM(VARYING_SLOT_VAR5), 22601e04c3fSmrg ENUM(VARYING_SLOT_VAR6), 22701e04c3fSmrg ENUM(VARYING_SLOT_VAR7), 22801e04c3fSmrg ENUM(VARYING_SLOT_VAR8), 22901e04c3fSmrg ENUM(VARYING_SLOT_VAR9), 23001e04c3fSmrg ENUM(VARYING_SLOT_VAR10), 23101e04c3fSmrg ENUM(VARYING_SLOT_VAR11), 23201e04c3fSmrg ENUM(VARYING_SLOT_VAR12), 23301e04c3fSmrg ENUM(VARYING_SLOT_VAR13), 23401e04c3fSmrg ENUM(VARYING_SLOT_VAR14), 23501e04c3fSmrg ENUM(VARYING_SLOT_VAR15), 23601e04c3fSmrg ENUM(VARYING_SLOT_VAR16), 23701e04c3fSmrg ENUM(VARYING_SLOT_VAR17), 23801e04c3fSmrg ENUM(VARYING_SLOT_VAR18), 23901e04c3fSmrg ENUM(VARYING_SLOT_VAR19), 24001e04c3fSmrg ENUM(VARYING_SLOT_VAR20), 24101e04c3fSmrg ENUM(VARYING_SLOT_VAR21), 24201e04c3fSmrg ENUM(VARYING_SLOT_VAR22), 24301e04c3fSmrg ENUM(VARYING_SLOT_VAR23), 24401e04c3fSmrg ENUM(VARYING_SLOT_VAR24), 24501e04c3fSmrg ENUM(VARYING_SLOT_VAR25), 24601e04c3fSmrg ENUM(VARYING_SLOT_VAR26), 24701e04c3fSmrg ENUM(VARYING_SLOT_VAR27), 24801e04c3fSmrg ENUM(VARYING_SLOT_VAR28), 24901e04c3fSmrg ENUM(VARYING_SLOT_VAR29), 25001e04c3fSmrg ENUM(VARYING_SLOT_VAR30), 25101e04c3fSmrg ENUM(VARYING_SLOT_VAR31), 25201e04c3fSmrg }; 25301e04c3fSmrg STATIC_ASSERT(ARRAY_SIZE(names) == VARYING_SLOT_MAX); 25401e04c3fSmrg return NAME(slot); 25501e04c3fSmrg} 25601e04c3fSmrg 25701e04c3fSmrgconst char * 25801e04c3fSmrggl_system_value_name(gl_system_value sysval) 25901e04c3fSmrg{ 26001e04c3fSmrg static const char *names[] = { 26101e04c3fSmrg ENUM(SYSTEM_VALUE_SUBGROUP_SIZE), 26201e04c3fSmrg ENUM(SYSTEM_VALUE_SUBGROUP_INVOCATION), 26301e04c3fSmrg ENUM(SYSTEM_VALUE_SUBGROUP_EQ_MASK), 26401e04c3fSmrg ENUM(SYSTEM_VALUE_SUBGROUP_GE_MASK), 26501e04c3fSmrg ENUM(SYSTEM_VALUE_SUBGROUP_GT_MASK), 26601e04c3fSmrg ENUM(SYSTEM_VALUE_SUBGROUP_LE_MASK), 26701e04c3fSmrg ENUM(SYSTEM_VALUE_SUBGROUP_LT_MASK), 26801e04c3fSmrg ENUM(SYSTEM_VALUE_NUM_SUBGROUPS), 26901e04c3fSmrg ENUM(SYSTEM_VALUE_SUBGROUP_ID), 27001e04c3fSmrg ENUM(SYSTEM_VALUE_VERTEX_ID), 27101e04c3fSmrg ENUM(SYSTEM_VALUE_INSTANCE_ID), 27201e04c3fSmrg ENUM(SYSTEM_VALUE_INSTANCE_INDEX), 27301e04c3fSmrg ENUM(SYSTEM_VALUE_VERTEX_ID_ZERO_BASE), 27401e04c3fSmrg ENUM(SYSTEM_VALUE_BASE_VERTEX), 27501e04c3fSmrg ENUM(SYSTEM_VALUE_FIRST_VERTEX), 27601e04c3fSmrg ENUM(SYSTEM_VALUE_IS_INDEXED_DRAW), 27701e04c3fSmrg ENUM(SYSTEM_VALUE_BASE_INSTANCE), 27801e04c3fSmrg ENUM(SYSTEM_VALUE_DRAW_ID), 27901e04c3fSmrg ENUM(SYSTEM_VALUE_INVOCATION_ID), 28001e04c3fSmrg ENUM(SYSTEM_VALUE_FRAG_COORD), 2817ec681f3Smrg ENUM(SYSTEM_VALUE_POINT_COORD), 2827ec681f3Smrg ENUM(SYSTEM_VALUE_LINE_COORD), 28301e04c3fSmrg ENUM(SYSTEM_VALUE_FRONT_FACE), 28401e04c3fSmrg ENUM(SYSTEM_VALUE_SAMPLE_ID), 28501e04c3fSmrg ENUM(SYSTEM_VALUE_SAMPLE_POS), 28601e04c3fSmrg ENUM(SYSTEM_VALUE_SAMPLE_MASK_IN), 28701e04c3fSmrg ENUM(SYSTEM_VALUE_HELPER_INVOCATION), 2887ec681f3Smrg ENUM(SYSTEM_VALUE_COLOR0), 2897ec681f3Smrg ENUM(SYSTEM_VALUE_COLOR1), 29001e04c3fSmrg ENUM(SYSTEM_VALUE_TESS_COORD), 29101e04c3fSmrg ENUM(SYSTEM_VALUE_VERTICES_IN), 29201e04c3fSmrg ENUM(SYSTEM_VALUE_PRIMITIVE_ID), 29301e04c3fSmrg ENUM(SYSTEM_VALUE_TESS_LEVEL_OUTER), 29401e04c3fSmrg ENUM(SYSTEM_VALUE_TESS_LEVEL_INNER), 2957ec681f3Smrg ENUM(SYSTEM_VALUE_TESS_LEVEL_OUTER_DEFAULT), 2967ec681f3Smrg ENUM(SYSTEM_VALUE_TESS_LEVEL_INNER_DEFAULT), 29701e04c3fSmrg ENUM(SYSTEM_VALUE_LOCAL_INVOCATION_ID), 29801e04c3fSmrg ENUM(SYSTEM_VALUE_LOCAL_INVOCATION_INDEX), 29901e04c3fSmrg ENUM(SYSTEM_VALUE_GLOBAL_INVOCATION_ID), 3007ec681f3Smrg ENUM(SYSTEM_VALUE_BASE_GLOBAL_INVOCATION_ID), 3017ec681f3Smrg ENUM(SYSTEM_VALUE_GLOBAL_INVOCATION_INDEX), 3027ec681f3Smrg ENUM(SYSTEM_VALUE_WORKGROUP_ID), 3037ec681f3Smrg ENUM(SYSTEM_VALUE_NUM_WORKGROUPS), 3047ec681f3Smrg ENUM(SYSTEM_VALUE_WORKGROUP_SIZE), 30501e04c3fSmrg ENUM(SYSTEM_VALUE_GLOBAL_GROUP_SIZE), 3067ec681f3Smrg ENUM(SYSTEM_VALUE_USER_DATA_AMD), 30701e04c3fSmrg ENUM(SYSTEM_VALUE_WORK_DIM), 30801e04c3fSmrg ENUM(SYSTEM_VALUE_DEVICE_INDEX), 30901e04c3fSmrg ENUM(SYSTEM_VALUE_VIEW_INDEX), 31001e04c3fSmrg ENUM(SYSTEM_VALUE_VERTEX_CNT), 3117ec681f3Smrg ENUM(SYSTEM_VALUE_BARYCENTRIC_PERSP_PIXEL), 3127ec681f3Smrg ENUM(SYSTEM_VALUE_BARYCENTRIC_PERSP_SAMPLE), 3137ec681f3Smrg ENUM(SYSTEM_VALUE_BARYCENTRIC_PERSP_CENTROID), 3147ec681f3Smrg ENUM(SYSTEM_VALUE_BARYCENTRIC_PERSP_SIZE), 3157ec681f3Smrg ENUM(SYSTEM_VALUE_BARYCENTRIC_LINEAR_PIXEL), 3167ec681f3Smrg ENUM(SYSTEM_VALUE_BARYCENTRIC_LINEAR_CENTROID), 3177ec681f3Smrg ENUM(SYSTEM_VALUE_BARYCENTRIC_LINEAR_SAMPLE), 3187ec681f3Smrg ENUM(SYSTEM_VALUE_BARYCENTRIC_PULL_MODEL), 3197ec681f3Smrg ENUM(SYSTEM_VALUE_RAY_LAUNCH_ID), 3207ec681f3Smrg ENUM(SYSTEM_VALUE_RAY_LAUNCH_SIZE), 3217ec681f3Smrg ENUM(SYSTEM_VALUE_RAY_WORLD_ORIGIN), 3227ec681f3Smrg ENUM(SYSTEM_VALUE_RAY_WORLD_DIRECTION), 3237ec681f3Smrg ENUM(SYSTEM_VALUE_RAY_OBJECT_ORIGIN), 3247ec681f3Smrg ENUM(SYSTEM_VALUE_RAY_OBJECT_DIRECTION), 3257ec681f3Smrg ENUM(SYSTEM_VALUE_RAY_T_MIN), 3267ec681f3Smrg ENUM(SYSTEM_VALUE_RAY_T_MAX), 3277ec681f3Smrg ENUM(SYSTEM_VALUE_RAY_OBJECT_TO_WORLD), 3287ec681f3Smrg ENUM(SYSTEM_VALUE_RAY_WORLD_TO_OBJECT), 3297ec681f3Smrg ENUM(SYSTEM_VALUE_RAY_HIT_KIND), 3307ec681f3Smrg ENUM(SYSTEM_VALUE_RAY_FLAGS), 3317ec681f3Smrg ENUM(SYSTEM_VALUE_RAY_GEOMETRY_INDEX), 3327ec681f3Smrg ENUM(SYSTEM_VALUE_GS_HEADER_IR3), 3337ec681f3Smrg ENUM(SYSTEM_VALUE_TCS_HEADER_IR3), 3347ec681f3Smrg ENUM(SYSTEM_VALUE_REL_PATCH_ID_IR3), 3357ec681f3Smrg ENUM(SYSTEM_VALUE_FRAG_SHADING_RATE), 33601e04c3fSmrg }; 33701e04c3fSmrg STATIC_ASSERT(ARRAY_SIZE(names) == SYSTEM_VALUE_MAX); 33801e04c3fSmrg return NAME(sysval); 33901e04c3fSmrg} 34001e04c3fSmrg 34101e04c3fSmrgconst char * 34201e04c3fSmrgglsl_interp_mode_name(enum glsl_interp_mode qual) 34301e04c3fSmrg{ 34401e04c3fSmrg static const char *names[] = { 34501e04c3fSmrg ENUM(INTERP_MODE_NONE), 34601e04c3fSmrg ENUM(INTERP_MODE_SMOOTH), 34701e04c3fSmrg ENUM(INTERP_MODE_FLAT), 34801e04c3fSmrg ENUM(INTERP_MODE_NOPERSPECTIVE), 3497ec681f3Smrg ENUM(INTERP_MODE_EXPLICIT), 3507ec681f3Smrg ENUM(INTERP_MODE_COLOR), 35101e04c3fSmrg }; 35201e04c3fSmrg STATIC_ASSERT(ARRAY_SIZE(names) == INTERP_MODE_COUNT); 35301e04c3fSmrg return NAME(qual); 35401e04c3fSmrg} 35501e04c3fSmrg 35601e04c3fSmrgconst char * 35701e04c3fSmrggl_frag_result_name(gl_frag_result result) 35801e04c3fSmrg{ 35901e04c3fSmrg static const char *names[] = { 36001e04c3fSmrg ENUM(FRAG_RESULT_DEPTH), 36101e04c3fSmrg ENUM(FRAG_RESULT_STENCIL), 36201e04c3fSmrg ENUM(FRAG_RESULT_COLOR), 36301e04c3fSmrg ENUM(FRAG_RESULT_SAMPLE_MASK), 36401e04c3fSmrg ENUM(FRAG_RESULT_DATA0), 36501e04c3fSmrg ENUM(FRAG_RESULT_DATA1), 36601e04c3fSmrg ENUM(FRAG_RESULT_DATA2), 36701e04c3fSmrg ENUM(FRAG_RESULT_DATA3), 36801e04c3fSmrg ENUM(FRAG_RESULT_DATA4), 36901e04c3fSmrg ENUM(FRAG_RESULT_DATA5), 37001e04c3fSmrg ENUM(FRAG_RESULT_DATA6), 37101e04c3fSmrg ENUM(FRAG_RESULT_DATA7), 37201e04c3fSmrg }; 37301e04c3fSmrg STATIC_ASSERT(ARRAY_SIZE(names) == FRAG_RESULT_MAX); 37401e04c3fSmrg return NAME(result); 37501e04c3fSmrg} 376