diff options
| author | Alexey Panteleev <alpanteleev@nvidia.com> | 2022-05-18 10:57:37 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-05-18 10:57:37 -0700 |
| commit | 69cb6e8f300d77e74bd2c7dfe15d12e10b38f512 (patch) | |
| tree | c2d23f2883acb28407106a096b55c64111f098b1 /source/slang/slang-emit.cpp | |
| parent | 1148564b9cdbbc8fec4fbecf65b0af60aa6af344 (diff) | |
Support for querying which parameters are used in emitted code (#2239)
See https://github.com/shader-slang/slang/issues/2213
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; } |
