Line data Source code
1 : //
2 : // Copyright (c) 2013 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 COMPILER_TRANSLATOR_VALIDATEOUTPUTS_H_
8 : #define COMPILER_TRANSLATOR_VALIDATEOUTPUTS_H_
9 :
10 : #include "compiler/translator/ExtensionBehavior.h"
11 : #include "compiler/translator/IntermNode.h"
12 :
13 : #include <set>
14 :
15 : namespace sh
16 : {
17 :
18 : class TInfoSinkBase;
19 :
20 0 : class ValidateOutputs : public TIntermTraverser
21 : {
22 : public:
23 : ValidateOutputs(const TExtensionBehavior &extBehavior, int maxDrawBuffers);
24 :
25 : int validateAndCountErrors(TInfoSinkBase &sink) const;
26 :
27 : void visitSymbol(TIntermSymbol *) override;
28 :
29 : private:
30 : int mMaxDrawBuffers;
31 : bool mAllowUnspecifiedOutputLocationResolution;
32 :
33 : typedef std::vector<TIntermSymbol *> OutputVector;
34 : OutputVector mOutputs;
35 : OutputVector mUnspecifiedLocationOutputs;
36 : std::set<std::string> mVisitedSymbols;
37 : };
38 :
39 : } // namespace sh
40 :
41 : #endif // COMPILER_TRANSLATOR_VALIDATEOUTPUTS_H_
|