Skip to content

Commit eec1d0e

Browse files
committed
add space optional parameter
- demonstrate can specify in any order
1 parent 5175c32 commit eec1d0e

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
@@ -323,6 +323,7 @@ bool RootSignatureParser::ParseDescriptorTableClause() {
323323
// Parse optional paramaters
324324
llvm::SmallDenseMap<TokenKind, ParamType> RefMap = {
325325
{TokenKind::kw_numDescriptors, &Clause.NumDescriptors},
326+
{TokenKind::kw_space, &Clause.Space},
326327
};
327328
if (ParseOptionalParams({RefMap}))
328329
return true;

clang/unittests/Parse/ParseHLSLRootSignatureTest.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -339,8 +339,8 @@ TEST_F(ParseHLSLRootSignatureTest, ValidParseDTClausesTest) {
339339
const llvm::StringLiteral Source = R"cc(
340340
DescriptorTable(
341341
CBV(b0),
342-
SRV(t42, numDescriptors = +4),
343-
Sampler(s987),
342+
SRV(t42, space = 3, numDescriptors = +4),
343+
Sampler(s987, space = 2),
344344
UAV(u987234)
345345
),
346346
DescriptorTable()
@@ -365,6 +365,7 @@ TEST_F(ParseHLSLRootSignatureTest, ValidParseDTClausesTest) {
365365
RegisterType::BReg);
366366
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).Register.Number, (uint32_t)0);
367367
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).NumDescriptors, (uint32_t)1);
368+
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).Space, (uint32_t)0);
368369

369370
Elem = Elements[1];
370371
ASSERT_TRUE(std::holds_alternative<DescriptorTableClause>(Elem));
@@ -374,6 +375,7 @@ TEST_F(ParseHLSLRootSignatureTest, ValidParseDTClausesTest) {
374375
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).Register.Number,
375376
(uint32_t)42);
376377
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).NumDescriptors, (uint32_t)4);
378+
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).Space, (uint32_t)3);
377379

378380
Elem = Elements[2];
379381
ASSERT_TRUE(std::holds_alternative<DescriptorTableClause>(Elem));
@@ -383,6 +385,7 @@ TEST_F(ParseHLSLRootSignatureTest, ValidParseDTClausesTest) {
383385
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).Register.Number,
384386
(uint32_t)987);
385387
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).NumDescriptors, (uint32_t)1);
388+
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).Space, (uint32_t)2);
386389

387390
Elem = Elements[3];
388391
ASSERT_TRUE(std::holds_alternative<DescriptorTableClause>(Elem));
@@ -392,6 +395,7 @@ TEST_F(ParseHLSLRootSignatureTest, ValidParseDTClausesTest) {
392395
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).Register.Number,
393396
(uint32_t)987234);
394397
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).NumDescriptors, (uint32_t)1);
398+
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).Space, (uint32_t)0);
395399

396400
Elem = Elements[4];
397401
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)