Index: src/gpu/gl/GrGLProgram.h |
diff --git a/src/gpu/gl/GrGLProgram.h b/src/gpu/gl/GrGLProgram.h |
index 3534552f9803756264531b2f56fc3faeeddbf0d1..f197df30ce0e8a2985ac4bbdd2ca06e94e87b94f 100644 |
--- a/src/gpu/gl/GrGLProgram.h |
+++ b/src/gpu/gl/GrGLProgram.h |
@@ -9,12 +9,13 @@ |
#ifndef GrGLProgram_DEFINED |
#define GrGLProgram_DEFINED |
+#include "GrAllocator.h" |
#include "GrDrawState.h" |
#include "GrGLContext.h" |
#include "GrGLProgramDesc.h" |
#include "GrGLSL.h" |
#include "GrGLTexture.h" |
-#include "GrGLUniformManager.h" |
+#include "GrGLUniform.h" |
#include "SkString.h" |
#include "SkXfermode.h" |
@@ -114,38 +115,45 @@ public: |
const GrDeviceCoordTexture* dstCopy, // can be NULL |
SharedGLState*); |
-private: |
- typedef GrGLUniformManager::UniformHandle UniformHandle; |
+ /** |
+ * Called by the GrGLShaderBuilder to create uniforms. |
+ */ |
+ GrGLUniform* appendUniform() { |
+ GrGLUniform& uni = fUniforms.push_back(); |
+ return &uni; |
+ } |
+ |
+private: |
// handles for uniforms (aside from per-effect samplers) |
- struct UniformHandles { |
- UniformHandle fViewMatrixUni; |
- UniformHandle fColorUni; |
- UniformHandle fCoverageUni; |
- UniformHandle fColorFilterUni; |
+ struct NamedUniforms { |
+ GrGLUniform* fViewMatrixUni; |
+ GrGLUniform* fColorUni; |
+ GrGLUniform* fCoverageUni; |
+ GrGLUniform* fColorFilterUni; |
// We use the render target height to provide a y-down frag coord when specifying |
// origin_upper_left is not supported. |
- UniformHandle fRTHeightUni; |
+ GrGLUniform* fRTHeightUni; |
// Uniforms for computing texture coords to do the dst-copy lookup |
- UniformHandle fDstCopyTopLeftUni; |
- UniformHandle fDstCopyScaleUni; |
- UniformHandle fDstCopySamplerUni; |
- |
- UniformHandles() { |
- fViewMatrixUni = GrGLUniformManager::kInvalidUniformHandle; |
- fColorUni = GrGLUniformManager::kInvalidUniformHandle; |
- fCoverageUni = GrGLUniformManager::kInvalidUniformHandle; |
- fColorFilterUni = GrGLUniformManager::kInvalidUniformHandle; |
- fRTHeightUni = GrGLUniformManager::kInvalidUniformHandle; |
- fDstCopyTopLeftUni = GrGLUniformManager::kInvalidUniformHandle; |
- fDstCopyScaleUni = GrGLUniformManager::kInvalidUniformHandle; |
- fDstCopySamplerUni = GrGLUniformManager::kInvalidUniformHandle; |
+ GrGLUniform* fDstCopyTopLeftUni; |
+ GrGLUniform* fDstCopyScaleUni; |
+ GrGLUniform* fDstCopySamplerUni; |
+ |
+ NamedUniforms() |
+ : fViewMatrixUni(NULL) |
+ , fColorUni(NULL) |
+ , fCoverageUni(NULL) |
+ , fColorFilterUni(NULL) |
+ , fRTHeightUni(NULL) |
+ , fDstCopyTopLeftUni(NULL) |
+ , fDstCopyScaleUni(NULL) |
+ , fDstCopySamplerUni(NULL) { |
} |
}; |
- typedef SkSTArray<4, UniformHandle, true> SamplerUniSArray; |
+ typedef SkSTArray<4, GrGLUniform*, true> SamplerUniSArray; |
typedef SkSTArray<4, int, true> TextureUnitSArray; |
struct EffectAndSamplers { |
@@ -221,8 +229,8 @@ private: |
GrGLProgramDesc fDesc; |
const GrGLContext& fContext; |
- GrGLUniformManager fUniformManager; |
- UniformHandles fUniformHandles; |
+ GrTAllocator<GrGLUniform> fUniforms; |
+ NamedUniforms fNamedUniforms; |
typedef GrRefCnt INHERITED; |
}; |