From 0d9071bd1511ee2cb7d6ba6ce9e250d25613ddca Mon Sep 17 00:00:00 2001 From: jsmall-nvidia Date: Tue, 4 Jun 2019 15:10:26 -0400 Subject: 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. --- source/slang/slang-emit.cpp | 44 +++++++++++++++++++++----------------------- 1 file changed, 21 insertions(+), 23 deletions(-) (limited to 'source/slang/slang-emit.cpp') 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 @@ -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; -- cgit v1.2.3