@@ -35,27 +35,48 @@ DXContainerYAML::RootSignatureYamlDesc::RootSignatureYamlDesc(
3535 NumStaticSamplers (Data.getNumStaticSamplers()),
3636 StaticSamplersOffset(Data.getStaticSamplersOffset()) {
3737 uint32_t Flags = Data.getFlags ();
38- for (const auto &PH : Data.param_header ()) {
38+ for (const auto &PH : Data.param_headers ()) {
3939
4040 RootParameterYamlDesc NewP;
4141 NewP.Offset = PH.ParameterOffset ;
42- NewP.Type = PH.ParameterType ;
43- NewP.Visibility = PH.ShaderVisibility ;
4442
45- llvm::Expected<object::DirectX::RootParameterView> ParamView =
43+ llvm::Expected<dxbc::RootParameterType> TypeOrErr =
44+ dxbc::safeParseParameterType (PH.ParameterType );
45+ if (Error E = TypeOrErr.takeError ()) {
46+ llvm::errs () << " Error: " << E << " \n " ;
47+ continue ;
48+ }
49+
50+ NewP.Type = TypeOrErr.get ();
51+
52+ llvm::Expected<dxbc::ShaderVisibility> VisibilityOrErr =
53+ dxbc::safeParseShaderVisibility (PH.ShaderVisibility );
54+ if (Error E = VisibilityOrErr.takeError ()) {
55+ llvm::errs () << " Error: " << E << " \n " ;
56+ continue ;
57+ }
58+ NewP.Visibility = VisibilityOrErr.get ();
59+
60+ llvm::Expected<object::DirectX::RootParameterView> ParamViewOrErr =
4661 Data.getParameter (PH);
47- if (!ParamView)
48- llvm::errs () << " Error: " << ParamView.takeError () << " \n " ;
49- auto PV = *ParamView;
50-
51- if (auto *RCV = dyn_cast<object::DirectX::RootConstantView>(&PV)) {
52- auto Constants = RCV->read ();
53- if (!Constants)
54- llvm::errs () << " Error: " << Constants.takeError () << " \n " ;
55-
56- NewP.Constants .Num32BitValues = Constants->Num32BitValues ;
57- NewP.Constants .ShaderRegister = Constants->ShaderRegister ;
58- NewP.Constants .RegisterSpace = Constants->RegisterSpace ;
62+ if (Error E = ParamViewOrErr.takeError ()) {
63+ llvm::errs () << " Error: " << E << " \n " ;
64+ continue ;
65+ }
66+ object::DirectX::RootParameterView ParamView = ParamViewOrErr.get ();
67+
68+ if (auto *RCV = dyn_cast<object::DirectX::RootConstantView>(&ParamView)) {
69+ llvm::Expected<dxbc::RootConstants> ConstantsOrErr = RCV->read ();
70+ if (Error E = ConstantsOrErr.takeError ()) {
71+ llvm::errs () << " Error: " << E << " \n " ;
72+ continue ;
73+ }
74+
75+ auto Constants = *ConstantsOrErr;
76+
77+ NewP.Constants .Num32BitValues = Constants.Num32BitValues ;
78+ NewP.Constants .ShaderRegister = Constants.ShaderRegister ;
79+ NewP.Constants .RegisterSpace = Constants.RegisterSpace ;
5980 }
6081 Parameters.push_back (NewP);
6182 }
0 commit comments