Edit

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

Branch :

  • Show log

    Commit

  • Author : Geoff Lang
    Date : 2014-11-19 16:18:08
    Hash : 0a73dd85
    Message : Fix include guards. BUG=angle:733 Change-Id: I08b2c11c4831f1161c178c1842b10e807185aced Reviewed-on: https://chromium-review.googlesource.com/230831 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>

  • src/compiler/translator/VariablePacker.h
  • //
    // Copyright (c) 2002-2012 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_TRANSLATOR_VARIABLEPACKER_H_
    #define COMPILER_TRANSLATOR_VARIABLEPACKER_H_
    
    #include <vector>
    #include "compiler/translator/VariableInfo.h"
    
    class VariablePacker {
     public:
        // Returns true if the passed in variables pack in maxVectors following
        // the packing rules from the GLSL 1.017 spec, Appendix A, section 7.
        template <typename VarT>
        bool CheckVariablesWithinPackingLimits(unsigned int maxVectors,
                                               const std::vector<VarT> &in_variables);
    
        // Gets how many components in a row a data type takes.
        static int GetNumComponentsPerRow(sh::GLenum type);
    
        // Gets how many rows a data type takes.
        static int GetNumRows(sh::GLenum type);
    
      private:
        static const int kNumColumns = 4;
        static const unsigned kColumnMask = (1 << kNumColumns) - 1;
    
        unsigned makeColumnFlags(int column, int numComponentsPerRow);
        void fillColumns(int topRow, int numRows, int column, int numComponentsPerRow);
        bool searchColumn(int column, int numRows, int* destRow, int* destSize);
    
        int topNonFullRow_;
        int bottomNonFullRow_;
        int maxRows_;
        std::vector<unsigned> rows_;
    };
    
    #endif // COMPILER_TRANSLATOR_VARIABLEPACKER_H_