gfx/angle/src/compiler/timing/RestrictFragmentShaderTiming.h

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:bd67d41ab83e
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_FRAGMENT_SHADER_TIMING_H_
8 #define COMPILER_TIMING_RESTRICT_FRAGMENT_SHADER_TIMING_H_
9
10 #include "GLSLANG/ShaderLang.h"
11
12 #include "compiler/intermediate.h"
13 #include "compiler/depgraph/DependencyGraph.h"
14
15 class TInfoSinkBase;
16
17 class RestrictFragmentShaderTiming : TDependencyGraphTraverser {
18 public:
19 RestrictFragmentShaderTiming(TInfoSinkBase& sink);
20 void enforceRestrictions(const TDependencyGraph& graph);
21 int numErrors() const { return mNumErrors; }
22
23 virtual void visitArgument(TGraphArgument* parameter);
24 virtual void visitSelection(TGraphSelection* selection);
25 virtual void visitLoop(TGraphLoop* loop);
26 virtual void visitLogicalOp(TGraphLogicalOp* logicalOp);
27
28 private:
29 void beginError(const TIntermNode* node);
30 void validateUserDefinedFunctionCallUsage(const TDependencyGraph& graph);
31 bool isSamplingOp(const TIntermAggregate* intermFunctionCall) const;
32
33 TInfoSinkBase& mSink;
34 int mNumErrors;
35
36 typedef std::set<TString> StringSet;
37 StringSet mSamplingOps;
38 };
39
40 #endif // COMPILER_TIMING_RESTRICT_FRAGMENT_SHADER_TIMING_H_

mercurial