Edit

kc3-lang/angle/src/compiler/TranslatorGLSL.cpp

Branch :

  • Show log

    Commit

  • Author : Jamie Madill
    Date : 2013-09-12 12:07:42
    Hash : 02f20dd8
    Message : Fix compile error regressions in OutputGLSL and OutputESSL. These were broken back with the symbol table changes. TRAC #23857 Signed-off-by: Nicolas Capens Signed-off-by: Shannon Woods

  • src/compiler/TranslatorGLSL.cpp
  • //
    // Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved.
    // Use of this source code is governed by a BSD-style license that can be
    // found in the LICENSE file.
    //
    
    #include "compiler/TranslatorGLSL.h"
    
    #include "compiler/OutputGLSL.h"
    #include "compiler/VersionGLSL.h"
    
    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";
        }
    }
    
    TranslatorGLSL::TranslatorGLSL(ShShaderType type, ShShaderSpec spec)
        : TCompiler(type, spec) {
    }
    
    void TranslatorGLSL::translate(TIntermNode* root) {
        TInfoSinkBase& sink = getInfoSink().obj;
    
        // Write GLSL version.
        writeVersion(getShaderType(), root, sink);
    
        // Write emulated built-in functions if needed.
        getBuiltInFunctionEmulator().OutputEmulatedFunctionDefinition(
            sink, false);
    
        // Write array bounds clamping emulation if needed.
        getArrayBoundsClamper().OutputClampingFunctionDefinition(sink);
    
        // Write translated shader.
        TOutputGLSL outputGLSL(sink, getArrayIndexClampingStrategy(), getHashFunction(), getNameMap(), getSymbolTable(), getShaderVersion());
        root->traverse(&outputGLSL);
    }