Edit

kc3-lang/angle/src/compiler/translator/TranslatorMetal.h

Branch :

  • Show log

    Commit

  • Author : Le Hoang Quyen
    Date : 2020-07-06 12:40:58
    Hash : 9277ee74
    Message : Metal: Implement MSAA default framebuffer. GL_SAMPLE_COVERAGE_VALUE is implemented by inserting gl_SampleMask writing logic to fragment shader. New test added: MultisampleTest.ContentPresevedAfterInterruption. - Skip on D3D11 (Bug: angleproject:4609) Bug: angleproject:2634 Change-Id: Ib44daf0baccc36ea320596d81713156047da059c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2281783 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>

  • src/compiler/translator/TranslatorMetal.h
  • //
    // 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.
    //
    // TranslatorMetal:
    //   A GLSL-based translator that outputs shaders that fit GL_KHR_vulkan_glsl.
    //   It takes into account some considerations for Metal backend also.
    //   The shaders are then fed into glslang to spit out SPIR-V (libANGLE-side).
    //   See: https://www.khronos.org/registry/vulkan/specs/misc/GL_KHR_vulkan_glsl.txt
    //
    //   The SPIR-V will then be translated to Metal Shading Language later in Metal backend.
    //
    
    #ifndef LIBANGLE_RENDERER_METAL_TRANSLATORMETAL_H_
    #define LIBANGLE_RENDERER_METAL_TRANSLATORMETAL_H_
    
    #include "compiler/translator/TranslatorVulkan.h"
    
    namespace sh
    {
    
    class TranslatorMetal : public TranslatorVulkan
    {
      public:
        TranslatorMetal(sh::GLenum type, ShShaderSpec spec);
    
      protected:
        ANGLE_NO_DISCARD bool translate(TIntermBlock *root,
                                        ShCompileOptions compileOptions,
                                        PerformanceDiagnostics *perfDiagnostics) override;
    
        ANGLE_NO_DISCARD bool transformDepthBeforeCorrection(TIntermBlock *root,
                                                             const TVariable *driverUniforms) override;
    
        void createAdditionalGraphicsDriverUniformFields(std::vector<TField *> *fieldsOut) override;
    
        ANGLE_NO_DISCARD bool insertSampleMaskWritingLogic(TIntermBlock *root,
                                                           const TVariable *driverUniforms);
    };
    
    }  // namespace sh
    
    #endif /* LIBANGLE_RENDERER_METAL_TRANSLATORMETAL_H_ */