@@ -322,23 +322,23 @@ Error MetadataParser::parseDescriptorRange(mcdxbc::DescriptorTable &Table,
322
322
if (RangeDescriptorNode->getNumOperands () != 6 )
323
323
return make_error<InvalidRSMetadataFormat>(" Descriptor Range" );
324
324
325
- dxbc::RTS0::v2 ::DescriptorRange Range;
325
+ mcdxbc ::DescriptorRange Range;
326
326
327
327
std::optional<StringRef> ElementText =
328
328
extractMdStringValue (RangeDescriptorNode, 0 );
329
329
330
330
if (!ElementText.has_value ())
331
331
return make_error<InvalidRSMetadataFormat>(" Descriptor Range" );
332
332
333
- Range. RangeType =
334
- StringSwitch< uint32_t >(*ElementText)
335
- . Case ( " CBV " , to_underlying (dxbc::DescriptorRangeType::CBV) )
336
- . Case ( " SRV " , to_underlying (dxbc::DescriptorRangeType ::SRV))
337
- . Case ( " UAV" , to_underlying (dxbc::DescriptorRangeType::UAV) )
338
- . Case ( " Sampler " , to_underlying (dxbc::DescriptorRangeType::Sampler))
339
- . Default (~ 0U );
340
-
341
- if (Range. RangeType == ~ 0U )
333
+ if (*ElementText == " CBV " )
334
+ Range. RangeType = dxil::ResourceClass::CBuffer;
335
+ else if (*ElementText == " SRV " )
336
+ Range. RangeType = dxil::ResourceClass ::SRV;
337
+ else if (*ElementText == " UAV" )
338
+ Range. RangeType = dxil::ResourceClass::UAV;
339
+ else if (*ElementText == " Sampler " )
340
+ Range. RangeType = dxil::ResourceClass::Sampler;
341
+ else
342
342
return make_error<GenericRSMetadataError>(" Invalid Descriptor Range type." ,
343
343
RangeDescriptorNode);
344
344
@@ -568,13 +568,7 @@ Error MetadataParser::validateRootSignature(
568
568
case dxbc::RootParameterType::DescriptorTable: {
569
569
const mcdxbc::DescriptorTable &Table =
570
570
RSD.ParametersContainer .getDescriptorTable (Info.Location );
571
- for (const dxbc::RTS0::v2::DescriptorRange &Range : Table) {
572
- if (!hlsl::rootsig::verifyRangeType (Range.RangeType ))
573
- DeferredErrs =
574
- joinErrors (std::move (DeferredErrs),
575
- make_error<RootSignatureValidationError<uint32_t >>(
576
- " RangeType" , Range.RangeType ));
577
-
571
+ for (const mcdxbc::DescriptorRange &Range : Table) {
578
572
if (!hlsl::rootsig::verifyRegisterSpace (Range.RegisterSpace ))
579
573
DeferredErrs =
580
574
joinErrors (std::move (DeferredErrs),
@@ -588,7 +582,8 @@ Error MetadataParser::validateRootSignature(
588
582
" NumDescriptors" , Range.NumDescriptors ));
589
583
590
584
if (!hlsl::rootsig::verifyDescriptorRangeFlag (
591
- RSD.Version , Range.RangeType , Range.Flags ))
585
+ RSD.Version , Range.RangeType ,
586
+ dxbc::DescriptorRangeFlags (Range.Flags )))
592
587
DeferredErrs =
593
588
joinErrors (std::move (DeferredErrs),
594
589
make_error<RootSignatureValidationError<uint32_t >>(
0 commit comments