diff options
| author | jsmall-nvidia <jsmall@nvidia.com> | 2019-06-04 15:10:26 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-06-04 15:10:26 -0400 |
| commit | 0d9071bd1511ee2cb7d6ba6ce9e250d25613ddca (patch) | |
| tree | 410558e5bae917d027209f5807f8633db8291069 /source/slang/slang-emit.cpp | |
| parent | 0a8f7ae6b899718150f359a378e53bfedd090090 (diff) | |
Review improvements on #971: WIP: Support for other source target languages (#974)
* * Added SourceStyle to CLikeSourceEmitter, to limit cases to actual target types.
* Made Impl methods _ prefixed
* Small tidyup
* * SourceStream -> SourceWriter
* use slang-emit- prefix on SourceWriter file
* * Remove EmitContext -> merge into CLikeSourceEmitter
* slang-c-like-source-emitter -> slang-emit-source.cpp
* ExtensionUsageTracker -> GLSLExtensionTracker
slang-extension-usage-tracker.cpp/.h -> slang-emit-glsl-extension-tracker.cpp/.h
* emit-source.cpp.h -> emit-c-like.cpp/.h
* Small fix to move where some _ prefixed functions are declared in CLikeSourceEmitter.
Diffstat (limited to 'source/slang/slang-emit.cpp')
| -rw-r--r-- | source/slang/slang-emit.cpp | 44 |
1 files changed, 21 insertions, 23 deletions
diff --git a/source/slang/slang-emit.cpp b/source/slang/slang-emit.cpp index 67b57660a..3cacb2d90 100644 --- a/source/slang/slang-emit.cpp +++ b/source/slang/slang-emit.cpp @@ -23,10 +23,9 @@ #include "slang-type-layout.h" #include "slang-visitor.h" -#include "slang-source-stream.h" -#include "slang-emit-context.h" +#include "slang-emit-source-writer.h" -#include "slang-c-like-source-emitter.h" +#include "slang-emit-c-like.h" #include <assert.h> @@ -172,32 +171,31 @@ String emitEntryPoint( lineDirectiveMode = LineDirectiveMode::GLSL; } - SourceStream sourceStream(compileRequest->getSourceManager(), lineDirectiveMode ); + SourceWriter sourceWriter(compileRequest->getSourceManager(), lineDirectiveMode ); - EmitContext emitContext; - emitContext.compileRequest = compileRequest; - emitContext.target = target; - emitContext.entryPoint = entryPoint; - emitContext.effectiveProfile = getEffectiveProfile(entryPoint, targetRequest); - emitContext.stream = &sourceStream; + CLikeSourceEmitter::CInfo cinfo; + + cinfo.compileRequest = compileRequest; + cinfo.target = target; + cinfo.entryPoint = entryPoint; + cinfo.effectiveProfile = getEffectiveProfile(entryPoint, targetRequest); + cinfo.sourceWriter = &sourceWriter; if (entryPoint && programLayout) { - emitContext.entryPointLayout = findEntryPointLayout( - programLayout, - entryPoint); + cinfo.entryPointLayout = findEntryPointLayout(programLayout, entryPoint); } - emitContext.programLayout = programLayout; + cinfo.programLayout = programLayout; // Layout information for the global scope is either an ordinary // `struct` in the common case, or a constant buffer in the case // where there were global-scope uniforms. StructTypeLayout* globalStructLayout = programLayout ? getGlobalStructLayout(programLayout) : nullptr; - emitContext.globalStructLayout = globalStructLayout; + cinfo.globalStructLayout = globalStructLayout; - CLikeSourceEmitter sourceEmitter(&emitContext); + CLikeSourceEmitter sourceEmitter(cinfo); { auto session = targetRequest->getSession(); @@ -423,7 +421,7 @@ String emitEntryPoint( irModule, irEntryPoint, compileRequest->getSink(), - &emitContext.extensionUsageTracker); + sourceEmitter.getGLSLExtensionTracker()); #if 0 dumpIRIfEnabled(compileRequest, irModule, "GLSL LEGALIZED"); @@ -476,14 +474,14 @@ String emitEntryPoint( case Stage::RayGeneration: if( target == CodeGenTarget::GLSL ) { - emitContext.extensionUsageTracker.requireGLSLExtension("GL_NV_ray_tracing"); - emitContext.extensionUsageTracker.requireGLSLVersion(ProfileVersion::GLSL_460); + sourceEmitter.getGLSLExtensionTracker()->requireExtension("GL_NV_ray_tracing"); + sourceEmitter.getGLSLExtensionTracker()->requireVersion(ProfileVersion::GLSL_460); } break; } - String code = sourceStream.getContent(); - sourceStream.clearContent(); + String code = sourceWriter.getContent(); + sourceWriter.clearContent(); // Now that we've emitted the code for all the declarations in the file, // it is time to stitch together the final output. @@ -493,12 +491,12 @@ String emitEntryPoint( sourceEmitter.emitLayoutDirectives(targetRequest); - String prefix = sourceStream.getContent(); + String prefix = sourceWriter.getContent(); StringBuilder finalResultBuilder; finalResultBuilder << prefix; - finalResultBuilder << emitContext.extensionUsageTracker.getGLSLExtensionRequireLines(); + finalResultBuilder << sourceEmitter.getGLSLExtensionTracker()->getExtensionRequireLines(); finalResultBuilder << code; |
