blob: e7f64ad503a0c73d902c34bee4673d29ad7d8b6a [file] [log] [blame] [edit]
//
// Copyright 2002 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.
//
#include "compiler/translator/glsl/OutputESSL.h"
namespace sh
{
TOutputESSL::TOutputESSL(TCompiler *compiler,
TInfoSinkBase &objSink,
const ShCompileOptions &compileOptions)
: TOutputGLSLBase(compiler, objSink, compileOptions)
{}
bool TOutputESSL::writeVariablePrecision(TPrecision precision)
{
if (precision == EbpUndefined)
return false;
TInfoSinkBase &out = objSink();
out << getPrecisionString(precision);
return true;
}
ImmutableString TOutputESSL::translateTextureFunction(const ImmutableString &name,
const ShCompileOptions &option)
{
// Check WEBGL_video_texture invocation first.
if (name == "textureVideoWEBGL")
{
if (option.takeVideoTextureAsExternalOES)
{
// TODO(http://anglebug.com/42262534): Implement external image situation.
UNIMPLEMENTED();
return ImmutableString("");
}
else
{
// For ESSL 300+ (ES 3.0+), use "texture" instead of "texture2D" to match the
// translation of samplerVideoWEBGL to sampler2D and the ESSL version's texture
// function naming. ESSL 100 (ES 2.0) still uses texture2D.
return (getShaderVersion() >= 300) ? ImmutableString("texture")
: ImmutableString("texture2D");
}
}
return name;
}
} // namespace sh