File tree Expand file tree Collapse file tree 1 file changed +26
-0
lines changed Expand file tree Collapse file tree 1 file changed +26
-0
lines changed Original file line number Diff line number Diff line change @@ -1139,6 +1139,32 @@ bool SemaHLSL::handleRootSignatureDecl(HLSLRootSignatureDecl *D,
1139
1139
Info.Visibility = Sampler->Visibility ;
1140
1140
Infos.push_back (Info);
1141
1141
}
1142
+ if (const auto *Clause =
1143
+ std::get_if<llvm::hlsl::rootsig::DescriptorTableClause>(&Elem)) {
1144
+ RangeInfo Info;
1145
+ Info.LowerBound = Clause->Reg .Number ;
1146
+ assert (0 < Clause->NumDescriptors && " Verified as part of TODO(#129940)" );
1147
+ Info.UpperBound =
1148
+ Clause->NumDescriptors == RangeInfo::Unbounded
1149
+ ? RangeInfo::Unbounded
1150
+ : Info.LowerBound + Clause->NumDescriptors - 1 ; // use inclusive ranges []
1151
+
1152
+ Info.Class = Clause->Type ;
1153
+ Info.Space = Clause->Space ;
1154
+ // Note: Clause does not hold the visibility this will need to
1155
+ Infos.push_back (Info);
1156
+ }
1157
+ if (const auto *Table =
1158
+ std::get_if<llvm::hlsl::rootsig::DescriptorTable>(&Elem)) {
1159
+ // Table holds the Visibility of all owned Clauses in Table, so iterate
1160
+ // owned Clauses and update their corresponding RangeInfo
1161
+ assert (Table->NumClauses <= Infos.size () && " RootElement" );
1162
+ // The last Table->NumClauses elements of Infos are the owned Clauses
1163
+ // generated RangeInfo
1164
+ auto TableInfos = MutableArrayRef<RangeInfo>(Infos).take_back (Table->NumClauses );
1165
+ for (RangeInfo &Info : TableInfos)
1166
+ Info.Visibility = Table->Visibility ;
1167
+ }
1142
1168
}
1143
1169
1144
1170
// 2. Sort the RangeInfo's by their GroupT to form groupings
You can’t perform that action at this time.
0 commit comments