Path: blob/21.2-virgl/src/microsoft/compiler/dxil_enums.h
4565 views
/*1* Copyright © Microsoft Corporation2*3* Permission is hereby granted, free of charge, to any person obtaining a4* copy of this software and associated documentation files (the "Software"),5* to deal in the Software without restriction, including without limitation6* the rights to use, copy, modify, merge, publish, distribute, sublicense,7* and/or sell copies of the Software, and to permit persons to whom the8* Software is furnished to do so, subject to the following conditions:9*10* The above copyright notice and this permission notice (including the next11* paragraph) shall be included in all copies or substantial portions of the12* Software.13*14* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR15* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,16* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL17* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER18* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING19* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS20* IN THE SOFTWARE.21*/2223#ifndef DIXL_ENUMS_H24#define DIXL_ENUMS_H2526enum dxil_signature_kind {27DXIL_SIG_INVALID = 0,28DXIL_SIG_INPUT,29DXIL_SIG_OUTPUT,30DXIL_SIG_PATCH_CONST_OR_PRIM31};3233/* These enums are taken from34* DirectXShaderCompiler/lib/dxc/DXIL/DxilConstants.h35*/36enum dxil_semantic_kind {37DXIL_SEM_ARBITRARY,38DXIL_SEM_VERTEX_ID,39DXIL_SEM_INSTANCE_ID,40DXIL_SEM_POSITION,41DXIL_SEM_RENDERTARGET_ARRAY_INDEX,42DXIL_SEM_VIEWPORT_ARRAY_INDEX,43DXIL_SEM_CLIP_DISTANCE,44DXIL_SEM_CULL_DISTANCE,45DXIL_SEM_OUTPUT_CONTROL_POINT_ID,46DXIL_SEM_DOMAIN_LOCATION,47DXIL_SEM_PRIMITIVE_ID,48DXIL_SEM_GS_INSTANCE_ID,49DXIL_SEM_SAMPLE_INDEX,50DXIL_SEM_IS_FRONT_FACE,51DXIL_SEM_COVERAGE,52DXIL_SEM_INNER_COVERAGE,53DXIL_SEM_TARGET,54DXIL_SEM_DEPTH,55DXIL_SEM_DEPTH_LE,56DXIL_SEM_DEPTH_GE,57DXIL_SEM_STENCIL_REF,58DXIL_SEM_DISPATCH_THREAD_ID,59DXIL_SEM_GROUP_ID,60DXIL_SEM_GROUP_INDEX,61DXIL_SEM_GROUP_THREAD_ID,62DXIL_SEM_TESS_FACTOR,63DXIL_SEM_INSIDE_TESS_FACTOR,64DXIL_SEM_VIEW_ID,65DXIL_SEM_BARYCENTRICS,66DXIL_SEM_SHADING_RATE,67DXIL_SEM_CULL_PRIMITIVE,68DXIL_SEM_INVALID69};7071enum dxil_prog_sig_semantic {72DXIL_PROG_SEM_UNDEFINED = 0,73DXIL_PROG_SEM_POSITION = 1,74DXIL_PROG_SEM_CLIP_DISTANCE = 2,75DXIL_PROG_SEM_CULL_DISTANCE = 3,76DXIL_PROG_SEM_RENDERTARGET_ARRAY_INDEX = 4,77DXIL_PROG_SEM_VIEWPORT_ARRAY_INDEX = 5,78DXIL_PROG_SEM_VERTEX_ID = 6,79DXIL_PROG_SEM_PRIMITIVE_ID = 7,80DXIL_PROG_SEM_INSTANCE_ID = 8,81DXIL_PROG_SEM_IS_FRONTFACE = 9,82DXIL_PROG_SEM_SAMPLE_INDEX = 10,83DXIL_PROG_SEM_FINAL_QUAD_EDGE_TESSFACTOR = 11,84DXIL_PROG_SEM_FINAL_QUAD_INSIDE_EDGE_TESSFACTOR = 12,85DXIL_PROG_SEM_FINAL_TRI_EDGE_TESSFACTOR = 13,86DXIL_PROG_SEM_FINAL_TRI_INSIDE_EDGE_TESSFACTOR = 14,87DXIL_PROG_SEM_FINAL_LINE_DETAIL_TESSFACTOR = 15,88DXIL_PROG_SEM_FINAL_LINE_DENSITY_TESSFACTOR = 16,89DXIL_PROG_SEM_BARYCENTRICS = 23,90DXIL_PROG_SEM_SHADING_RATE = 24,91DXIL_PROG_SEM_CULL_PRIMITIVE = 25,92DXIL_PROG_SEM_TARGET = 64,93DXIL_PROG_SEM_DEPTH = 65,94DXIL_PROG_SEM_COVERAGE = 66,95DXIL_PROG_SEM_DEPTH_GE = 67,96DXIL_PROG_SEM_DEPTH_LE = 68,97DXIL_PROG_SEM_STENCIL_REF = 69,98DXIL_PROG_SEM_INNER_COVERAGE = 7099};100101enum dxil_prog_sig_comp_type {102DXIL_PROG_SIG_COMP_TYPE_UNKNOWN = 0,103DXIL_PROG_SIG_COMP_TYPE_UINT32 = 1,104DXIL_PROG_SIG_COMP_TYPE_SINT32 = 2,105DXIL_PROG_SIG_COMP_TYPE_FLOAT32 = 3,106DXIL_PROG_SIG_COMP_TYPE_UINT16 = 4,107DXIL_PROG_SIG_COMP_TYPE_SINT16 = 5,108DXIL_PROG_SIG_COMP_TYPE_FLOAT16 = 6,109DXIL_PROG_SIG_COMP_TYPE_UINT64 = 7,110DXIL_PROG_SIG_COMP_TYPE_SINT64 = 8,111DXIL_PROG_SIG_COMP_TYPE_FLOAT64 = 9,112DXIL_PROG_SIG_COMP_TYPE_COUNT113};114115116enum dxil_sig_point_kind {117DXIL_SIG_POINT_VSIN, // Ordinary Vertex Shader input from Input Assembler118DXIL_SIG_POINT_VSOUT, // Ordinary Vertex Shader output that may feed Rasterizer119DXIL_SIG_POINT_PCIN, // Patch Constant function non-patch inputs120DXIL_SIG_POINT_HSIN, // Hull Shader function non-patch inputs121DXIL_SIG_POINT_HSCPIN, // Hull Shader patch inputs - Control Points122DXIL_SIG_POINT_HSCPOut, // Hull Shader function output - Control Point123DXIL_SIG_POINT_PCOUT, // Patch Constant function output - Patch Constant data passed to Domain Shader124DXIL_SIG_POINT_DSIN, // Domain Shader regular input - Patch Constant data plus system values125DXIL_SIG_POINT_DSCPIN, // Domain Shader patch input - Control Points126DXIL_SIG_POINT_DSOUT, // Domain Shader output - vertex data that may feed Rasterizer127DXIL_SIG_POINT_GSVIN, // Geometry Shader vertex input - qualified with primitive type128DXIL_SIG_POINT_GSIN, // Geometry Shader non-vertex inputs (system values)129DXIL_SIG_POINT_GSOUT, // Geometry Shader output - vertex data that may feed Rasterizer130DXIL_SIG_POINT_PSIN, // Pixel Shader input131DXIL_SIG_POINT_PSOUT, // Pixel Shader output132DXIL_SIG_POINT_CSIN, // Compute Shader input133DXIL_SIG_POINT_MSIN, // Mesh Shader input134DXIL_SIG_POINT_MSOUT, // Mesh Shader vertices output135DXIL_SIG_POINT_MSPOUT, // Mesh Shader primitives output136DXIL_SIG_POINT_ASIN, // Amplification Shader input137DXIL_SIG_POINT_INVALID138};139140enum dxil_min_precision {141DXIL_MIN_PREC_DEFAULT = 0,142DXIL_MIN_PREC_FLOAT16 = 1,143DXIL_MIN_PREC_FLOAT2_8 = 2,144DXIL_MIN_PREC_RESERVED = 3,145DXIL_MIN_PREC_SINT16 = 4,146DXIL_MIN_PREC_UINT16 = 5,147DXIL_MIN_PREC_ANY16 = 0xf0,148DXIL_MIN_PREC_ANY10 = 0xf1149};150151enum dxil_semantic_interpret_kind {152DXIL_SEM_INTERP_NA, // Not Available153DXIL_SEM_INTERP_SV, // Normal System Value154DXIL_SEM_INTERP_SGV, // System Generated Value (sorted last)155DXIL_SEM_INTERP_ARB, // Treated as Arbitrary156DXIL_SEM_INTERP_NOT_IN_SIG, // Not included in signature (intrinsic access)157DXIL_SEM_INTERP_NOT_PACKED, // Included in signature, but does not contribute to packing158DXIL_SEM_INTERP_TARGET, // Special handling for SV_Target159DXIL_SEM_INTERP_TESSFACTOR, // Special handling for tessellation factors160DXIL_SEM_INTERP_SHADOW, // Shadow element must be added to a signature for compatibility161DXIL_SEM_INTERP_CLIPCULL, // Special packing rules for SV_ClipDistance or SV_CullDistance162DXIL_SEM_INTERP_INVALID163};164165enum dxil_component_type {166DXIL_COMP_TYPE_INVALID = 0,167DXIL_COMP_TYPE_I1 = 1,168DXIL_COMP_TYPE_I16 = 2,169DXIL_COMP_TYPE_U16 = 3,170DXIL_COMP_TYPE_I32 = 4,171DXIL_COMP_TYPE_U32 = 5,172DXIL_COMP_TYPE_I64 = 6,173DXIL_COMP_TYPE_U64 = 7,174DXIL_COMP_TYPE_F16 = 8,175DXIL_COMP_TYPE_F32 = 9,176DXIL_COMP_TYPE_F64 = 10,177DXIL_COMP_TYPE_SNORMF16 = 11,178DXIL_COMP_TYPE_UNORMF16 = 12,179DXIL_COMP_TYPE_SNORMF32 = 13,180DXIL_COMP_TYPE_UNORMF32 = 14,181DXIL_COMP_TYPE_SNORMF64 = 15,182DXIL_COMP_TYPE_UNORMF64 = 16183};184185enum dxil_interpolation_mode {186DXIL_INTERP_UNDEFINED = 0,187DXIL_INTERP_CONSTANT = 1,188DXIL_INTERP_LINEAR = 2,189DXIL_INTERP_LINEAR_CENTROID = 3,190DXIL_INTERP_LINEAR_NOPERSPECTIVE = 4,191DXIL_INTERP_LINEAR_NOPERSPECTIVE_CENTROID = 5,192DXIL_INTERP_LINEAR_SAMPLE = 6,193DXIL_INTERP_LINEAR_NOPERSPECTIVE_SAMPLE = 7,194DXIL_INTERP_INVALID = 8195};196197enum overload_type {198DXIL_NONE,199DXIL_I16,200DXIL_I32,201DXIL_I64,202DXIL_F16,203DXIL_F32,204DXIL_F64,205DXIL_NUM_OVERLOADS206};207208enum dxil_resource_class {209DXIL_RESOURCE_CLASS_SRV = 0,210DXIL_RESOURCE_CLASS_UAV = 1,211DXIL_RESOURCE_CLASS_CBV = 2,212DXIL_RESOURCE_CLASS_SAMPLER = 3213};214215enum dxil_resource_kind {216DXIL_RESOURCE_KIND_INVALID = 0,217DXIL_RESOURCE_KIND_TEXTURE1D = 1,218DXIL_RESOURCE_KIND_TEXTURE2D = 2,219DXIL_RESOURCE_KIND_TEXTURE2DMS = 3,220DXIL_RESOURCE_KIND_TEXTURE3D = 4,221DXIL_RESOURCE_KIND_TEXTURECUBE = 5,222DXIL_RESOURCE_KIND_TEXTURE1D_ARRAY = 6,223DXIL_RESOURCE_KIND_TEXTURE2D_ARRAY = 7,224DXIL_RESOURCE_KIND_TEXTURE2DMS_ARRAY = 8,225DXIL_RESOURCE_KIND_TEXTURECUBE_ARRAY = 9,226DXIL_RESOURCE_KIND_TYPED_BUFFER = 10,227DXIL_RESOURCE_KIND_RAW_BUFFER = 11,228DXIL_RESOURCE_KIND_STRUCTURED_BUFFER = 12,229DXIL_RESOURCE_KIND_CBUFFER = 13,230DXIL_RESOURCE_KIND_SAMPLER = 14,231DXIL_RESOURCE_KIND_TBUFFER = 15,232};233234enum dxil_sampler_kind {235DXIL_SAMPLER_KIND_DEFAULT = 0,236DXIL_SAMPLER_KIND_COMPARISON = 1,237DXIL_SAMPLER_KIND_MONO = 2,238DXIL_SAMPLER_KIND_INVALID = 3,239};240241enum dxil_attr_kind {242DXIL_ATTR_KIND_NONE = 0,243DXIL_ATTR_KIND_NO_DUPLICATE = 12,244DXIL_ATTR_KIND_NO_UNWIND = 18,245DXIL_ATTR_KIND_READ_NONE = 20,246DXIL_ATTR_KIND_READ_ONLY = 21,247};248249enum dxil_input_primitive {250DXIL_INPUT_PRIMITIVE_UNDEFINED = 0,251DXIL_INPUT_PRIMITIVE_POINT = 1,252DXIL_INPUT_PRIMITIVE_LINE = 2,253DXIL_INPUT_PRIMITIVE_TRIANGLE = 3,254DXIL_INPUT_PRIMITIVE_LINES_ADJENCY = 6,255DXIL_INPUT_PRIMITIVE_TRIANGLES_ADJENCY = 7,256};257258enum dxil_primitive_topology {259DXIL_PRIMITIVE_TOPOLOGY_UNDEFINED = 0,260DXIL_PRIMITIVE_TOPOLOGY_POINT_LIST = 1,261DXIL_PRIMITIVE_TOPOLOGY_LINE_LIST = 2,262DXIL_PRIMITIVE_TOPOLOGY_LINE_STRIP = 3,263DXIL_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 4,264DXIL_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 5,265};266267enum dxil_shader_tag {268DXIL_SHADER_TAG_FLAGS = 0,269DXIL_SHADER_TAG_GS_STATE = 1,270DXIL_SHADER_TAG_DS_STATE = 2,271DXIL_SHADER_TAG_HS_STATE = 3,272DXIL_SHADER_TAG_NUM_THREADS = 4,273};274275enum dxil_barrier_mode {276DXIL_BARRIER_MODE_SYNC_THREAD_GROUP = 1,277DXIL_BARRIER_MODE_UAV_FENCE_GLOBAL = 2,278DXIL_BARRIER_MODE_UAV_FENCE_THREAD_GROUP = 4,279DXIL_BARRIER_MODE_GROUPSHARED_MEM_FENCE = 8,280};281282enum dxil_address_space {283DXIL_AS_DEFAULT = 0,284DXIL_AS_DEVMEM = 1,285DXIL_AS_CBUF = 2,286DXIL_AS_GROUPSHARED = 3,287};288289enum dxil_rmw_op {290DXIL_RMWOP_XCHG = 0,291DXIL_RMWOP_ADD = 1,292DXIL_RMWOP_SUB = 2,293DXIL_RMWOP_AND = 3,294DXIL_RMWOP_NAND = 4,295DXIL_RMWOP_OR = 5,296DXIL_RMWOP_XOR = 6,297DXIL_RMWOP_MAX = 7,298DXIL_RMWOP_MIN = 8,299DXIL_RMWOP_UMAX = 9,300DXIL_RMWOP_UMIN = 10,301};302303enum dxil_atomic_ordering {304DXIL_ATOMIC_ORDERING_NOTATOMIC = 0,305DXIL_ATOMIC_ORDERING_UNORDERED = 1,306DXIL_ATOMIC_ORDERING_MONOTONIC = 2,307DXIL_ATOMIC_ORDERING_ACQUIRE = 3,308DXIL_ATOMIC_ORDERING_RELEASE = 4,309DXIL_ATOMIC_ORDERING_ACQREL = 5,310DXIL_ATOMIC_ORDERING_SEQCST = 6,311};312313enum dxil_sync_scope {314DXIL_SYNC_SCOPE_SINGLETHREAD = 0,315DXIL_SYNC_SCOPE_CROSSTHREAD = 1,316};317318#ifdef __cplusplus319extern "C" {320#endif321322struct glsl_type;323324enum dxil_component_type dxil_get_comp_type(const struct glsl_type *type);325326enum dxil_prog_sig_comp_type dxil_get_prog_sig_comp_type(const struct glsl_type *type);327328enum dxil_resource_kind dxil_get_resource_kind(const struct glsl_type *type);329330enum dxil_primitive_topology dxil_get_primitive_topology(unsigned topology);331332enum dxil_input_primitive dxil_get_input_primitive(unsigned primitive);333334const char *dxil_overload_suffix( enum overload_type overload);335336#ifdef __cplusplus337}338#endif339340341#endif // DXIL_ENUMS_H342343344