Edit

kc3-lang/angle/src/compiler/translator/tree_ops/MonomorphizeUnsupportedFunctions.h

Branch :

  • Show log

    Commit

  • Author : Kenneth Russell
    Date : 2021-07-28 00:36:12
    Hash : aec5e65c
    Message : Get direct-to-Metal backend to run angle_end2end_tests. Cherry-pick nameless struct fix from Apple in https://bugs.webkit.org/show_bug.cgi?id=227482 . Fix SeparateCompoundStructDeclarations pass to stop generating multiple declarations; thanks syoussefi@ for advice. Incorporate additional passes from TranslatorVulkan (MonomorphizeUnsupportedFunctionsInVulkanGLSL, RewriteArrayOfArrayOfOpaqueUniforms, SeparateStructFromUniformDeclarations) needed by RewriteStructSamplers pass in TranslatorMetalDirect. Fixes many assertion failures in GLSL tests. Moved these passes out of tree_ops/vulkan. Thanks again to syoussefi@ for advice and help. Disable a validation check related to the RewritePipelines pass. Skip two tests that were failing for other reasons. With these changes, angle_end2end_tests runs to completion when the direct-to-Metal backend is turned on. There are still ~1300 failures of the ~4000 tests which will be investigated next. Bug: angleproject:5505 Change-Id: Ibca77822543e8e8e8d2a8c862e92cdf74bfa3545 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3058524 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Kenneth Russell <kbr@chromium.org>

  • src/compiler/translator/tree_ops/MonomorphizeUnsupportedFunctions.h
  • //
    // Copyright 2021 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.
    //
    // MonomorphizeUnsupportedFunctions: Monomorphize functions that are called with
    // parameters that are incompatible with both Vulkan GLSL and Metal:
    //
    // - Samplers in structs
    // - Structs that have samplers
    // - Partially subscripted array of array of samplers
    // - Partially subscripted array of array of images
    // - Atomic counters
    // - samplerCube variables when emulating ES2's cube map sampling
    // - image* variables with r32f formats (to emulate imageAtomicExchange)
    //
    // This transformation basically duplicates such functions, removes the
    // sampler/image/atomic_counter parameters and uses the opaque uniforms used by the caller.
    
    #ifndef COMPILER_TRANSLATOR_TREEOPS_VULKAN_MONOMORPHIZEUNSUPPORTEDFUNCTIONS_H_
    #define COMPILER_TRANSLATOR_TREEOPS_VULKAN_MONOMORPHIZEUNSUPPORTEDFUNCTIONS_H_
    
    #include "common/angleutils.h"
    #include "compiler/translator/Compiler.h"
    
    namespace sh
    {
    class TIntermBlock;
    class TSymbolTable;
    
    ANGLE_NO_DISCARD bool MonomorphizeUnsupportedFunctions(TCompiler *compiler,
                                                           TIntermBlock *root,
                                                           TSymbolTable *symbolTable,
                                                           ShCompileOptions compileOptions);
    }  // namespace sh
    
    #endif  // COMPILER_TRANSLATOR_TREEOPS_VULKAN_MONOMORPHIZEUNSUPPORTEDFUNCTIONS_H_