Hash :
07f0f019
        
        Author :
  
        
        Date :
2019-12-19T14:47:46
        
      
Translator: Memory qualifiers on SSBO fields These were not output prior to this CL. Of these qualifiers, readonly and writeonly are unnecessary as ANGLE already does the appropriate validation, but the rest (coherent, volatile, restrict) are necessary, even though the tests pass on the bots by coincidence of driver behavior/test simplicity. Bug: angleproject:3602 Change-Id: Ie75fee0f004944b50ef21124ba25c4315e082b85 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1976499 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@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
//
// Copyright (c) 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.
//
#include "compiler/translator/OutputVulkanGLSL.h"
namespace sh
{
class TOutputVulkanGLSLForMetal : public TOutputVulkanGLSL
{
  public:
    TOutputVulkanGLSLForMetal(TInfoSinkBase &objSink,
                              ShArrayIndexClampingStrategy clampingStrategy,
                              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