255 lines
10 KiB
C++
255 lines
10 KiB
C++
//===--- HLSLRootSignature.def - Tokens and Enum Database -------*- C++ -*-===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file defines the TokenKinds used in the Root Signature DSL. This
|
|
// includes keywords, enums and a small subset of punctuators. Users of this
|
|
// file must optionally #define the TOK, KEYWORD, ENUM or specific ENUM macros
|
|
// to make use of this file.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef TOK
|
|
#define TOK(X, SPELLING)
|
|
#endif
|
|
#ifndef PUNCTUATOR
|
|
#define PUNCTUATOR(X,Y) TOK(pu_ ## X, Y)
|
|
#endif
|
|
#ifndef KEYWORD
|
|
#define KEYWORD(X) TOK(kw_ ## X, #X)
|
|
#endif
|
|
#ifndef ENUM
|
|
#define ENUM(NAME, LIT) TOK(en_ ## NAME, LIT)
|
|
#endif
|
|
|
|
// Defines the various types of enum
|
|
#ifndef ROOT_FLAG_ENUM
|
|
#define ROOT_FLAG_ENUM(NAME, LIT) ENUM(NAME, LIT)
|
|
#endif
|
|
#ifndef UNBOUNDED_ENUM
|
|
#define UNBOUNDED_ENUM(NAME, LIT) ENUM(NAME, LIT)
|
|
#endif
|
|
#ifndef DESCRIPTOR_RANGE_OFFSET_ENUM
|
|
#define DESCRIPTOR_RANGE_OFFSET_ENUM(NAME, LIT) ENUM(NAME, LIT)
|
|
#endif
|
|
#ifndef ROOT_DESCRIPTOR_FLAG_ENUM
|
|
#define ROOT_DESCRIPTOR_FLAG_ENUM(NAME, LIT) ENUM(NAME, LIT)
|
|
#endif
|
|
// Note: ON denotes that the flag is unique from the above Root Descriptor
|
|
// Flags. This is required to avoid token kind enum conflicts.
|
|
#ifndef DESCRIPTOR_RANGE_FLAG_ENUM_OFF
|
|
#define DESCRIPTOR_RANGE_FLAG_ENUM_OFF(NAME, LIT)
|
|
#endif
|
|
#ifndef DESCRIPTOR_RANGE_FLAG_ENUM_ON
|
|
#define DESCRIPTOR_RANGE_FLAG_ENUM_ON(NAME, LIT) ENUM(NAME, LIT)
|
|
#endif
|
|
#ifndef DESCRIPTOR_RANGE_FLAG_ENUM
|
|
#define DESCRIPTOR_RANGE_FLAG_ENUM(NAME, LIT, ON) DESCRIPTOR_RANGE_FLAG_ENUM_##ON(NAME, LIT)
|
|
#endif
|
|
#ifndef SHADER_VISIBILITY_ENUM
|
|
#define SHADER_VISIBILITY_ENUM(NAME, LIT) ENUM(NAME, LIT)
|
|
#endif
|
|
#ifndef FILTER_ENUM
|
|
#define FILTER_ENUM(NAME, LIT) ENUM(NAME, LIT)
|
|
#endif
|
|
#ifndef TEXTURE_ADDRESS_MODE_ENUM
|
|
#define TEXTURE_ADDRESS_MODE_ENUM(NAME, LIT) ENUM(NAME, LIT)
|
|
#endif
|
|
#ifndef COMPARISON_FUNC_ENUM
|
|
#define COMPARISON_FUNC_ENUM(NAME, LIT) ENUM(NAME, LIT)
|
|
#endif
|
|
#ifndef STATIC_BORDER_COLOR_ENUM
|
|
#define STATIC_BORDER_COLOR_ENUM(NAME, LIT) ENUM(NAME, LIT)
|
|
#endif
|
|
#ifndef STATIC_SAMPLER_FLAG_ENUM
|
|
#define STATIC_SAMPLER_FLAG_ENUM(NAME, LIT) ENUM(NAME, LIT)
|
|
#endif
|
|
|
|
// General Tokens:
|
|
TOK(invalid, "invalid identifier")
|
|
TOK(end_of_stream, "end of stream")
|
|
TOK(int_literal, "integer literal")
|
|
TOK(float_literal, "float literal")
|
|
|
|
// Register Tokens:
|
|
TOK(bReg, "b register")
|
|
TOK(tReg, "t register")
|
|
TOK(uReg, "u register")
|
|
TOK(sReg, "s register")
|
|
|
|
// Punctuators:
|
|
PUNCTUATOR(l_paren, '(')
|
|
PUNCTUATOR(r_paren, ')')
|
|
PUNCTUATOR(comma, ',')
|
|
PUNCTUATOR(or, '|')
|
|
PUNCTUATOR(equal, '=')
|
|
PUNCTUATOR(plus, '+')
|
|
PUNCTUATOR(minus, '-')
|
|
|
|
// RootElement Keywords:
|
|
KEYWORD(RootSignature) // used only for diagnostic messaging
|
|
KEYWORD(RootFlags)
|
|
KEYWORD(DescriptorTable)
|
|
KEYWORD(RootConstants)
|
|
KEYWORD(StaticSampler)
|
|
|
|
// RootConstants Keywords:
|
|
KEYWORD(num32BitConstants)
|
|
|
|
// DescriptorTable Keywords:
|
|
KEYWORD(CBV)
|
|
KEYWORD(SRV)
|
|
KEYWORD(UAV)
|
|
KEYWORD(Sampler)
|
|
|
|
// General Parameter Keywords:
|
|
KEYWORD(space)
|
|
KEYWORD(visibility)
|
|
KEYWORD(flags)
|
|
|
|
// View Parameter Keywords:
|
|
KEYWORD(numDescriptors)
|
|
KEYWORD(offset)
|
|
|
|
// StaticSampler Keywords:
|
|
KEYWORD(filter)
|
|
KEYWORD(mipLODBias)
|
|
KEYWORD(addressU)
|
|
KEYWORD(addressV)
|
|
KEYWORD(addressW)
|
|
KEYWORD(maxAnisotropy)
|
|
KEYWORD(comparisonFunc)
|
|
KEYWORD(borderColor)
|
|
KEYWORD(minLOD)
|
|
KEYWORD(maxLOD)
|
|
|
|
// Unbounded Enum:
|
|
UNBOUNDED_ENUM(unbounded, "unbounded")
|
|
|
|
// Descriptor Range Offset Enum:
|
|
DESCRIPTOR_RANGE_OFFSET_ENUM(DescriptorRangeOffsetAppend, "DESCRIPTOR_RANGE_OFFSET_APPEND")
|
|
|
|
// Root Flag Enums:
|
|
ROOT_FLAG_ENUM(AllowInputAssemblerInputLayout, "ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT")
|
|
ROOT_FLAG_ENUM(DenyVertexShaderRootAccess, "DENY_VERTEX_SHADER_ROOT_ACCESS")
|
|
ROOT_FLAG_ENUM(DenyHullShaderRootAccess, "DENY_HULL_SHADER_ROOT_ACCESS")
|
|
ROOT_FLAG_ENUM(DenyDomainShaderRootAccess, "DENY_DOMAIN_SHADER_ROOT_ACCESS")
|
|
ROOT_FLAG_ENUM(DenyGeometryShaderRootAccess, "DENY_GEOMETRY_SHADER_ROOT_ACCESS")
|
|
ROOT_FLAG_ENUM(DenyPixelShaderRootAccess, "DENY_PIXEL_SHADER_ROOT_ACCESS")
|
|
ROOT_FLAG_ENUM(DenyAmplificationShaderRootAccess, "DENY_AMPLIFICATION_SHADER_ROOT_ACCESS")
|
|
ROOT_FLAG_ENUM(DenyMeshShaderRootAccess, "DENY_MESH_SHADER_ROOT_ACCESS")
|
|
ROOT_FLAG_ENUM(AllowStreamOutput, "ALLOW_STREAM_OUTPUT")
|
|
ROOT_FLAG_ENUM(LocalRootSignature, "LOCAL_ROOT_SIGNATURE")
|
|
ROOT_FLAG_ENUM(CBVSRVUAVHeapDirectlyIndexed, "CBV_SRV_UAV_HEAP_DIRECTLY_INDEXED")
|
|
ROOT_FLAG_ENUM(SamplerHeapDirectlyIndexed , "SAMPLER_HEAP_DIRECTLY_INDEXED")
|
|
|
|
// Root Descriptor Flag Enums:
|
|
ROOT_DESCRIPTOR_FLAG_ENUM(DataVolatile, "DATA_VOLATILE")
|
|
ROOT_DESCRIPTOR_FLAG_ENUM(DataStaticWhileSetAtExecute, "DATA_STATIC_WHILE_SET_AT_EXECUTE")
|
|
ROOT_DESCRIPTOR_FLAG_ENUM(DataStatic, "DATA_STATIC")
|
|
|
|
// Descriptor Range Flag Enums:
|
|
DESCRIPTOR_RANGE_FLAG_ENUM(DescriptorsVolatile, "DESCRIPTORS_VOLATILE", ON)
|
|
DESCRIPTOR_RANGE_FLAG_ENUM(DataVolatile, "DATA_VOLATILE", OFF)
|
|
DESCRIPTOR_RANGE_FLAG_ENUM(DataStaticWhileSetAtExecute, "DATA_STATIC_WHILE_SET_AT_EXECUTE", OFF)
|
|
DESCRIPTOR_RANGE_FLAG_ENUM(DataStatic, "DATA_STATIC", OFF)
|
|
DESCRIPTOR_RANGE_FLAG_ENUM(DescriptorsStaticKeepingBufferBoundsChecks, "DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS", ON)
|
|
|
|
// Shader Visibiliy Enums:
|
|
SHADER_VISIBILITY_ENUM(All, "SHADER_VISIBILITY_ALL")
|
|
SHADER_VISIBILITY_ENUM(Vertex, "SHADER_VISIBILITY_VERTEX")
|
|
SHADER_VISIBILITY_ENUM(Hull, "SHADER_VISIBILITY_HULL")
|
|
SHADER_VISIBILITY_ENUM(Domain, "SHADER_VISIBILITY_DOMAIN")
|
|
SHADER_VISIBILITY_ENUM(Geometry, "SHADER_VISIBILITY_GEOMETRY")
|
|
SHADER_VISIBILITY_ENUM(Pixel, "SHADER_VISIBILITY_PIXEL")
|
|
SHADER_VISIBILITY_ENUM(Amplification, "SHADER_VISIBILITY_AMPLIFICATION")
|
|
SHADER_VISIBILITY_ENUM(Mesh, "SHADER_VISIBILITY_MESH")
|
|
|
|
// Filter Enums:
|
|
FILTER_ENUM(MinMagMipPoint, "FILTER_MIN_MAG_MIP_POINT")
|
|
FILTER_ENUM(MinMagPointMipLinear, "FILTER_MIN_MAG_POINT_MIP_LINEAR")
|
|
FILTER_ENUM(MinPointMagLinearMipPoint, "FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT")
|
|
FILTER_ENUM(MinPointMagMipLinear, "FILTER_MIN_POINT_MAG_MIP_LINEAR")
|
|
FILTER_ENUM(MinLinearMagMipPoint, "FILTER_MIN_LINEAR_MAG_MIP_POINT")
|
|
FILTER_ENUM(MinLinearMagPointMipLinear, "FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR")
|
|
FILTER_ENUM(MinMagLinearMipPoint, "FILTER_MIN_MAG_LINEAR_MIP_POINT")
|
|
FILTER_ENUM(MinMagMipLinear, "FILTER_MIN_MAG_MIP_LINEAR")
|
|
FILTER_ENUM(Anisotropic, "FILTER_ANISOTROPIC")
|
|
FILTER_ENUM(ComparisonMinMagMipPoint, "FILTER_COMPARISON_MIN_MAG_MIP_POINT")
|
|
FILTER_ENUM(ComparisonMinMagPointMipLinear, "FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR")
|
|
FILTER_ENUM(ComparisonMinPointMagLinearMipPoint, "FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT")
|
|
FILTER_ENUM(ComparisonMinPointMagMipLinear, "FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR")
|
|
FILTER_ENUM(ComparisonMinLinearMagMipPoint, "FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT")
|
|
FILTER_ENUM(ComparisonMinLinearMagPointMipLinear, "FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR")
|
|
FILTER_ENUM(ComparisonMinMagLinearMipPoint, "FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT")
|
|
FILTER_ENUM(ComparisonMinMagMipLinear, "FILTER_COMPARISON_MIN_MAG_MIP_LINEAR")
|
|
FILTER_ENUM(ComparisonAnisotropic, "FILTER_COMPARISON_ANISOTROPIC")
|
|
FILTER_ENUM(MinimumMinMagMipPoint, "FILTER_MINIMUM_MIN_MAG_MIP_POINT")
|
|
FILTER_ENUM(MinimumMinMagPointMipLinear, "FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR")
|
|
FILTER_ENUM(MinimumMinPointMagLinearMipPoint, "FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT")
|
|
FILTER_ENUM(MinimumMinPointMagMipLinear, "FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR")
|
|
FILTER_ENUM(MinimumMinLinearMagMipPoint, "FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT")
|
|
FILTER_ENUM(MinimumMinLinearMagPointMipLinear, "FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR")
|
|
FILTER_ENUM(MinimumMinMagLinearMipPoint, "FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT")
|
|
FILTER_ENUM(MinimumMinMagMipLinear, "FILTER_MINIMUM_MIN_MAG_MIP_LINEAR")
|
|
FILTER_ENUM(MinimumAnisotropic, "FILTER_MINIMUM_ANISOTROPIC")
|
|
FILTER_ENUM(MaximumMinMagMipPoint, "FILTER_MAXIMUM_MIN_MAG_MIP_POINT")
|
|
FILTER_ENUM(MaximumMinMagPointMipLinear, "FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR")
|
|
FILTER_ENUM(MaximumMinPointMagLinearMipPoint, "FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT")
|
|
FILTER_ENUM(MaximumMinPointMagMipLinear, "FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR")
|
|
FILTER_ENUM(MaximumMinLinearMagMipPoint, "FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT")
|
|
FILTER_ENUM(MaximumMinLinearMagPointMipLinear, "FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR")
|
|
FILTER_ENUM(MaximumMinMagLinearMipPoint, "FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT")
|
|
FILTER_ENUM(MaximumMinMagMipLinear, "FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR")
|
|
FILTER_ENUM(MaximumAnisotropic, "FILTER_MAXIMUM_ANISOTROPIC")
|
|
|
|
// Texture Address Mode Enums:
|
|
TEXTURE_ADDRESS_MODE_ENUM(Wrap, "TEXTURE_ADDRESS_WRAP")
|
|
TEXTURE_ADDRESS_MODE_ENUM(Mirror, "TEXTURE_ADDRESS_MIRROR")
|
|
TEXTURE_ADDRESS_MODE_ENUM(Clamp, "TEXTURE_ADDRESS_CLAMP")
|
|
TEXTURE_ADDRESS_MODE_ENUM(Border, "TEXTURE_ADDRESS_BORDER")
|
|
TEXTURE_ADDRESS_MODE_ENUM(MirrorOnce, "TEXTURE_ADDRESS_MIRRORONCE")
|
|
|
|
// Comparison Func Enums:
|
|
COMPARISON_FUNC_ENUM(Never, "COMPARISON_NEVER")
|
|
COMPARISON_FUNC_ENUM(Less, "COMPARISON_LESS")
|
|
COMPARISON_FUNC_ENUM(Equal, "COMPARISON_EQUAL")
|
|
COMPARISON_FUNC_ENUM(LessEqual, "COMPARISON_LESS_EQUAL")
|
|
COMPARISON_FUNC_ENUM(Greater, "COMPARISON_GREATER")
|
|
COMPARISON_FUNC_ENUM(NotEqual, "COMPARISON_NOT_EQUAL")
|
|
COMPARISON_FUNC_ENUM(GreaterEqual, "COMPARISON_GREATER_EQUAL")
|
|
COMPARISON_FUNC_ENUM(Always, "COMPARISON_ALWAYS")
|
|
|
|
// Static Border Color Enums:
|
|
STATIC_BORDER_COLOR_ENUM(TransparentBlack, "STATIC_BORDER_COLOR_TRANSPARENT_BLACK")
|
|
STATIC_BORDER_COLOR_ENUM(OpaqueBlack, "STATIC_BORDER_COLOR_OPAQUE_BLACK")
|
|
STATIC_BORDER_COLOR_ENUM(OpaqueWhite, "STATIC_BORDER_COLOR_OPAQUE_WHITE")
|
|
STATIC_BORDER_COLOR_ENUM(OpaqueBlackUint, "STATIC_BORDER_COLOR_OPAQUE_BLACK_UINT")
|
|
STATIC_BORDER_COLOR_ENUM(OpaqueWhiteUint, "STATIC_BORDER_COLOR_OPAQUE_WHITE_UINT")
|
|
|
|
// Root Descriptor Flag Enums:
|
|
STATIC_SAMPLER_FLAG_ENUM(UintBorderColor, "UINT_BORDER_COLOR")
|
|
STATIC_SAMPLER_FLAG_ENUM(NonNormalizedCoordinates, "NON_NORMALIZED_COORDINATES")
|
|
|
|
#undef STATIC_BORDER_COLOR_ENUM
|
|
#undef COMPARISON_FUNC_ENUM
|
|
#undef TEXTURE_ADDRESS_MODE_ENUM
|
|
#undef FILTER_ENUM
|
|
#undef SHADER_VISIBILITY_ENUM
|
|
#undef DESCRIPTOR_RANGE_FLAG_ENUM
|
|
#undef DESCRIPTOR_RANGE_FLAG_ENUM_OFF
|
|
#undef DESCRIPTOR_RANGE_FLAG_ENUM_ON
|
|
#undef ROOT_DESCRIPTOR_FLAG_ENUM
|
|
#undef STATIC_SAMPLER_FLAG_ENUM
|
|
#undef ROOT_FLAG_ENUM
|
|
#undef DESCRIPTOR_RANGE_OFFSET_ENUM
|
|
#undef UNBOUNDED_ENUM
|
|
#undef ENUM
|
|
#undef KEYWORD
|
|
#undef PUNCTUATOR
|
|
#undef TOK
|