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_ 34