• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //
2 // Copyright (c) 2019 The ANGLE Project Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
5 //
6 // TOutputVulkanGLSLForMetal:
7 //    This is a special version Vulkan GLSL output that will make some special
8 //    considerations for Metal backend limitations.
9 //
10 
11 #include "compiler/translator/OutputVulkanGLSL.h"
12 
13 namespace sh
14 {
15 
16 class TOutputVulkanGLSLForMetal : public TOutputVulkanGLSL
17 {
18   public:
19     TOutputVulkanGLSLForMetal(TInfoSinkBase &objSink,
20                               ShArrayIndexClampingStrategy clampingStrategy,
21                               ShHashFunction64 hashFunction,
22                               NameMap &nameMap,
23                               TSymbolTable *symbolTable,
24                               sh::GLenum shaderType,
25                               int shaderVersion,
26                               ShShaderOutput output,
27                               ShCompileOptions compileOptions);
28 
29     static void RemoveInvariantForTest(bool remove);
30 
31   protected:
32     bool visitGlobalQualifierDeclaration(Visit visit,
33                                          TIntermGlobalQualifierDeclaration *node) override;
34     void writeVariableType(const TType &type,
35                            const TSymbol *symbol,
36                            bool isFunctionArgument) override;
37 };
38 
39 }  // namespace sh
40