@@ -164,7 +164,7 @@ static bool validate(LLVMContext *Ctx, const mcdxbc::RootSignatureDesc &RSD) {
164164 return reportValueError (Ctx, " RootFlags" , RSD.Flags );
165165 }
166166
167- for (const auto &P : RSD.Parameters ) {
167+ for (const mcdxbc::RootParameter &P : RSD.Parameters ) {
168168 if (!dxbc::isValidShaderVisibility (P.Header .ShaderVisibility ))
169169 return reportValueError (Ctx, " ShaderVisibility" ,
170170 P.Header .ShaderVisibility );
@@ -242,9 +242,9 @@ analyzeModule(Module &M) {
242242
243243 mcdxbc::RootSignatureDesc RSD;
244244 // Clang emits the root signature data in dxcontainer following a specific
245- // sequence. First the header, then the root parameters. The header is
246- // always 24 bytes long, this is why we have 24 here .
247- RSD.RootParameterOffset = 24U ;
245+ // sequence. First the header, then the root parameters. So the header
246+ // offset will always equal to the header size .
247+ RSD.RootParameterOffset = sizeof (dxbc::RootSignatureHeader) ;
248248
249249 if (parse (Ctx, RSD, RootElementListNode) || validate (Ctx, RSD)) {
250250 return RSDMap;
@@ -271,7 +271,6 @@ PreservedAnalyses RootSignatureAnalysisPrinter::run(Module &M,
271271 SmallDenseMap<const Function *, mcdxbc::RootSignatureDesc> &RSDMap =
272272 AM.getResult <RootSignatureAnalysis>(M);
273273
274- const size_t RSHSize = sizeof (dxbc::RootSignatureHeader);
275274 OS << " Root Signature Definitions"
276275 << " \n " ;
277276 uint8_t Space = 0 ;
@@ -286,13 +285,9 @@ PreservedAnalyses RootSignatureAnalysisPrinter::run(Module &M,
286285 Space++;
287286 OS << indent (Space) << " Flags: " << format_hex (RS.Flags , 8 ) << " \n " ;
288287 OS << indent (Space) << " Version: " << RS.Version << " \n " ;
289- OS << indent (Space) << " NumParameters: " << RS.Parameters .size () << " \n " ;
290288 OS << indent (Space) << " RootParametersOffset: " << RS.RootParameterOffset
291289 << " \n " ;
292- OS << indent (Space) << " NumStaticSamplers: " << 0 << " \n " ;
293- OS << indent (Space) << " StaticSamplersOffset: " << RS.StaticSamplersOffset
294- << " \n " ;
295-
290+ OS << indent (Space) << " NumParameters: " << RS.Parameters .size () << " \n " ;
296291 Space++;
297292 for (auto const &P : RS.Parameters ) {
298293 OS << indent (Space) << " - Parameter Type: " << P.Header .ParameterType
@@ -311,6 +306,9 @@ PreservedAnalyses RootSignatureAnalysisPrinter::run(Module &M,
311306 }
312307 }
313308 Space--;
309+ OS << indent (Space) << " NumStaticSamplers: " << 0 << " \n " ;
310+ OS << indent (Space) << " StaticSamplersOffset: " << RS.StaticSamplersOffset
311+ << " \n " ;
314312
315313 Space--;
316314 // end root signature header
0 commit comments