|
1 // |
|
2 // Copyright (c) 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 COMPILER_TIMING_RESTRICT_VERTEX_SHADER_TIMING_H_ |
|
8 #define COMPILER_TIMING_RESTRICT_VERTEX_SHADER_TIMING_H_ |
|
9 |
|
10 #include "GLSLANG/ShaderLang.h" |
|
11 |
|
12 #include "compiler/intermediate.h" |
|
13 #include "compiler/InfoSink.h" |
|
14 |
|
15 class TInfoSinkBase; |
|
16 |
|
17 class RestrictVertexShaderTiming : public TIntermTraverser { |
|
18 public: |
|
19 RestrictVertexShaderTiming(TInfoSinkBase& sink) |
|
20 : TIntermTraverser(true, false, false) |
|
21 , mSink(sink) |
|
22 , mNumErrors(0) {} |
|
23 |
|
24 void enforceRestrictions(TIntermNode* root) { root->traverse(this); } |
|
25 int numErrors() { return mNumErrors; } |
|
26 |
|
27 virtual void visitSymbol(TIntermSymbol*); |
|
28 private: |
|
29 TInfoSinkBase& mSink; |
|
30 int mNumErrors; |
|
31 }; |
|
32 |
|
33 #endif // COMPILER_TIMING_RESTRICT_VERTEX_SHADER_TIMING_H_ |