Edit

kc3-lang/angle/src/compiler/translator/TranslatorESSL.cpp

Branch :

  • Show log

    Commit

  • Author : Geoff Lang
    Date : 2013-08-29 13:46:49
    Hash : 17732823
    Message : Moved the compiler source files into directories based on their project and added a compiler.gypi to generate the compiler projects.

  • src/compiler/translator/TranslatorESSL.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/translator/TranslatorESSL.h"
    
    #include "compiler/translator/OutputESSL.h"
    
    TranslatorESSL::TranslatorESSL(ShShaderType type, ShShaderSpec spec)
        : TCompiler(type, spec) {
    }
    
    void TranslatorESSL::translate(TIntermNode* root) {
        TInfoSinkBase& sink = getInfoSink().obj;
    
        // Write built-in extension behaviors.
        writeExtensionBehavior();
    
        // Write emulated built-in functions if needed.
        getBuiltInFunctionEmulator().OutputEmulatedFunctionDefinition(
            sink, getShaderType() == SH_FRAGMENT_SHADER);
    
        // Write array bounds clamping emulation if needed.
        getArrayBoundsClamper().OutputClampingFunctionDefinition(sink);
    
        // Write translated shader.
        TOutputESSL outputESSL(sink, getArrayIndexClampingStrategy(), getHashFunction(), getNameMap(), getSymbolTable(), getShaderVersion());
        root->traverse(&outputESSL);
    }
    
    void TranslatorESSL::writeExtensionBehavior() {
        TInfoSinkBase& sink = getInfoSink().obj;
        const TExtensionBehavior& extensionBehavior = getExtensionBehavior();
        for (TExtensionBehavior::const_iterator iter = extensionBehavior.begin();
             iter != extensionBehavior.end(); ++iter) {
            if (iter->second != EBhUndefined) {
                sink << "#extension " << iter->first << " : "
                     << getBehaviorString(iter->second) << "\n";
            }
        }
    }