@@ -322,23 +322,23 @@ Error MetadataParser::parseDescriptorRange(mcdxbc::DescriptorTable &Table,
322322 if (RangeDescriptorNode->getNumOperands () != 6 )
323323 return make_error<InvalidRSMetadataFormat>(" Descriptor Range" );
324324
325- dxbc::RTS0::v2 ::DescriptorRange Range;
325+ mcdxbc ::DescriptorRange Range;
326326
327327 std::optional<StringRef> ElementText =
328328 extractMdStringValue (RangeDescriptorNode, 0 );
329329
330330 if (!ElementText.has_value ())
331331 return make_error<InvalidRSMetadataFormat>(" Descriptor Range" );
332332
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
342342 return make_error<GenericRSMetadataError>(" Invalid Descriptor Range type." ,
343343 RangeDescriptorNode);
344344
@@ -568,13 +568,7 @@ Error MetadataParser::validateRootSignature(
568568 case dxbc::RootParameterType::DescriptorTable: {
569569 const mcdxbc::DescriptorTable &Table =
570570 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) {
578572 if (!hlsl::rootsig::verifyRegisterSpace (Range.RegisterSpace ))
579573 DeferredErrs =
580574 joinErrors (std::move (DeferredErrs),
@@ -588,7 +582,8 @@ Error MetadataParser::validateRootSignature(
588582 " NumDescriptors" , Range.NumDescriptors ));
589583
590584 if (!hlsl::rootsig::verifyDescriptorRangeFlag (
591- RSD.Version , Range.RangeType , Range.Flags ))
585+ RSD.Version , Range.RangeType ,
586+ dxbc::DescriptorRangeFlags (Range.Flags )))
592587 DeferredErrs =
593588 joinErrors (std::move (DeferredErrs),
594589 make_error<RootSignatureValidationError<uint32_t >>(
0 commit comments