@@ -651,8 +651,11 @@ Error MetadataParser::validateRootSignature(
651651 " RegisterSpace" , Descriptor.RegisterSpace ));
652652
653653 if (RSD.Version > 1 ) {
654- if (!hlsl::rootsig::verifyRootDescriptorFlag (RSD.Version ,
655- Descriptor.Flags ))
654+ bool IsValidFlag =
655+ dxbc::isValidRootDesciptorFlags (Descriptor.Flags ) &&
656+ hlsl::rootsig::verifyRootDescriptorFlag (
657+ RSD.Version , dxbc::RootDescriptorFlags (Descriptor.Flags ));
658+ if (!IsValidFlag)
656659 DeferredErrs =
657660 joinErrors (std::move (DeferredErrs),
658661 make_error<RootSignatureValidationError<uint32_t >>(
@@ -676,9 +679,11 @@ Error MetadataParser::validateRootSignature(
676679 make_error<RootSignatureValidationError<uint32_t >>(
677680 " NumDescriptors" , Range.NumDescriptors ));
678681
679- if (!hlsl::rootsig::verifyDescriptorRangeFlag (
680- RSD.Version , Range.RangeType ,
681- dxbc::DescriptorRangeFlags (Range.Flags )))
682+ bool IsValidFlag = dxbc::isValidDescriptorRangeFlags (Range.Flags ) &&
683+ hlsl::rootsig::verifyDescriptorRangeFlag (
684+ RSD.Version , Range.RangeType ,
685+ dxbc::DescriptorRangeFlags (Range.Flags ));
686+ if (!IsValidFlag)
682687 DeferredErrs =
683688 joinErrors (std::move (DeferredErrs),
684689 make_error<RootSignatureValidationError<uint32_t >>(
@@ -731,8 +736,11 @@ Error MetadataParser::validateRootSignature(
731736 joinErrors (std::move (DeferredErrs),
732737 make_error<RootSignatureValidationError<uint32_t >>(
733738 " RegisterSpace" , Sampler.RegisterSpace ));
734-
735- if (!hlsl::rootsig::verifyStaticSamplerFlags (RSD.Version , Sampler.Flags ))
739+ bool IsValidFlag =
740+ dxbc::isValidStaticSamplerFlags (Sampler.Flags ) &&
741+ hlsl::rootsig::verifyStaticSamplerFlags (
742+ RSD.Version , dxbc::StaticSamplerFlags (Sampler.Flags ));
743+ if (!IsValidFlag)
736744 DeferredErrs =
737745 joinErrors (std::move (DeferredErrs),
738746 make_error<RootSignatureValidationError<uint32_t >>(
0 commit comments