blob: ba684990723cd659fb8e9cbc99917f816b619ce6 [file] [log] [blame]
alokp@chromium.org07620a52010-09-23 17:53:56 +00001//
zmo@google.comfd747b82011-04-23 01:30:07 +00002// Copyright (c) 2002-2011 The ANGLE Project Authors. All rights reserved.
alokp@chromium.org07620a52010-09-23 17:53:56 +00003// Use of this source code is governed by a BSD-style license that can be
4// found in the LICENSE file.
5//
6
zmo@google.comfd747b82011-04-23 01:30:07 +00007#ifndef COMPILER_VARIABLE_INFO_H_
8#define COMPILER_VARIABLE_INFO_H_
9
Geoff Lang17732822013-08-29 13:46:49 -040010#include "compiler/translator/intermediate.h"
Jamie Madilla718c1e2014-07-02 15:31:22 -040011#include "common/shadervars.h"
alokp@chromium.org07620a52010-09-23 17:53:56 +000012
Zhenyao Mo74da9f22013-09-23 14:57:01 -040013// Traverses intermediate tree to collect all attributes, uniforms, varyings.
14class CollectVariables : public TIntermTraverser {
alokp@chromium.org07620a52010-09-23 17:53:56 +000015public:
Jamie Madilla718c1e2014-07-02 15:31:22 -040016 CollectVariables(std::vector<sh::Attribute> *attribs,
17 std::vector<sh::Uniform> *uniforms,
18 std::vector<sh::Varying> *varyings,
Zhenyao Mo74da9f22013-09-23 14:57:01 -040019 ShHashFunction64 hashFunction);
alokp@chromium.org07620a52010-09-23 17:53:56 +000020
21 virtual void visitSymbol(TIntermSymbol*);
alokp@chromium.orgee76f6a2010-09-27 19:28:55 +000022 virtual bool visitAggregate(Visit, TIntermAggregate*);
alokp@chromium.org07620a52010-09-23 17:53:56 +000023
24private:
Jamie Madilla718c1e2014-07-02 15:31:22 -040025 std::vector<sh::Attribute> *mAttribs;
26 std::vector<sh::Uniform> *mUniforms;
27 std::vector<sh::Varying> *mVaryings;
daniel@transgaming.com0aa3b5a2012-11-28 19:43:24 +000028
Zhenyao Mod2d340b2013-09-23 14:57:05 -040029 bool mPointCoordAdded;
30 bool mFrontFacingAdded;
31 bool mFragCoordAdded;
32
daniel@transgaming.com0aa3b5a2012-11-28 19:43:24 +000033 ShHashFunction64 mHashFunction;
Jamie Madilla718c1e2014-07-02 15:31:22 -040034
35 template <typename VarT>
36 void visitInfoList(const TIntermSequence& sequence, std::vector<VarT> *infoList) const;
alokp@chromium.org07620a52010-09-23 17:53:56 +000037};
38
daniel@transgaming.com5cb728c2011-05-17 18:34:24 +000039#endif // COMPILER_VARIABLE_INFO_H_