Add GL uniform manager
Review URL: http://codereview.appspot.com/6423066/
git-svn-id: http://skia.googlecode.com/svn/trunk@4758 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/gpu/effects/GrTextureDomainEffect.cpp b/src/gpu/effects/GrTextureDomainEffect.cpp
index e949c4c..ca8561c 100644
--- a/src/gpu/effects/GrTextureDomainEffect.cpp
+++ b/src/gpu/effects/GrTextureDomainEffect.cpp
@@ -9,10 +9,6 @@
#include "gl/GrGLProgramStage.h"
#include "GrProgramStageFactory.h"
-// For brevity, and these definitions are likely to move to a different class soon.
-typedef GrGLShaderBuilder::UniformHandle UniformHandle;
-static const UniformHandle kInvalidUniformHandle = GrGLShaderBuilder::kInvalidUniformHandle;
-
class GrGLTextureDomainEffect : public GrGLProgramStage {
public:
GrGLTextureDomainEffect(const GrProgramStageFactory& factory,
@@ -27,11 +23,7 @@
const char* inputColor,
const char* samplerName) SK_OVERRIDE;
- virtual void initUniforms(const GrGLShaderBuilder* builder,
- const GrGLInterface*,
- int programID) SK_OVERRIDE;
-
- virtual void setData(const GrGLInterface*,
+ virtual void setData(const GrGLUniformManager&,
const GrCustomStage&,
const GrRenderTarget*,
int stageNum) SK_OVERRIDE;
@@ -39,8 +31,7 @@
static inline StageKey GenKey(const GrCustomStage&) { return 0; }
private:
- UniformHandle fNameUni;
- int fNameLocation;
+ GrGLUniformManager::UniformHandle fNameUni;
typedef GrGLProgramStage INHERITED;
};
@@ -48,15 +39,13 @@
GrGLTextureDomainEffect::GrGLTextureDomainEffect(const GrProgramStageFactory& factory,
const GrCustomStage& stage)
: GrGLProgramStage(factory)
- , fNameUni(kInvalidUniformHandle)
- , fNameLocation(0) {
+ , fNameUni(GrGLUniformManager::kInvalidUniformHandle) {
}
void GrGLTextureDomainEffect::setupVariables(GrGLShaderBuilder* builder,
int stage) {
fNameUni = builder->addUniform(GrGLShaderBuilder::kFragment_ShaderType,
kVec4f_GrSLType, "uTexDom", stage);
- fNameLocation = kUseUniform;
};
void GrGLTextureDomainEffect::emitFS(GrGLShaderBuilder* builder,
@@ -75,17 +64,10 @@
builder->emitDefaultFetch(outputColor, samplerName);
}
-void GrGLTextureDomainEffect::initUniforms(const GrGLShaderBuilder* builder,
- const GrGLInterface* gl, int programID) {
- GR_GL_CALL_RET(gl, fNameLocation,
- GetUniformLocation(programID, builder->getUniformCStr(fNameUni)));
- GrAssert(kUnusedUniform != fNameLocation);
-}
-
-void GrGLTextureDomainEffect::setData(const GrGLInterface* gl,
- const GrCustomStage& data,
- const GrRenderTarget*,
- int stageNum) {
+void GrGLTextureDomainEffect::setData(const GrGLUniformManager& uman,
+ const GrCustomStage& data,
+ const GrRenderTarget*,
+ int stageNum) {
const GrTextureDomainEffect& effect = static_cast<const GrTextureDomainEffect&>(data);
const GrRect& domain = effect.domain();
@@ -104,8 +86,7 @@
// of elements so that values = (l, t, r, b).
SkTSwap(values[1], values[3]);
}
-
- GR_GL_CALL(gl, Uniform4fv(fNameLocation, 1, values));
+ uman.set4fv(fNameUni, 0, 1, values);
}
@@ -114,7 +95,6 @@
GrTextureDomainEffect::GrTextureDomainEffect(GrTexture* texture, GrRect domain)
: GrSingleTextureEffect(texture)
, fTextureDomain(domain) {
-
}
GrTextureDomainEffect::~GrTextureDomainEffect() {