Skip to content

Commit 5545d2a

Browse files
committed
add space optional parameter
- demonstrate can specify in any order
1 parent 51d5304 commit 5545d2a

File tree

3 files changed

+8
-2
lines changed

3 files changed

+8
-2
lines changed

clang/lib/Parse/ParseHLSLRootSignature.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,7 @@ bool RootSignatureParser::ParseDescriptorTableClause() {
328328
// Parse optional paramaters
329329
llvm::SmallDenseMap<TokenKind, rs::ParamType> RefMap = {
330330
{TokenKind::kw_numDescriptors, &Clause.NumDescriptors},
331+
{TokenKind::kw_space, &Clause.Space},
331332
};
332333
if (ParseOptionalParams({RefMap}))
333334
return true;

clang/unittests/Parse/ParseHLSLRootSignatureTest.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -309,8 +309,8 @@ TEST_F(ParseHLSLRootSignatureTest, ValidParseDTClausesTest) {
309309
const llvm::StringLiteral Source = R"cc(
310310
DescriptorTable(
311311
CBV(b0),
312-
SRV(t42, numDescriptors = 4),
313-
Sampler(s987),
312+
SRV(t42, space = 3, numDescriptors = 4),
313+
Sampler(s987, space = 2),
314314
UAV(u987234)
315315
),
316316
DescriptorTable()
@@ -339,6 +339,7 @@ TEST_F(ParseHLSLRootSignatureTest, ValidParseDTClausesTest) {
339339
RegisterType::BReg);
340340
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).Register.Number, (uint32_t)0);
341341
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).NumDescriptors, (uint32_t)1);
342+
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).Space, (uint32_t)0);
342343

343344
Elem = Elements[1];
344345
ASSERT_TRUE(std::holds_alternative<DescriptorTableClause>(Elem));
@@ -348,6 +349,7 @@ TEST_F(ParseHLSLRootSignatureTest, ValidParseDTClausesTest) {
348349
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).Register.Number,
349350
(uint32_t)42);
350351
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).NumDescriptors, (uint32_t)4);
352+
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).Space, (uint32_t)3);
351353

352354
Elem = Elements[2];
353355
ASSERT_TRUE(std::holds_alternative<DescriptorTableClause>(Elem));
@@ -357,6 +359,7 @@ TEST_F(ParseHLSLRootSignatureTest, ValidParseDTClausesTest) {
357359
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).Register.Number,
358360
(uint32_t)987);
359361
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).NumDescriptors, (uint32_t)1);
362+
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).Space, (uint32_t)2);
360363

361364
Elem = Elements[3];
362365
ASSERT_TRUE(std::holds_alternative<DescriptorTableClause>(Elem));
@@ -366,6 +369,7 @@ TEST_F(ParseHLSLRootSignatureTest, ValidParseDTClausesTest) {
366369
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).Register.Number,
367370
(uint32_t)987234);
368371
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).NumDescriptors, (uint32_t)1);
372+
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).Space, (uint32_t)0);
369373

370374
Elem = Elements[4];
371375
ASSERT_TRUE(std::holds_alternative<DescriptorTable>(Elem));

llvm/include/llvm/Frontend/HLSL/HLSLRootSignature.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ struct DescriptorTableClause {
4141
ClauseType Type;
4242
Register Register;
4343
uint32_t NumDescriptors = 1;
44+
uint32_t Space = 0;
4445
};
4546

4647
// Models RootElement : DescriptorTable | DescriptorTableClause

0 commit comments

Comments
 (0)