diff options
Diffstat (limited to 'src/gpu/gl/GrGLProgram.h')
-rw-r--r-- | src/gpu/gl/GrGLProgram.h | 57 |
1 files changed, 23 insertions, 34 deletions
diff --git a/src/gpu/gl/GrGLProgram.h b/src/gpu/gl/GrGLProgram.h index 79d27b0d0c..a43e4f4294 100644 --- a/src/gpu/gl/GrGLProgram.h +++ b/src/gpu/gl/GrGLProgram.h @@ -9,20 +9,17 @@ #ifndef GrGLProgram_DEFINED #define GrGLProgram_DEFINED -#include "GrGLContext.h" -#include "GrProgramDesc.h" -#include "GrGLTexture.h" #include "GrGLProgramDataManager.h" #include "glsl/GrGLSLProgramDataManager.h" #include "glsl/GrGLSLUniformHandler.h" -#include "SkString.h" - -#include "builders/GrGLProgramBuilder.h" - -class GrGLInstalledProcessors; -class GrGLProgramBuilder; +class GrGLSLFragmentProcessor; +class GrGLSLPrimitiveProcessor; +class GrGLSLXferProcessor; class GrPipeline; +class GrPrimitiveProcessor; +class GrRenderTargetProxy; +class GrResourceIOProcessor; /** * This class manages a GPU program and records per-program information. @@ -35,7 +32,21 @@ class GrPipeline; */ class GrGLProgram : public SkRefCnt { public: - typedef GrGLSLProgramBuilder::BuiltinUniformHandles BuiltinUniformHandles; + using UniformHandle = GrGLSLProgramDataManager::UniformHandle; + using UniformInfoArray = GrGLProgramDataManager::UniformInfoArray; + using VaryingInfoArray = GrGLProgramDataManager::VaryingInfoArray; + + GrGLProgram(GrGLGpu*, + const GrGLSLBuiltinUniformHandles&, + GrGLuint programID, + const UniformInfoArray& uniforms, + const UniformInfoArray& textureSamplers, + const UniformInfoArray& texelBuffers, + const VaryingInfoArray&, // used for NVPR only currently + std::unique_ptr<GrGLSLPrimitiveProcessor> geometryProcessor, + std::unique_ptr<GrGLSLXferProcessor> xferProcessor, + std::unique_ptr<std::unique_ptr<GrGLSLFragmentProcessor>[]> fragmentProcessors, + int fragmentProcessorCnt); ~GrGLProgram(); @@ -44,8 +55,6 @@ public: */ void abandon(); - const GrProgramDesc& getDesc() { return fDesc; } - /** * Gets the GL program ID for this program. */ @@ -101,24 +110,7 @@ public: */ void generateMipmaps(const GrPrimitiveProcessor&, const GrPipeline&); -protected: - using UniformHandle = GrGLSLProgramDataManager::UniformHandle ; - using UniformInfoArray = GrGLProgramDataManager::UniformInfoArray; - using VaryingInfoArray = GrGLProgramDataManager::VaryingInfoArray; - - GrGLProgram(GrGLGpu*, - const GrProgramDesc&, - const BuiltinUniformHandles&, - GrGLuint programID, - const UniformInfoArray& uniforms, - const UniformInfoArray& textureSamplers, - const UniformInfoArray& texelBuffers, - const VaryingInfoArray&, // used for NVPR only currently - std::unique_ptr<GrGLSLPrimitiveProcessor> geometryProcessor, - std::unique_ptr<GrGLSLXferProcessor> xferProcessor, - std::unique_ptr<std::unique_ptr<GrGLSLFragmentProcessor>[]> fragmentProcessors, - int fragmentProcessorCnt); - +private: // A helper to loop over effects, set the transforms (via subclass) and bind textures void setFragmentData(const GrPrimitiveProcessor&, const GrPipeline&, int* nextTexSamplerIdx, int* nextTexelBufferIdx); @@ -134,7 +126,7 @@ protected: // these reflect the current values of uniforms (GL uniform values travel with program) RenderTargetState fRenderTargetState; - BuiltinUniformHandles fBuiltinUniformHandles; + GrGLSLBuiltinUniformHandles fBuiltinUniformHandles; GrGLuint fProgramID; // the installed effects @@ -143,15 +135,12 @@ protected: std::unique_ptr<std::unique_ptr<GrGLSLFragmentProcessor>[]> fFragmentProcessors; int fFragmentProcessorCnt; - GrProgramDesc fDesc; GrGLGpu* fGpu; GrGLProgramDataManager fProgramDataManager; int fNumTextureSamplers; int fNumTexelBuffers; - friend class GrGLProgramBuilder; - typedef SkRefCnt INHERITED; }; |