blob: ac7a74e362fea1051f324baa7b499bc2b48467f6 [file] [log] [blame]
//
// 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/OutputESSL.h"
namespace sh
{
TOutputESSL::TOutputESSL(TInfoSinkBase &objSink,
ShHashFunction64 hashFunction,
NameMap &nameMap,
TSymbolTable *symbolTable,
sh::GLenum shaderType,
int shaderVersion,
bool forceHighp,
ShCompileOptions compileOptions)
: TOutputGLSLBase(objSink,
hashFunction,
nameMap,
symbolTable,
shaderType,
shaderVersion,
SH_ESSL_OUTPUT,
compileOptions),
mForceHighp(forceHighp)
{}
bool TOutputESSL::writeVariablePrecision(TPrecision precision)
{
if (precision == EbpUndefined)
return false;
TInfoSinkBase &out = objSink();
if (mForceHighp)
out << getPrecisionString(EbpHigh);
else
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 & SH_TAKE_VIDEO_TEXTURE_AS_EXTERNAL_OES)
{
// TODO(http://anglebug.com/3889): Implement external image situation.
UNIMPLEMENTED();
return ImmutableString("");
}
else
{
// Default translating textureVideoWEBGL to texture2D.
return ImmutableString("texture2D");
}
}
return name;
}
} // namespace sh