diff options
Diffstat (limited to 'Source/ThirdParty/ANGLE/src/compiler/TranslatorGLSL.cpp')
-rw-r--r-- | Source/ThirdParty/ANGLE/src/compiler/TranslatorGLSL.cpp | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/Source/ThirdParty/ANGLE/src/compiler/TranslatorGLSL.cpp b/Source/ThirdParty/ANGLE/src/compiler/TranslatorGLSL.cpp index 7b8d903..7a63ae1 100644 --- a/Source/ThirdParty/ANGLE/src/compiler/TranslatorGLSL.cpp +++ b/Source/ThirdParty/ANGLE/src/compiler/TranslatorGLSL.cpp @@ -7,14 +7,31 @@ #include "compiler/TranslatorGLSL.h" #include "compiler/OutputGLSL.h" +#include "compiler/VersionGLSL.h" -TranslatorGLSL::TranslatorGLSL(EShLanguage lang, EShSpec spec) - : TCompiler(lang, spec) { +static void writeVersion(ShShaderType type, TIntermNode* root, + TInfoSinkBase& sink) { + TVersionGLSL versionGLSL(type); + root->traverse(&versionGLSL); + int version = versionGLSL.getVersion(); + // We need to write version directive only if it is greater than 110. + // If there is no version directive in the shader, 110 is implied. + if (version > 110) { + sink << "#version " << version << "\n"; + } } -bool TranslatorGLSL::compile(TIntermNode* root) { - TOutputGLSL outputGLSL(infoSink.obj); - root->traverse(&outputGLSL); +TranslatorGLSL::TranslatorGLSL(ShShaderType type, ShShaderSpec spec) + : TCompiler(type, spec) { +} + +void TranslatorGLSL::translate(TIntermNode* root) { + TInfoSinkBase& sink = getInfoSink().obj; - return true; + // Write GLSL version. + writeVersion(getShaderType(), root, sink); + + // Write translated shader. + TOutputGLSL outputGLSL(sink); + root->traverse(&outputGLSL); } |