Edit

kc3-lang/angle/src/libANGLE/renderer/d3d/ShaderD3D.h

Branch :

  • Show log

    Commit

  • Author : Jamie Madill
    Date : 2015-04-01 16:15:32
    Hash : f4bf3811
    Message : Use GetAs/GetImplAs whenever possible. This patch cleans up the rest of our custom casting helper functions. Change-Id: I41975c736765fca855c4498acca31116df3e8317 Reviewed-on: https://chromium-review.googlesource.com/263477 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Brandon Jones <bajones@chromium.org>

  • src/libANGLE/renderer/d3d/ShaderD3D.h
  • //
    // Copyright (c) 2014 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.
    //
    
    // ShaderD3D.h: Defines the rx::ShaderD3D class which implements rx::ShaderImpl.
    
    #ifndef LIBANGLE_RENDERER_D3D_SHADERD3D_H_
    #define LIBANGLE_RENDERER_D3D_SHADERD3D_H_
    
    #include "libANGLE/renderer/ShaderImpl.h"
    #include "libANGLE/renderer/Workarounds.h"
    #include "libANGLE/Shader.h"
    
    #include <map>
    
    namespace rx
    {
    class DynamicHLSL;
    class RendererD3D;
    
    class ShaderD3D : public ShaderImpl
    {
        friend class DynamicHLSL;
    
      public:
        ShaderD3D(GLenum type);
        virtual ~ShaderD3D();
    
        // ShaderImpl implementation
        virtual std::string getDebugInfo() const;
    
        // D3D-specific methods
        virtual void uncompile();
        void resetVaryingsRegisterAssignment();
        unsigned int getUniformRegister(const std::string &uniformName) const;
        unsigned int getInterfaceBlockRegister(const std::string &blockName) const;
        void appendDebugInfo(const std::string &info) { mDebugInfo += info; }
    
        void generateWorkarounds(D3DCompilerWorkarounds *workarounds) const;
        int getShaderVersion() const { return mShaderVersion; }
        bool usesDepthRange() const { return mUsesDepthRange; }
        bool usesPointSize() const { return mUsesPointSize; }
        bool usesDeferredInit() const { return mUsesDeferredInit; }
    
        GLenum getShaderType() const;
        ShShaderOutput getCompilerOutputType() const;
    
        virtual bool compile(gl::Compiler *compiler, const std::string &source);
    
      private:
        void compileToHLSL(ShHandle compiler, const std::string &source);
        void parseVaryings(ShHandle compiler);
    
        void parseAttributes(ShHandle compiler);
    
        static bool compareVarying(const gl::PackedVarying &x, const gl::PackedVarying &y);
    
        GLenum mShaderType;
    
        int mShaderVersion;
    
        bool mUsesMultipleRenderTargets;
        bool mUsesFragColor;
        bool mUsesFragData;
        bool mUsesFragCoord;
        bool mUsesFrontFacing;
        bool mUsesPointSize;
        bool mUsesPointCoord;
        bool mUsesDepthRange;
        bool mUsesFragDepth;
        bool mUsesDiscardRewriting;
        bool mUsesNestedBreak;
        bool mUsesDeferredInit;
        bool mRequiresIEEEStrictCompiling;
    
        ShShaderOutput mCompilerOutputType;
        std::string mDebugInfo;
        std::map<std::string, unsigned int> mUniformRegisterMap;
        std::map<std::string, unsigned int> mInterfaceBlockRegisterMap;
    };
    
    }
    
    #endif // LIBANGLE_RENDERER_D3D_SHADERD3D_H_