Edit

kc3-lang/angle/src/tests/test_utils/compiler_test.cpp

Branch :

  • Show log

    Commit

  • Author : Olli Etuaho
    Date : 2015-10-12 14:32:30
    Hash : a6996685
    Message : Automatically enable highp in fragment shaders on ESSL3 Most code using the translator already enables highp with the resources flag when a shader spec that accepts ESSL3 is used, but for example the shader_translator utility doesn't. This fix makes sure that highp is always enabled when a fragment shader written in ESSL3 or newer is being compiled. This will make shader_translator easier to use for testing ESSL3 shaders. BUG=541550 TEST=angle_unittests Change-Id: Ia1911677c55f3c5d921829a8cbb808847ac8b636 Reviewed-on: https://chromium-review.googlesource.com/305190 Tryjob-Request: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Zhenyao Mo <zmo@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Olli Etuaho <oetuaho@nvidia.com>

  • src/tests/test_utils/compiler_test.cpp
  • //
    // Copyright (c) 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.
    //
    // compiler_test.cpp:
    //     utilities for compiler unit tests.
    
    #include "compiler/translator/Compiler.h"
    
    bool compileTestShader(sh::GLenum type,
                           ShShaderSpec spec,
                           ShShaderOutput output,
                           const std::string &shaderString,
                           ShBuiltInResources *resources,
                           int compileOptions,
                           std::string *translatedCode,
                           std::string *infoLog)
    {
        TCompiler *translator = ConstructCompiler(type, spec, output);
        if (!translator->Init(*resources))
        {
            SafeDelete(translator);
            return false;
        }
    
        const char *shaderStrings[] = { shaderString.c_str() };
    
        bool compilationSuccess = translator->compile(shaderStrings, 1, SH_OBJECT_CODE | compileOptions);
        TInfoSink &infoSink = translator->getInfoSink();
        if (translatedCode)
            *translatedCode = infoSink.obj.c_str();
        if (infoLog)
            *infoLog = infoSink.info.c_str();
        SafeDelete(translator);
        return compilationSuccess;
    }
    
    bool compileTestShader(sh::GLenum type,
                           ShShaderSpec spec,
                           ShShaderOutput output,
                           const std::string &shaderString,
                           ShBuiltInResources *resources,
                           std::string *translatedCode,
                           std::string *infoLog)
    {
        return compileTestShader(type, spec, output, shaderString, resources, 0, translatedCode, infoLog);
    }
    
    bool compileTestShader(sh::GLenum type,
                           ShShaderSpec spec,
                           ShShaderOutput output,
                           const std::string &shaderString,
                           int compileOptions,
                           std::string *translatedCode,
                           std::string *infoLog)
    {
        ShBuiltInResources resources;
        ShInitBuiltInResources(&resources);
        return compileTestShader(type, spec, output, shaderString, &resources, compileOptions, translatedCode, infoLog);
    }
    
    bool compileTestShader(sh::GLenum type,
                           ShShaderSpec spec,
                           ShShaderOutput output,
                           const std::string &shaderString,
                           std::string *translatedCode,
                           std::string *infoLog)
    {
        return compileTestShader(type, spec, output, shaderString, 0, translatedCode, infoLog);
    }