Edit

kc3-lang/angle/src/compiler/timing/RestrictFragmentShaderTiming.h

Branch :

  • Show log

    Commit

  • Author : maxvujovic@gmail.com
    Date : 2012-06-25 20:39:58
    Hash : 8b8f02dc
    Message : [SH_TIMING_RESTRICTIONS] Restrict sampler dependent values from the tex coord and bias parameters of all sampling operations, not just texture2D. Issue: 335 Review URL: https://codereview.appspot.com/6305049/ git-svn-id: https://angleproject.googlecode.com/svn/trunk@1167 736b8ea6-26fd-11df-bfd4-992fa37f6226

  • src/compiler/timing/RestrictFragmentShaderTiming.h
  • //
    // Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
    // Use of this source code is governed by a BSD-style license that can be
    // found in the LICENSE file.
    //
    
    #ifndef COMPILER_TIMING_RESTRICT_FRAGMENT_SHADER_TIMING_H_
    #define COMPILER_TIMING_RESTRICT_FRAGMENT_SHADER_TIMING_H_
    
    #include "GLSLANG/ShaderLang.h"
    
    #include "compiler/intermediate.h"
    #include "compiler/depgraph/DependencyGraph.h"
    
    class TInfoSinkBase;
    
    class RestrictFragmentShaderTiming : TDependencyGraphTraverser {
    public:
        RestrictFragmentShaderTiming(TInfoSinkBase& sink);
        void enforceRestrictions(const TDependencyGraph& graph);
        int numErrors() const { return mNumErrors; }
    
        virtual void visitArgument(TGraphArgument* parameter);
        virtual void visitSelection(TGraphSelection* selection);
        virtual void visitLoop(TGraphLoop* loop);
        virtual void visitLogicalOp(TGraphLogicalOp* logicalOp);
    
    private:
        void beginError(const TIntermNode* node);
        void validateUserDefinedFunctionCallUsage(const TDependencyGraph& graph);
        bool isSamplingOp(const TIntermAggregate* intermFunctionCall) const;
    
        TInfoSinkBase& mSink;
        int mNumErrors;
    
        typedef std::set<TString> StringSet;
        StringSet mSamplingOps;
    };
    
    #endif  // COMPILER_TIMING_RESTRICT_FRAGMENT_SHADER_TIMING_H_