2 // Copyright (c) 2002-2011 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.
7 #ifndef COMPILER_VARIABLE_INFO_H_
8 #define COMPILER_VARIABLE_INFO_H_
10 #include "GLSLANG/ShaderLang.h"
11 #include "compiler/translator/intermediate.h"
13 // Provides information about a variable.
14 // It is currently being used to store info about active attribs and uniforms.
15 struct TVariableInfo {
16 TVariableInfo(ShDataType type, int size);
20 TPersistString mappedName;
27 typedef std::vector<TVariableInfo> TVariableInfoList;
29 // Traverses intermediate tree to collect all attributes, uniforms, varyings.
30 class CollectVariables : public TIntermTraverser {
32 CollectVariables(TVariableInfoList& attribs,
33 TVariableInfoList& uniforms,
34 TVariableInfoList& varyings,
35 ShHashFunction64 hashFunction);
37 virtual void visitSymbol(TIntermSymbol*);
38 virtual bool visitAggregate(Visit, TIntermAggregate*);
41 TVariableInfoList& mAttribs;
42 TVariableInfoList& mUniforms;
43 TVariableInfoList& mVaryings;
45 bool mPointCoordAdded;
46 bool mFrontFacingAdded;
49 ShHashFunction64 mHashFunction;
52 #endif // COMPILER_VARIABLE_INFO_H_