Edit

kc3-lang/angle/src/compiler/InitializeGLPosition.h

Branch :

  • Show log

    Commit

  • Author : Zhenyao Mo
    Date : 2013-09-23 14:57:09
    Hash : ac44cd2b
    Message : Add an option in ANGLE shader translator to initialize gl_Position to vec4(0.0, 0.0, 0.0, 1.0). This is to work around driver bugs where shader compile or program link would fail incorrectly if gl_Position is not set in vertex shader. At the moment at least Linux NVIDIA driver has this bug. ANGLEBUG=472 R=alokp@chromium.org, kbr@chromium.org Review URL: https://codereview.appspot.com/13509043

  • src/compiler/InitializeGLPosition.h
  • //
    // Copyright (c) 2002-2013 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.
    //
    
    #ifndef COMPILER_INITIALIZE_GL_POSITION_H_
    #define COMPILER_INITIALIZE_GL_POSITION_H_
    
    #include "compiler/intermediate.h"
    
    class InitializeGLPosition : public TIntermTraverser
    {
    public:
        InitializeGLPosition() : mCodeInserted(false) { }
    
    protected:
        virtual bool visitBinary(Visit visit, TIntermBinary* node) { return false; }
        virtual bool visitUnary(Visit visit, TIntermUnary* node) { return false; }
        virtual bool visitSelection(Visit visit, TIntermSelection* node) { return false; }
        virtual bool visitLoop(Visit visit, TIntermLoop* node) { return false; }
        virtual bool visitBranch(Visit visit, TIntermBranch* node) { return false; }
    
        virtual bool visitAggregate(Visit visit, TIntermAggregate* node);
    
    private:
        // Insert AST node in the beginning of main() for "gl_Position = vec4(0.0, 0.0, 0.0, 1.0);".
        void insertCode(TIntermSequence& sequence);
    
        bool mCodeInserted;
    };
    
    #endif  // COMPILER_INITIALIZE_GL_POSITION_H_