diff options
Diffstat (limited to 'source/slang/slang-emit.cpp')
| -rw-r--r-- | source/slang/slang-emit.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/source/slang/slang-emit.cpp b/source/slang/slang-emit.cpp index d231acf14..a128644d3 100644 --- a/source/slang/slang-emit.cpp +++ b/source/slang/slang-emit.cpp @@ -25,6 +25,7 @@ #include "slang-ir-lower-tuple-types.h" #include "slang-ir-lower-bit-cast.h" #include "slang-ir-lower-reinterpret.h" +#include "slang-ir-metadata.h" #include "slang-ir-optix-entry-point-uniforms.h" #include "slang-ir-restructure.h" #include "slang-ir-restructure-scoping.h" @@ -818,11 +819,15 @@ Result linkAndOptimizeIR( #endif validateIRModuleIfEnabled(codeGenContext, irModule); + outLinkedIR.metadata = new PostEmitMetadata(); + collectMetadata(irModule, *outLinkedIR.metadata); + return SLANG_OK; } SlangResult CodeGenContext::emitEntryPointsSourceFromIR( - String& outSource) + String& outSource, + RefPtr<PostEmitMetadata>& outMetadata) { outSource = String(); @@ -927,6 +932,8 @@ SlangResult CodeGenContext::emitEntryPointsSourceFromIR( auto irModule = linkedIR.module; + outMetadata = linkedIR.metadata; + // After all of the required optimization and legalization // passes have been performed, we can emit target code from // the IR module. @@ -1007,7 +1014,8 @@ SlangResult emitSPIRVFromIR( SlangResult emitSPIRVForEntryPointsDirectly( CodeGenContext* codeGenContext, - List<uint8_t>& spirvOut) + List<uint8_t>& spirvOut, + RefPtr<PostEmitMetadata>& outMetadata) { // Outside because we want to keep IR in scope whilst we are processing emits LinkedIR linkedIR; @@ -1022,6 +1030,8 @@ SlangResult emitSPIRVForEntryPointsDirectly( emitSPIRVFromIR(codeGenContext, irModule, irEntryPoints, spirvOut); + outMetadata = linkedIR.metadata; + return SLANG_OK; } |
