Edit

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

Branch :

  • Show log

    Commit

  • Author : Jamie Madill
    Date : 2017-11-21 19:22:44
    Hash : acf2f3ad
    Message : Apply Chromium style fixes. This addresses several minor code quality issues that are validated in Chromium, but not yet applied to ANGLE: * constructors and destructors must be defined out-of-line * auto is not allowed for simple pointer types * use override everywhere instead of virtual * virtual functions must also be defined out-of-line Slightly reduces binary size for me (~2k on Win, 150k on Linux). Bug: angleproject:1569 Change-Id: I073ca3365188caf5f29fb28d9eb207903c1843e6 Reviewed-on: https://chromium-review.googlesource.com/779959 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-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))
    {
    }
    
    gl::Error CompilerGL::release()
    {
        return gl::NoError();
    }
    
    ShShaderOutput CompilerGL::getTranslatorOutputType() const
    {
        return mTranslatorOutputType;
    }
    
    }  // namespace rx