Edit

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

Branch :

  • Show log

    Commit

  • Author : Gregg Tavares
    Date : 2021-08-25 15:56:59
    Hash : 4c56534f
    Message : Include globals when defering global initializers Fixes these tests: GLSLTest.StructWithInitializer/ES2_Metal GLSLTest.StructWithInitializer/ES3_Metal GLSLTest.StructWithUniformInitializer/ES2_Metal GLSLTest.StructWithUniformInitializer/ES3_Metal GLSLTest_ES3.SequenceOperatorEvaluationOrderDynamicVectorIndexingInLValue/ES3_Metal WebGL2GLSLTest.InitUninitializedLocals/ES3_Metal Bug: angleproject:5505 Change-Id: Ib8258898c60b9e9ffbb71f0024f8189dc6cf4d5b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3120093 Commit-Queue: Gregg Tavares <gman@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Kenneth Russell <kbr@chromium.org>

  • src/compiler/translator/tree_ops/DeferGlobalInitializers.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.
    //
    // DeferGlobalInitializers is an AST traverser that moves global initializers into a separate
    // function that is called in the beginning of main(). This enables initialization of globals with
    // uniforms or non-constant globals, as allowed by the WebGL spec. Some initializers referencing
    // non-constants may need to be unfolded into if statements in HLSL - this kind of steps should be
    // done after DeferGlobalInitializers is run. Note that it's important that the function definition
    // is at the end of the shader, as some globals may be declared after main().
    //
    // It can also initialize all uninitialized globals.
    //
    
    #ifndef COMPILER_TRANSLATOR_TREEOPS_DEFERGLOBALINITIALIZERS_H_
    #define COMPILER_TRANSLATOR_TREEOPS_DEFERGLOBALINITIALIZERS_H_
    
    #include "common/angleutils.h"
    
    namespace sh
    {
    
    class TCompiler;
    class TIntermBlock;
    class TSymbolTable;
    
    ANGLE_NO_DISCARD bool DeferGlobalInitializers(TCompiler *compiler,
                                                  TIntermBlock *root,
                                                  bool initializeUninitializedGlobals,
                                                  bool canUseLoopsToInitialize,
                                                  bool highPrecisionSupported,
                                                  bool forceDeferGlobalInitializers,
                                                  TSymbolTable *symbolTable);
    
    }  // namespace sh
    
    #endif  // COMPILER_TRANSLATOR_TREEOPS_DEFERGLOBALINITIALIZERS_H_