Introduce GrGLShaderBuilder::TextureSampler
Review URL: https://codereview.appspot.com/6495099/
git-svn-id: http://skia.googlecode.com/svn/trunk@5422 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/gpu/effects/GrColorTableEffect.cpp b/src/gpu/effects/GrColorTableEffect.cpp
index 46e42603..56c5109 100644
--- a/src/gpu/effects/GrColorTableEffect.cpp
+++ b/src/gpu/effects/GrColorTableEffect.cpp
@@ -23,7 +23,7 @@
virtual void emitFS(GrGLShaderBuilder* state,
const char* outputColor,
const char* inputColor,
- const char* samplerName) SK_OVERRIDE;
+ const TextureSamplerArray&) SK_OVERRIDE;
virtual void setData(const GrGLUniformManager&,
const GrCustomStage&,
@@ -34,21 +34,18 @@
private:
- const GrCustomStage& fCustomStage;
-
typedef GrGLProgramStage INHERITED;
};
GrGLColorTableEffect::GrGLColorTableEffect(
const GrProgramStageFactory& factory, const GrCustomStage& stage)
- : INHERITED(factory)
- , fCustomStage(stage) {
+ : INHERITED(factory) {
}
void GrGLColorTableEffect::emitFS(GrGLShaderBuilder* builder,
const char* outputColor,
const char* inputColor,
- const char* samplerName) {
+ const TextureSamplerArray& samplers) {
static const float kColorScaleFactor = 255.0f / 256.0f;
static const float kColorOffsetFactor = 1.0f / 512.0f;
SkString* code = &builder->fFSCode;
@@ -67,25 +64,20 @@
kColorOffsetFactor, kColorOffsetFactor);
}
- const GrTextureAccess& access = *fCustomStage.textureAccess(0);
code->appendf("\t\t%s.a = ", outputColor);
- builder->emitCustomTextureLookup(access,
- samplerName,
+ builder->emitCustomTextureLookup(samplers[0],
"vec2(coord.a, 0.125)");
code->appendf("\t\t%s.r = ", outputColor);
- builder->emitCustomTextureLookup(access,
- samplerName,
+ builder->emitCustomTextureLookup(samplers[0],
"vec2(coord.r, 0.375)");
code->appendf("\t\t%s.g = ", outputColor);
- builder->emitCustomTextureLookup(access,
- samplerName,
+ builder->emitCustomTextureLookup(samplers[0],
"vec2(coord.g, 0.625)");
code->appendf("\t\t%s.b = ", outputColor);
- builder->emitCustomTextureLookup(access,
- samplerName,
+ builder->emitCustomTextureLookup(samplers[0],
"vec2(coord.b, 0.875)");
code->appendf("\t\t%s.rgb *= %s.a;\n", outputColor, outputColor);
diff --git a/src/gpu/effects/GrConfigConversionEffect.cpp b/src/gpu/effects/GrConfigConversionEffect.cpp
index 318c03e..ffaab35 100644
--- a/src/gpu/effects/GrConfigConversionEffect.cpp
+++ b/src/gpu/effects/GrConfigConversionEffect.cpp
@@ -22,9 +22,9 @@
virtual void emitFS(GrGLShaderBuilder* builder,
const char* outputColor,
const char* inputColor,
- const char* samplerName) SK_OVERRIDE {
+ const TextureSamplerArray& samplers) SK_OVERRIDE {
builder->fFSCode.appendf("\t\t%s = ", outputColor);
- builder->appendTextureLookup(&builder->fFSCode, samplerName);
+ builder->appendTextureLookup(&builder->fFSCode, samplers[0]);
builder->fFSCode.appendf("%s;\n", builder->fSwizzle.c_str());
if (GrConfigConversionEffect::kNone_PMConversion == fPMConversion) {
GrAssert(fSwapRedAndBlue);
diff --git a/src/gpu/effects/GrConvolutionEffect.cpp b/src/gpu/effects/GrConvolutionEffect.cpp
index 635064f..c189ec0 100644
--- a/src/gpu/effects/GrConvolutionEffect.cpp
+++ b/src/gpu/effects/GrConvolutionEffect.cpp
@@ -26,7 +26,7 @@
virtual void emitFS(GrGLShaderBuilder* builder,
const char* outputColor,
const char* inputColor,
- const char* samplerName) SK_OVERRIDE;
+ const TextureSamplerArray&) SK_OVERRIDE;
virtual void setData(const GrGLUniformManager& uman,
const GrCustomStage&,
@@ -65,7 +65,7 @@
void GrGLConvolutionEffect::emitFS(GrGLShaderBuilder* builder,
const char* outputColor,
const char* inputColor,
- const char* samplerName) {
+ const TextureSamplerArray& samplers) {
SkString* code = &builder->fFSCode;
code->appendf("\t\t%s = vec4(0, 0, 0, 0);\n", outputColor);
@@ -84,7 +84,7 @@
index.appendS32(i);
kernel.appendArrayAccess(index.c_str(), &kernelIndex);
code->appendf("\t\t%s += ", outputColor);
- builder->appendTextureLookup(&builder->fFSCode, samplerName, "coord");
+ builder->appendTextureLookup(&builder->fFSCode, samplers[0], "coord");
code->appendf(" * %s;\n", kernelIndex.c_str());
code->appendf("\t\tcoord += %s;\n", imgInc);
}
diff --git a/src/gpu/effects/GrSingleTextureEffect.cpp b/src/gpu/effects/GrSingleTextureEffect.cpp
index dc91a68..b2fe0cc 100644
--- a/src/gpu/effects/GrSingleTextureEffect.cpp
+++ b/src/gpu/effects/GrSingleTextureEffect.cpp
@@ -22,9 +22,9 @@
virtual void emitFS(GrGLShaderBuilder* builder,
const char* outputColor,
const char* inputColor,
- const char* samplerName) SK_OVERRIDE {
+ const TextureSamplerArray& samplers) SK_OVERRIDE {
builder->fFSCode.appendf("\t%s = ", outputColor);
- builder->appendTextureLookupAndModulate(&builder->fFSCode, inputColor, samplerName);
+ builder->appendTextureLookupAndModulate(&builder->fFSCode, inputColor, samplers[0]);
builder->fFSCode.append(";\n");
}
diff --git a/src/gpu/effects/GrTextureDomainEffect.cpp b/src/gpu/effects/GrTextureDomainEffect.cpp
index f5306c7..279e481 100644
--- a/src/gpu/effects/GrTextureDomainEffect.cpp
+++ b/src/gpu/effects/GrTextureDomainEffect.cpp
@@ -20,7 +20,7 @@
virtual void emitFS(GrGLShaderBuilder* builder,
const char* outputColor,
const char* inputColor,
- const char* samplerName) SK_OVERRIDE;
+ const TextureSamplerArray&) SK_OVERRIDE;
virtual void setData(const GrGLUniformManager&,
const GrCustomStage&,
@@ -49,14 +49,17 @@
void GrGLTextureDomainEffect::emitFS(GrGLShaderBuilder* builder,
const char* outputColor,
const char* inputColor,
- const char* samplerName) {
+ const TextureSamplerArray& samplers) {
builder->fFSCode.appendf("\tvec2 clampCoord = clamp(%s, %s.xy, %s.zw);\n",
builder->defaultTexCoordsName(),
builder->getUniformCStr(fNameUni),
builder->getUniformCStr(fNameUni));
builder->fFSCode.appendf("\t%s = ", outputColor);
- builder->appendTextureLookupAndModulate(&builder->fFSCode, inputColor, samplerName, "clampCoord");
+ builder->appendTextureLookupAndModulate(&builder->fFSCode,
+ inputColor,
+ samplers[0],
+ "clampCoord");
builder->fFSCode.append(";\n");
}