Edit

kc3-lang/angle/src/compiler/translator/TranslatorVulkan.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/TranslatorVulkan.h
  • //
    // Copyright 2016 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.
    //
    // TranslatorVulkan:
    //   A GLSL-based translator that outputs shaders that fit GL_KHR_vulkan_glsl.
    //   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
    //
    
    #ifndef COMPILER_TRANSLATOR_TRANSLATORVULKAN_H_
    #define COMPILER_TRANSLATOR_TRANSLATORVULKAN_H_
    
    #include "compiler/translator/Compiler.h"
    
    namespace sh
    {
    
    class TOutputVulkanGLSL;
    
    class TranslatorVulkan : public TCompiler
    {
      public:
        TranslatorVulkan(sh::GLenum type, ShShaderSpec spec);
    
      protected:
        ANGLE_NO_DISCARD bool translate(TIntermBlock *root,
                                        ShCompileOptions compileOptions,
                                        PerformanceDiagnostics *perfDiagnostics) override;
        bool shouldFlattenPragmaStdglInvariantAll() override;
    
        TIntermSwizzle *getDriverUniformNegFlipYRef(const TVariable *driverUniforms) const;
        TIntermBinary *getDriverUniformDepthRangeReservedFieldRef(
            const TVariable *driverUniforms) const;
        // Subclass can call this method to transform the AST before writing the final output.
        // See TranslatorMetal.cpp.
        ANGLE_NO_DISCARD bool translateImpl(TIntermBlock *root,
                                            ShCompileOptions compileOptions,
                                            PerformanceDiagnostics *perfDiagnostics,
                                            const TVariable **driverUniformsOut,
                                            TOutputVulkanGLSL *outputGLSL);
    
        // Give subclass such as TranslatorMetal a chance to do depth transform before
        // TranslatorVulkan apply its own transform.
        ANGLE_NO_DISCARD virtual bool transformDepthBeforeCorrection(TIntermBlock *root,
                                                                     const TVariable *driverUniforms)
        {
            return true;
        }
    
        // Back-end specific fields to be added to driver uniform. See TranslatorMetal.cpp.
        virtual void createAdditionalGraphicsDriverUniformFields(std::vector<TField *> *fieldsOut) {}
    };
    
    }  // namespace sh
    
    #endif  // COMPILER_TRANSLATOR_TRANSLATORVULKAN_H_