Wed, 31 Dec 2014 07:16:47 +0100
Revert simplistic fix pending revisit of Mozilla integration attempt.
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 //
7 #ifndef COMPILER_TIMING_RESTRICT_FRAGMENT_SHADER_TIMING_H_
8 #define COMPILER_TIMING_RESTRICT_FRAGMENT_SHADER_TIMING_H_
10 #include "GLSLANG/ShaderLang.h"
12 #include "compiler/intermediate.h"
13 #include "compiler/depgraph/DependencyGraph.h"
15 class TInfoSinkBase;
17 class RestrictFragmentShaderTiming : TDependencyGraphTraverser {
18 public:
19 RestrictFragmentShaderTiming(TInfoSinkBase& sink);
20 void enforceRestrictions(const TDependencyGraph& graph);
21 int numErrors() const { return mNumErrors; }
23 virtual void visitArgument(TGraphArgument* parameter);
24 virtual void visitSelection(TGraphSelection* selection);
25 virtual void visitLoop(TGraphLoop* loop);
26 virtual void visitLogicalOp(TGraphLogicalOp* logicalOp);
28 private:
29 void beginError(const TIntermNode* node);
30 void validateUserDefinedFunctionCallUsage(const TDependencyGraph& graph);
31 bool isSamplingOp(const TIntermAggregate* intermFunctionCall) const;
33 TInfoSinkBase& mSink;
34 int mNumErrors;
36 typedef std::set<TString> StringSet;
37 StringSet mSamplingOps;
38 };
40 #endif // COMPILER_TIMING_RESTRICT_FRAGMENT_SHADER_TIMING_H_