Hash :
7adfb184
Author :
Date :
2015-06-09T15:49:41
Refactor common compiler test functionality into helper functions Refactor translating a ESSL shader string into a target language so that compiler initialization and cleanup code can be reused between test classes. BUG=angleproject:817 TEST=angle_unittests Change-Id: Idb229dceb9e17b13ed6ad2a68ab55ed5c968780e Reviewed-on: https://chromium-review.googlesource.com/275814 Tested-by: Olli Etuaho <oetuaho@nvidia.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
//
// 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)
{
if (spec == SH_GLES3_SPEC || spec == SH_WEBGL2_SPEC)
{
resources->FragmentPrecisionHigh = 1;
}
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);
}