blob: 0e522da88a0cc06c598ff39c6ffd9a94ae26a4cd [file] [log] [blame]
//
// Copyright 2019 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.
//
// TOutputVulkanGLSLForMetal:
// This is a special version Vulkan GLSL output that will make some special
// considerations for Metal backend limitations.
//
#ifndef COMPILER_TRANSLATOR_OUTPUTVULKANGLSLFORMETAL_H_
#define COMPILER_TRANSLATOR_OUTPUTVULKANGLSLFORMETAL_H_
#include "compiler/translator/OutputVulkanGLSL.h"
namespace sh
{
class TOutputVulkanGLSLForMetal : public TOutputVulkanGLSL
{
public:
TOutputVulkanGLSLForMetal(TInfoSinkBase &objSink,
ShHashFunction64 hashFunction,
NameMap &nameMap,
TSymbolTable *symbolTable,
sh::GLenum shaderType,
int shaderVersion,
ShShaderOutput output,
ShCompileOptions compileOptions);
static void RemoveInvariantForTest(bool remove);
protected:
bool visitGlobalQualifierDeclaration(Visit visit,
TIntermGlobalQualifierDeclaration *node) override;
void writeVariableType(const TType &type,
const TSymbol *symbol,
bool isFunctionArgument) override;
};
} // namespace sh
#endif // COMPILER_TRANSLATOR_OUTPUTVULKANGLSLFORMETAL_H_