zenilib  0.5.3.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
VariablePacker.h
Go to the documentation of this file.
1 //
2 // Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
5 //
6 
7 #ifndef _VARIABLEPACKER_INCLUDED_
8 #define _VARIABLEPACKER_INCLUDED_
9 
10 #include <vector>
11 #include "compiler/ShHandle.h"
12 
14  public:
15  // Returns true if the passed in variables pack in maxVectors following
16  // the packing rules from the GLSL 1.017 spec, Appendix A, section 7.
18  int maxVectors,
19  const TVariableInfoList& in_variables);
20 
21  // Gets how many components in a row a data type takes.
23 
24  // Gets how many rows a data type takes.
25  static int GetNumRows(ShDataType type);
26 
27  private:
28  static const int kNumColumns = 4;
29  static const unsigned kColumnMask = (1 << kNumColumns) - 1;
30 
31  unsigned makeColumnFlags(int column, int numComponentsPerRow);
32  void fillColumns(int topRow, int numRows, int column, int numComponentsPerRow);
33  bool searchColumn(int column, int numRows, int* destRow, int* destSize);
34 
35  int topNonFullRow_;
36  int bottomNonFullRow_;
37  int maxRows_;
38  std::vector<unsigned> rows_;
39 };
40 
41 #endif // _VARIABLEPACKER_INCLUDED_
GLint GLenum GLsizei GLsizei GLsizei GLint GLenum GLenum type
Definition: gl2ext.h:845
ShDataType
Definition: ShaderLang.h:88
bool CheckVariablesWithinPackingLimits(int maxVectors, const TVariableInfoList &in_variables)
GLenum GLenum GLvoid GLvoid * column
Definition: glew.h:4447
static int GetNumRows(ShDataType type)
static int GetNumComponentsPerRow(ShDataType type)
std::vector< TVariableInfo > TVariableInfoList
Definition: VariableInfo.h:24