Skip to content

Commit e616dde

Browse files
committed
update setDefaultFlags
1 parent 0ceb0c3 commit e616dde

File tree

7 files changed

+285
-41
lines changed

7 files changed

+285
-41
lines changed

clang/include/clang/Parse/ParseHLSLRootSignature.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ namespace hlsl {
2727

2828
class RootSignatureParser {
2929
public:
30-
RootSignatureParser(SmallVector<llvm::hlsl::rootsig::RootElement> &Elements,
30+
RootSignatureParser(llvm::dxbc::RootSignatureVersion Version,
31+
SmallVector<llvm::hlsl::rootsig::RootElement> &Elements,
3132
RootSignatureLexer &Lexer, clang::Preprocessor &PP);
3233

3334
/// Consumes tokens from the Lexer and constructs the in-memory
@@ -187,6 +188,7 @@ class RootSignatureParser {
187188
bool tryConsumeExpectedToken(ArrayRef<RootSignatureToken::Kind> Expected);
188189

189190
private:
191+
llvm::dxbc::RootSignatureVersion Version;
190192
SmallVector<llvm::hlsl::rootsig::RootElement> &Elements;
191193
RootSignatureLexer &Lexer;
192194

clang/lib/Parse/ParseDeclCXX.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4956,7 +4956,8 @@ void Parser::ParseHLSLRootSignatureAttributeArgs(ParsedAttributes &Attrs) {
49564956
// Invoke the root signature parser to construct the in-memory constructs
49574957
hlsl::RootSignatureLexer Lexer(Signature, SignatureLoc);
49584958
SmallVector<llvm::hlsl::rootsig::RootElement> RootElements;
4959-
hlsl::RootSignatureParser Parser(RootElements, Lexer, PP);
4959+
hlsl::RootSignatureParser Parser(getLangOpts().HLSLRootSigVer, RootElements,
4960+
Lexer, PP);
49604961
if (Parser.parse()) {
49614962
T.consumeClose();
49624963
return;

clang/lib/Parse/ParseHLSLRootSignature.cpp

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,12 @@ namespace hlsl {
1717

1818
using TokenKind = RootSignatureToken::Kind;
1919

20-
RootSignatureParser::RootSignatureParser(SmallVector<RootElement> &Elements,
21-
RootSignatureLexer &Lexer,
22-
Preprocessor &PP)
23-
: Elements(Elements), Lexer(Lexer), PP(PP), CurToken(SourceLocation()) {}
20+
RootSignatureParser::RootSignatureParser(
21+
llvm::dxbc::RootSignatureVersion Version,
22+
SmallVector<RootElement> &Elements, RootSignatureLexer &Lexer,
23+
Preprocessor &PP)
24+
: Version(Version), Elements(Elements), Lexer(Lexer), PP(PP),
25+
CurToken(SourceLocation()) {}
2426

2527
bool RootSignatureParser::parse() {
2628
// Iterate as many RootElements as possible
@@ -199,7 +201,7 @@ std::optional<RootDescriptor> RootSignatureParser::parseRootDescriptor() {
199201
ExpectedReg = TokenKind::uReg;
200202
break;
201203
}
202-
Descriptor.setDefaultFlags();
204+
Descriptor.setDefaultFlags(Version);
203205

204206
auto Params = parseRootDescriptorParams(ExpectedReg);
205207
if (!Params.has_value())
@@ -318,7 +320,7 @@ RootSignatureParser::parseDescriptorTableClause() {
318320
ExpectedReg = TokenKind::sReg;
319321
break;
320322
}
321-
Clause.setDefaultFlags();
323+
Clause.setDefaultFlags(Version);
322324

323325
auto Params = parseDescriptorTableClauseParams(ExpectedReg);
324326
if (!Params.has_value())

clang/test/AST/HLSL/RootSignatures-AST.hlsl

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,17 @@
3737
// CHECK-SAME: space = 1, visibility = All, flags = DataStatic
3838
// CHECK-SAME: ),
3939
// CHECK-SAME: RootSRV(t0,
40-
// CHECK-SAME: space = 0, visibility = All, flags = DataStaticWhileSetAtExecute
40+
// CHECK-SAME: space = 0, visibility = All,
41+
// CHECK-V1_0-SAME: flags = DataVolatile
42+
// CHECK-V1_1-SAME: flags = DataStaticWhileSetAtExecute
4143
// CHECK-SAME: ),
4244
// CHECK-SAME: RootUAV(
4345
// CHECK-SAME: u0, space = 0, visibility = All, flags = DataVolatile
4446
// CHECK-SAME: ),
4547
// CHECK-SAME: CBV(
46-
// CHECK-SAME: b1, numDescriptors = 1, space = 0, offset = DescriptorTableOffsetAppend, flags = DataStaticWhileSetAtExecute
48+
// CHECK-SAME: b1, numDescriptors = 1, space = 0, offset = DescriptorTableOffsetAppend,
49+
// CHECK-V1_0-SAME: flags = DescriptorsVolatile | DataVolatile
50+
// CHECK-V1_1-SAME: flags = DataStaticWhileSetAtExecute
4751
// CHECK-SAME: ),
4852
// CHECK-SAME: SRV(
4953
// CHECK-SAME: t1, numDescriptors = 8, space = 0, offset = DescriptorTableOffsetAppend, flags = DescriptorsVolatile
@@ -55,7 +59,9 @@
5559
// CHECK-SAME: numClauses = 3, visibility = All
5660
// CHECK-SAME: ),
5761
// CHECK-SAME: Sampler(
58-
// CHECK-SAME: s0, numDescriptors = 4, space = 1, offset = DescriptorTableOffsetAppend, flags = None
62+
// CHECK-SAME: s0, numDescriptors = 4, space = 1, offset = DescriptorTableOffsetAppend,
63+
// CHECK-V1_1-SAME: flags = DescriptorsVolatile
64+
// CHECK-V1_1-SAME: flags = None
5965
// CHECK-SAME: ),
6066
// CHECK-SAME: DescriptorTable(
6167
// CHECK-SAME: numClauses = 1, visibility = All

0 commit comments

Comments
 (0)