Skip to content

Commit

Permalink
Add lexing for remaining DescriptorTable keywords and enums
Browse files Browse the repository at this point in the history
  • Loading branch information
inbelic committed Jan 28, 2025
1 parent c5d3881 commit dc784ff
Show file tree
Hide file tree
Showing 2 changed files with 78 additions and 0 deletions.
59 changes: 59 additions & 0 deletions clang/include/clang/Parse/HLSLRootSignatureTokenKinds.def
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,23 @@
#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

// General Tokens:
TOK(invalid)
Expand All @@ -52,9 +69,51 @@ PUNCTUATOR(equal, '=')
// RootElement Keywords:
KEYWORD(DescriptorTable)

// 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)

// Descriptor Range Offset Enum:
DESCRIPTOR_RANGE_OFFSET_ENUM(DescriptorRangeOffsetAppend, "DESCRIPTOR_RANGE_OFFSET_APPEND")

// 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")

#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 DESCRIPTOR_RANGE_OFFSET_ENUM
#undef ENUM
#undef KEYWORD
Expand Down
19 changes: 19 additions & 0 deletions clang/unittests/Parse/ParseHLSLRootSignatureTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,26 @@ TEST_F(ParseHLSLRootSignatureTest, ValidLexAllTokensTest) {
DescriptorTable
CBV SRV UAV Sampler
space visibility flags
numDescriptors offset
DESCRIPTOR_RANGE_OFFSET_APPEND
DATA_VOLATILE
DATA_STATIC_WHILE_SET_AT_EXECUTE
DATA_STATIC
DESCRIPTORS_VOLATILE
DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS
shader_visibility_all
shader_visibility_vertex
shader_visibility_hull
shader_visibility_domain
shader_visibility_geometry
shader_visibility_pixel
shader_visibility_amplification
shader_visibility_mesh
)cc";

TrivialModuleLoader ModLoader;
Expand Down

0 comments on commit dc784ff

Please sign in to comment.