1//===--- HLSLRootSignature.def - Tokens and Enum Database -------*- C++ -*-===// 2// 3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4// See https://llvm.org/LICENSE.txt for license information. 5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6// 7//===----------------------------------------------------------------------===// 8// 9// This file defines the TokenKinds used in the Root Signature DSL. This 10// includes keywords, enums and a small subset of punctuators. Users of this 11// file must optionally #define the TOK, KEYWORD, ENUM or specific ENUM macros 12// to make use of this file. 13// 14//===----------------------------------------------------------------------===// 15 16#ifndef TOK 17#define TOK(X, SPELLING) 18#endif 19#ifndef PUNCTUATOR 20#define PUNCTUATOR(X,Y) TOK(pu_ ## X, Y) 21#endif 22#ifndef KEYWORD 23#define KEYWORD(X) TOK(kw_ ## X, #X) 24#endif 25#ifndef ENUM 26#define ENUM(NAME, LIT) TOK(en_ ## NAME, LIT) 27#endif 28 29// Defines the various types of enum 30#ifndef ROOT_FLAG_ENUM 31#define ROOT_FLAG_ENUM(NAME, LIT) ENUM(NAME, LIT) 32#endif 33#ifndef UNBOUNDED_ENUM 34#define UNBOUNDED_ENUM(NAME, LIT) ENUM(NAME, LIT) 35#endif 36#ifndef DESCRIPTOR_RANGE_OFFSET_ENUM 37#define DESCRIPTOR_RANGE_OFFSET_ENUM(NAME, LIT) ENUM(NAME, LIT) 38#endif 39#ifndef ROOT_DESCRIPTOR_FLAG_ENUM 40#define ROOT_DESCRIPTOR_FLAG_ENUM(NAME, LIT) ENUM(NAME, LIT) 41#endif 42// Note: ON denotes that the flag is unique from the above Root Descriptor 43// Flags. This is required to avoid token kind enum conflicts. 44#ifndef DESCRIPTOR_RANGE_FLAG_ENUM_OFF 45#define DESCRIPTOR_RANGE_FLAG_ENUM_OFF(NAME, LIT) 46#endif 47#ifndef DESCRIPTOR_RANGE_FLAG_ENUM_ON 48#define DESCRIPTOR_RANGE_FLAG_ENUM_ON(NAME, LIT) ENUM(NAME, LIT) 49#endif 50#ifndef DESCRIPTOR_RANGE_FLAG_ENUM 51#define DESCRIPTOR_RANGE_FLAG_ENUM(NAME, LIT, ON) DESCRIPTOR_RANGE_FLAG_ENUM_##ON(NAME, LIT) 52#endif 53#ifndef SHADER_VISIBILITY_ENUM 54#define SHADER_VISIBILITY_ENUM(NAME, LIT) ENUM(NAME, LIT) 55#endif 56#ifndef FILTER_ENUM 57#define FILTER_ENUM(NAME, LIT) ENUM(NAME, LIT) 58#endif 59#ifndef TEXTURE_ADDRESS_MODE_ENUM 60#define TEXTURE_ADDRESS_MODE_ENUM(NAME, LIT) ENUM(NAME, LIT) 61#endif 62#ifndef COMPARISON_FUNC_ENUM 63#define COMPARISON_FUNC_ENUM(NAME, LIT) ENUM(NAME, LIT) 64#endif 65#ifndef STATIC_BORDER_COLOR_ENUM 66#define STATIC_BORDER_COLOR_ENUM(NAME, LIT) ENUM(NAME, LIT) 67#endif 68 69// General Tokens: 70TOK(invalid, "invalid identifier") 71TOK(end_of_stream, "end of stream") 72TOK(int_literal, "integer literal") 73TOK(float_literal, "float literal") 74 75// Register Tokens: 76TOK(bReg, "b register") 77TOK(tReg, "t register") 78TOK(uReg, "u register") 79TOK(sReg, "s register") 80 81// Punctuators: 82PUNCTUATOR(l_paren, '(') 83PUNCTUATOR(r_paren, ')') 84PUNCTUATOR(comma, ',') 85PUNCTUATOR(or, '|') 86PUNCTUATOR(equal, '=') 87PUNCTUATOR(plus, '+') 88PUNCTUATOR(minus, '-') 89 90// RootElement Keywords: 91KEYWORD(RootSignature) // used only for diagnostic messaging 92KEYWORD(RootFlags) 93KEYWORD(DescriptorTable) 94KEYWORD(RootConstants) 95KEYWORD(StaticSampler) 96 97// RootConstants Keywords: 98KEYWORD(num32BitConstants) 99 100// DescriptorTable Keywords: 101KEYWORD(CBV) 102KEYWORD(SRV) 103KEYWORD(UAV) 104KEYWORD(Sampler) 105 106// General Parameter Keywords: 107KEYWORD(space) 108KEYWORD(visibility) 109KEYWORD(flags) 110 111// View Parameter Keywords: 112KEYWORD(numDescriptors) 113KEYWORD(offset) 114 115// StaticSampler Keywords: 116KEYWORD(filter) 117KEYWORD(mipLODBias) 118KEYWORD(addressU) 119KEYWORD(addressV) 120KEYWORD(addressW) 121KEYWORD(maxAnisotropy) 122KEYWORD(comparisonFunc) 123KEYWORD(borderColor) 124KEYWORD(minLOD) 125KEYWORD(maxLOD) 126 127// Unbounded Enum: 128UNBOUNDED_ENUM(unbounded, "unbounded") 129 130// Descriptor Range Offset Enum: 131DESCRIPTOR_RANGE_OFFSET_ENUM(DescriptorRangeOffsetAppend, "DESCRIPTOR_RANGE_OFFSET_APPEND") 132 133// Root Flag Enums: 134ROOT_FLAG_ENUM(AllowInputAssemblerInputLayout, "ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT") 135ROOT_FLAG_ENUM(DenyVertexShaderRootAccess, "DENY_VERTEX_SHADER_ROOT_ACCESS") 136ROOT_FLAG_ENUM(DenyHullShaderRootAccess, "DENY_HULL_SHADER_ROOT_ACCESS") 137ROOT_FLAG_ENUM(DenyDomainShaderRootAccess, "DENY_DOMAIN_SHADER_ROOT_ACCESS") 138ROOT_FLAG_ENUM(DenyGeometryShaderRootAccess, "DENY_GEOMETRY_SHADER_ROOT_ACCESS") 139ROOT_FLAG_ENUM(DenyPixelShaderRootAccess, "DENY_PIXEL_SHADER_ROOT_ACCESS") 140ROOT_FLAG_ENUM(DenyAmplificationShaderRootAccess, "DENY_AMPLIFICATION_SHADER_ROOT_ACCESS") 141ROOT_FLAG_ENUM(DenyMeshShaderRootAccess, "DENY_MESH_SHADER_ROOT_ACCESS") 142ROOT_FLAG_ENUM(AllowStreamOutput, "ALLOW_STREAM_OUTPUT") 143ROOT_FLAG_ENUM(LocalRootSignature, "LOCAL_ROOT_SIGNATURE") 144ROOT_FLAG_ENUM(CBVSRVUAVHeapDirectlyIndexed, "CBV_SRV_UAV_HEAP_DIRECTLY_INDEXED") 145ROOT_FLAG_ENUM(SamplerHeapDirectlyIndexed , "SAMPLER_HEAP_DIRECTLY_INDEXED") 146 147// Root Descriptor Flag Enums: 148ROOT_DESCRIPTOR_FLAG_ENUM(DataVolatile, "DATA_VOLATILE") 149ROOT_DESCRIPTOR_FLAG_ENUM(DataStaticWhileSetAtExecute, "DATA_STATIC_WHILE_SET_AT_EXECUTE") 150ROOT_DESCRIPTOR_FLAG_ENUM(DataStatic, "DATA_STATIC") 151 152// Descriptor Range Flag Enums: 153DESCRIPTOR_RANGE_FLAG_ENUM(DescriptorsVolatile, "DESCRIPTORS_VOLATILE", ON) 154DESCRIPTOR_RANGE_FLAG_ENUM(DataVolatile, "DATA_VOLATILE", OFF) 155DESCRIPTOR_RANGE_FLAG_ENUM(DataStaticWhileSetAtExecute, "DATA_STATIC_WHILE_SET_AT_EXECUTE", OFF) 156DESCRIPTOR_RANGE_FLAG_ENUM(DataStatic, "DATA_STATIC", OFF) 157DESCRIPTOR_RANGE_FLAG_ENUM(DescriptorsStaticKeepingBufferBoundsChecks, "DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS", ON) 158 159// Shader Visibiliy Enums: 160SHADER_VISIBILITY_ENUM(All, "SHADER_VISIBILITY_ALL") 161SHADER_VISIBILITY_ENUM(Vertex, "SHADER_VISIBILITY_VERTEX") 162SHADER_VISIBILITY_ENUM(Hull, "SHADER_VISIBILITY_HULL") 163SHADER_VISIBILITY_ENUM(Domain, "SHADER_VISIBILITY_DOMAIN") 164SHADER_VISIBILITY_ENUM(Geometry, "SHADER_VISIBILITY_GEOMETRY") 165SHADER_VISIBILITY_ENUM(Pixel, "SHADER_VISIBILITY_PIXEL") 166SHADER_VISIBILITY_ENUM(Amplification, "SHADER_VISIBILITY_AMPLIFICATION") 167SHADER_VISIBILITY_ENUM(Mesh, "SHADER_VISIBILITY_MESH") 168 169// Filter Enums: 170FILTER_ENUM(MinMagMipPoint, "FILTER_MIN_MAG_MIP_POINT") 171FILTER_ENUM(MinMagPointMipLinear, "FILTER_MIN_MAG_POINT_MIP_LINEAR") 172FILTER_ENUM(MinPointMagLinearMipPoint, "FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT") 173FILTER_ENUM(MinPointMagMipLinear, "FILTER_MIN_POINT_MAG_MIP_LINEAR") 174FILTER_ENUM(MinLinearMagMipPoint, "FILTER_MIN_LINEAR_MAG_MIP_POINT") 175FILTER_ENUM(MinLinearMagPointMipLinear, "FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR") 176FILTER_ENUM(MinMagLinearMipPoint, "FILTER_MIN_MAG_LINEAR_MIP_POINT") 177FILTER_ENUM(MinMagMipLinear, "FILTER_MIN_MAG_MIP_LINEAR") 178FILTER_ENUM(Anisotropic, "FILTER_ANISOTROPIC") 179FILTER_ENUM(ComparisonMinMagMipPoint, "FILTER_COMPARISON_MIN_MAG_MIP_POINT") 180FILTER_ENUM(ComparisonMinMagPointMipLinear, "FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR") 181FILTER_ENUM(ComparisonMinPointMagLinearMipPoint, "FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT") 182FILTER_ENUM(ComparisonMinPointMagMipLinear, "FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR") 183FILTER_ENUM(ComparisonMinLinearMagMipPoint, "FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT") 184FILTER_ENUM(ComparisonMinLinearMagPointMipLinear, "FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR") 185FILTER_ENUM(ComparisonMinMagLinearMipPoint, "FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT") 186FILTER_ENUM(ComparisonMinMagMipLinear, "FILTER_COMPARISON_MIN_MAG_MIP_LINEAR") 187FILTER_ENUM(ComparisonAnisotropic, "FILTER_COMPARISON_ANISOTROPIC") 188FILTER_ENUM(MinimumMinMagMipPoint, "FILTER_MINIMUM_MIN_MAG_MIP_POINT") 189FILTER_ENUM(MinimumMinMagPointMipLinear, "FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR") 190FILTER_ENUM(MinimumMinPointMagLinearMipPoint, "FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT") 191FILTER_ENUM(MinimumMinPointMagMipLinear, "FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR") 192FILTER_ENUM(MinimumMinLinearMagMipPoint, "FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT") 193FILTER_ENUM(MinimumMinLinearMagPointMipLinear, "FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR") 194FILTER_ENUM(MinimumMinMagLinearMipPoint, "FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT") 195FILTER_ENUM(MinimumMinMagMipLinear, "FILTER_MINIMUM_MIN_MAG_MIP_LINEAR") 196FILTER_ENUM(MinimumAnisotropic, "FILTER_MINIMUM_ANISOTROPIC") 197FILTER_ENUM(MaximumMinMagMipPoint, "FILTER_MAXIMUM_MIN_MAG_MIP_POINT") 198FILTER_ENUM(MaximumMinMagPointMipLinear, "FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR") 199FILTER_ENUM(MaximumMinPointMagLinearMipPoint, "FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT") 200FILTER_ENUM(MaximumMinPointMagMipLinear, "FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR") 201FILTER_ENUM(MaximumMinLinearMagMipPoint, "FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT") 202FILTER_ENUM(MaximumMinLinearMagPointMipLinear, "FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR") 203FILTER_ENUM(MaximumMinMagLinearMipPoint, "FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT") 204FILTER_ENUM(MaximumMinMagMipLinear, "FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR") 205FILTER_ENUM(MaximumAnisotropic, "FILTER_MAXIMUM_ANISOTROPIC") 206 207// Texture Address Mode Enums: 208TEXTURE_ADDRESS_MODE_ENUM(Wrap, "TEXTURE_ADDRESS_WRAP") 209TEXTURE_ADDRESS_MODE_ENUM(Mirror, "TEXTURE_ADDRESS_MIRROR") 210TEXTURE_ADDRESS_MODE_ENUM(Clamp, "TEXTURE_ADDRESS_CLAMP") 211TEXTURE_ADDRESS_MODE_ENUM(Border, "TEXTURE_ADDRESS_BORDER") 212TEXTURE_ADDRESS_MODE_ENUM(MirrorOnce, "TEXTURE_ADDRESS_MIRRORONCE") 213 214// Comparison Func Enums: 215COMPARISON_FUNC_ENUM(Never, "COMPARISON_NEVER") 216COMPARISON_FUNC_ENUM(Less, "COMPARISON_LESS") 217COMPARISON_FUNC_ENUM(Equal, "COMPARISON_EQUAL") 218COMPARISON_FUNC_ENUM(LessEqual, "COMPARISON_LESS_EQUAL") 219COMPARISON_FUNC_ENUM(Greater, "COMPARISON_GREATER") 220COMPARISON_FUNC_ENUM(NotEqual, "COMPARISON_NOT_EQUAL") 221COMPARISON_FUNC_ENUM(GreaterEqual, "COMPARISON_GREATER_EQUAL") 222COMPARISON_FUNC_ENUM(Always, "COMPARISON_ALWAYS") 223 224// Static Border Color Enums: 225STATIC_BORDER_COLOR_ENUM(TransparentBlack, "STATIC_BORDER_COLOR_TRANSPARENT_BLACK") 226STATIC_BORDER_COLOR_ENUM(OpaqueBlack, "STATIC_BORDER_COLOR_OPAQUE_BLACK") 227STATIC_BORDER_COLOR_ENUM(OpaqueWhite, "STATIC_BORDER_COLOR_OPAQUE_WHITE") 228STATIC_BORDER_COLOR_ENUM(OpaqueBlackUint, "STATIC_BORDER_COLOR_OPAQUE_BLACK_UINT") 229STATIC_BORDER_COLOR_ENUM(OpaqueWhiteUint, "STATIC_BORDER_COLOR_OPAQUE_WHITE_UINT") 230 231#undef STATIC_BORDER_COLOR_ENUM 232#undef COMPARISON_FUNC_ENUM 233#undef TEXTURE_ADDRESS_MODE_ENUM 234#undef FILTER_ENUM 235#undef SHADER_VISIBILITY_ENUM 236#undef DESCRIPTOR_RANGE_FLAG_ENUM 237#undef DESCRIPTOR_RANGE_FLAG_ENUM_OFF 238#undef DESCRIPTOR_RANGE_FLAG_ENUM_ON 239#undef ROOT_DESCRIPTOR_FLAG_ENUM 240#undef ROOT_FLAG_ENUM 241#undef DESCRIPTOR_RANGE_OFFSET_ENUM 242#undef UNBOUNDED_ENUM 243#undef ENUM 244#undef KEYWORD 245#undef PUNCTUATOR 246#undef TOK 247