Edit

kc3-lang/angle/src/libANGLE/renderer/gl/CompilerGL.cpp

Branch :

  • Show log

    Commit

  • Author : Jamie Madill
    Date : 2015-09-23 09:50:36
    Hash : 83f349ea
    Message : Remove CompilerImpl and merge code to gl::Compiler. This class uses no Impl-specific code. We can also do a similar code relocation for the gl::Shader class, but in several steps because it is a bit more complex. BUG=angleproject:1159 Change-Id: I4d3ce3253df0a2bdee1d98e46cfd4b999d86be6e Reviewed-on: https://chromium-review.googlesource.com/299874 Reviewed-by: Geoff Lang <geofflang@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>

  • src/libANGLE/renderer/gl/CompilerGL.cpp
  • //
    // Copyright 2015 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.
    //
    // CompilerGL:
    //   Implementation of the GL compiler methods.
    //
    
    #include "libANGLE/renderer/gl/CompilerGL.h"
    
    #include "libANGLE/renderer/gl/FunctionsGL.h"
    
    namespace rx
    {
    
    namespace
    {
    
    ShShaderOutput GetShaderOutputType(const FunctionsGL *functions)
    {
        ASSERT(functions);
    
        if (functions->standard == STANDARD_GL_DESKTOP)
        {
            // GLSL outputs
            if (functions->isAtLeastGL(gl::Version(4, 5)))
            {
                return SH_GLSL_450_CORE_OUTPUT;
            }
            else if (functions->isAtLeastGL(gl::Version(4, 4)))
            {
                return SH_GLSL_440_CORE_OUTPUT;
            }
            else if (functions->isAtLeastGL(gl::Version(4, 3)))
            {
                return SH_GLSL_430_CORE_OUTPUT;
            }
            else if (functions->isAtLeastGL(gl::Version(4, 2)))
            {
                return SH_GLSL_420_CORE_OUTPUT;
            }
            else if (functions->isAtLeastGL(gl::Version(4, 1)))
            {
                return SH_GLSL_410_CORE_OUTPUT;
            }
            else if (functions->isAtLeastGL(gl::Version(4, 0)))
            {
                return SH_GLSL_400_CORE_OUTPUT;
            }
            else if (functions->isAtLeastGL(gl::Version(3, 3)))
            {
                return SH_GLSL_330_CORE_OUTPUT;
            }
            else if (functions->isAtLeastGL(gl::Version(3, 2)))
            {
                return SH_GLSL_150_CORE_OUTPUT;
            }
            else if (functions->isAtLeastGL(gl::Version(3, 1)))
            {
                return SH_GLSL_140_OUTPUT;
            }
            else if (functions->isAtLeastGL(gl::Version(3, 0)))
            {
                return SH_GLSL_130_OUTPUT;
            }
            else
            {
                return SH_GLSL_COMPATIBILITY_OUTPUT;
            }
        }
        else if (functions->standard == STANDARD_GL_ES)
        {
            // ESSL outputs
            return SH_ESSL_OUTPUT;
        }
        else
        {
            UNREACHABLE();
            return ShShaderOutput(0);
        }
    }
    
    }  // anonymous namespace
    
    CompilerGL::CompilerGL(const FunctionsGL *functions)
        : mTranslatorOutputType(GetShaderOutputType(functions))
    {
    }
    
    }  // namespace rx