| // |
| // 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); |
| } |