Some GrGLShaderBuilder cleanup

Review URL: https://codereview.appspot.com/6500043/



git-svn-id: http://skia.googlecode.com/svn/trunk@5322 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/effects/SkLightingImageFilter.cpp b/src/effects/SkLightingImageFilter.cpp
index c73e884..408e702 100644
--- a/src/effects/SkLightingImageFilter.cpp
+++ b/src/effects/SkLightingImageFilter.cpp
@@ -1148,7 +1148,7 @@
                           interiorNormalBody.c_str(),
                           &interiorNormalName);
 
-    code->appendf("\t\tvec2 coord = %s;\n", builder->fSampleCoords.c_str());
+    code->appendf("\t\tvec2 coord = %s;\n", builder->defaultTexCoordsName());
     code->appendf("\t\tfloat m[9];\n");
 
     const char* imgInc = builder->getUniformCStr(fImageIncrementUni);
diff --git a/src/effects/SkMagnifierImageFilter.cpp b/src/effects/SkMagnifierImageFilter.cpp
index 846fd28..3145321 100644
--- a/src/effects/SkMagnifierImageFilter.cpp
+++ b/src/effects/SkMagnifierImageFilter.cpp
@@ -134,10 +134,10 @@
                                  const char* samplerName) {
     SkString* code = &state->fFSCode;
 
-    code->appendf("\t\tvec2 coord = %s;\n", state->fSampleCoords.c_str());
+    code->appendf("\t\tvec2 coord = %s;\n", state->defaultTexCoordsName());
     code->appendf("\t\tvec2 zoom_coord = %s + %s / %s;\n",
                   state->getUniformCStr(fOffsetVar),
-                  state->fSampleCoords.c_str(),
+                  state->defaultTexCoordsName(),
                   state->getUniformCStr(fZoomVar));
 
     code->appendf("\t\tvec2 delta = min(coord, vec2(1.0, 1.0) - coord);\n");
diff --git a/src/effects/SkMorphologyImageFilter.cpp b/src/effects/SkMorphologyImageFilter.cpp
index 4bde3f0..eb121a7 100644
--- a/src/effects/SkMorphologyImageFilter.cpp
+++ b/src/effects/SkMorphologyImageFilter.cpp
@@ -334,7 +334,7 @@
     const char* imgInc = builder->getUniformCStr(fImageIncrementUni);
 
     code->appendf("\t\tvec2 coord = %s - %d.0 * %s;\n",
-                   builder->fSampleCoords.c_str(), fRadius, imgInc);
+                   builder->defaultTexCoordsName(), fRadius, imgInc);
     code->appendf("\t\tfor (int i = 0; i < %d; i++) {\n", this->width());
     code->appendf("\t\t\tvalue = %s(value, ", func);
     builder->emitTextureLookup(samplerName, "coord");
diff --git a/src/effects/gradients/SkGradientShader.cpp b/src/effects/gradients/SkGradientShader.cpp
index 6bcc1ba..891b1cd 100644
--- a/src/effects/gradients/SkGradientShader.cpp
+++ b/src/effects/gradients/SkGradientShader.cpp
@@ -702,10 +702,11 @@
                                         const char* tName,
                                         const char* outputColor,
                                         const char* samplerName) {
-    builder->fSampleCoords.printf("vec2(%s, %s)", tName,
-        builder->getUniformVariable(fFSYUni).c_str());
-    builder->fComplexCoord = true;
-    builder->emitDefaultFetch(outputColor, samplerName);
+
+    builder->fFSCode.appendf("\tvec2 coord = vec2(%s, %s);\n",
+                             tName,
+                             builder->getUniformVariable(fFSYUni).c_str());
+    builder->emitTextureLookupAndModulate(outputColor, samplerName, "coord");
 }
 
 /////////////////////////////////////////////////////////////////////
diff --git a/src/effects/gradients/SkLinearGradient.cpp b/src/effects/gradients/SkLinearGradient.cpp
index 357d1db..78d2f24 100644
--- a/src/effects/gradients/SkLinearGradient.cpp
+++ b/src/effects/gradients/SkLinearGradient.cpp
@@ -552,7 +552,7 @@
                                 const char* inputColor,
                                 const char* samplerName) {
     SkString t;
-    t.printf("%s.x", builder->fSampleCoords.c_str());
+    t.printf("%s.x", builder->defaultTexCoordsName());
     this->emitColorLookup(builder, t.c_str(), outputColor, samplerName);
 }
 
diff --git a/src/effects/gradients/SkRadialGradient.cpp b/src/effects/gradients/SkRadialGradient.cpp
index e11356a..317ab68 100644
--- a/src/effects/gradients/SkRadialGradient.cpp
+++ b/src/effects/gradients/SkRadialGradient.cpp
@@ -552,7 +552,7 @@
                                 const char* inputColor,
                                 const char* samplerName) {
     SkString t;
-    t.printf("length(%s.xy)", builder->fSampleCoords.c_str());
+    t.printf("length(%s.xy)", builder->defaultTexCoordsName());
     this->emitColorLookup(builder, t.c_str(), outputColor, samplerName);
 }
 
diff --git a/src/effects/gradients/SkSweepGradient.cpp b/src/effects/gradients/SkSweepGradient.cpp
index 5b3e4b4..15547de 100644
--- a/src/effects/gradients/SkSweepGradient.cpp
+++ b/src/effects/gradients/SkSweepGradient.cpp
@@ -458,7 +458,7 @@
                               const char* samplerName) {
     SkString t;
     t.printf("atan(- %s.y, - %s.x) * 0.1591549430918 + 0.5",
-        builder->fSampleCoords.c_str(), builder->fSampleCoords.c_str());
+        builder->defaultTexCoordsName(), builder->defaultTexCoordsName());
     this->emitColorLookup(builder, t.c_str(), outputColor, samplerName);
 }
 
diff --git a/src/effects/gradients/SkTwoPointConicalGradient.cpp b/src/effects/gradients/SkTwoPointConicalGradient.cpp
index cdea8d4..8b32ab6 100644
--- a/src/effects/gradients/SkTwoPointConicalGradient.cpp
+++ b/src/effects/gradients/SkTwoPointConicalGradient.cpp
@@ -479,7 +479,7 @@
 
     // For radial gradients without perspective we can pass the linear
     // part of the quadratic as a varying.
-    if (builder->fVaryingDims == builder->fCoordDims) {
+    if (!builder->defaultTextureMatrixIsPerspective()) {
         builder->addVarying(kFloat_GrSLType, "Conical2BCoeff",
                             &fVSVaryingName, &fFSVaryingName);
     }
@@ -497,7 +497,7 @@
 
     // For radial gradients without perspective we can pass the linear
     // part of the quadratic as a varying.
-    if (builder->fVaryingDims == builder->fCoordDims) {
+    if (!builder->defaultTextureMatrixIsPerspective()) {
         // r2Var = -2 * (r2Parm[2] * varCoord.x - r2Param[3] * r2Param[5])
         code->appendf("\t%s = -2.0 * (%s * %s.x + %s * %s);\n",
                       fVSVaryingName, p2.c_str(),
@@ -535,14 +535,12 @@
     // If we we're able to interpolate the linear component,
     // bVar is the varying; otherwise compute it
     SkString bVar;
-    if (builder->fCoordDims == builder->fVaryingDims) {
+    if (!builder->defaultTextureMatrixIsPerspective()) {
         bVar = fFSVaryingName;
-        GrAssert(2 == builder->fVaryingDims);
     } else {
-        GrAssert(3 == builder->fVaryingDims);
         bVar = "b";
         code->appendf("\tfloat %s = -2.0 * (%s * %s.x + %s * %s);\n",
-                      bVar.c_str(), p2.c_str(), builder->fSampleCoords.c_str(),
+                      bVar.c_str(), p2.c_str(), builder->defaultTexCoordsName(),
                       p3.c_str(), p5.c_str());
     }
 
@@ -552,7 +550,7 @@
 
     // c = (x^2)+(y^2) - params[4]
     code->appendf("\tfloat %s = dot(%s, %s) - %s;\n", cName.c_str(),
-                  builder->fSampleCoords.c_str(), builder->fSampleCoords.c_str(),
+                  builder->defaultTexCoordsName(), builder->defaultTexCoordsName(),
                   p4.c_str());
 
     // Non-degenerate case (quadratic)
diff --git a/src/effects/gradients/SkTwoPointRadialGradient.cpp b/src/effects/gradients/SkTwoPointRadialGradient.cpp
index 8da6f83..693dc32 100644
--- a/src/effects/gradients/SkTwoPointRadialGradient.cpp
+++ b/src/effects/gradients/SkTwoPointRadialGradient.cpp
@@ -512,7 +512,7 @@
 
     // For radial gradients without perspective we can pass the linear
     // part of the quadratic as a varying.
-    if (builder->fVaryingDims == builder->fCoordDims) {
+    if (!builder->defaultTextureMatrixIsPerspective()) {
         builder->addVarying(kFloat_GrSLType, "Radial2BCoeff",
                           &fVSVaryingName, &fFSVaryingName);
     }
@@ -528,7 +528,7 @@
 
     // For radial gradients without perspective we can pass the linear
     // part of the quadratic as a varying.
-    if (builder->fVaryingDims == builder->fCoordDims) {
+    if (!builder->defaultTextureMatrixIsPerspective()) {
         // r2Var = 2 * (r2Parm[2] * varCoord.x - r2Param[3])
         code->appendf("\t%s = 2.0 *(%s * %s.x - %s);\n",
                       fVSVaryingName, p2.c_str(),
@@ -561,22 +561,21 @@
     // If we we're able to interpolate the linear component,
     // bVar is the varying; otherwise compute it
     SkString bVar;
-    if (builder->fCoordDims == builder->fVaryingDims) {
+    if (!builder->defaultTextureMatrixIsPerspective()) {
         bVar = fFSVaryingName;
-        GrAssert(2 == builder->fVaryingDims);
     } else {
-        GrAssert(3 == builder->fVaryingDims);
         bVar = "b";
         //bVar.appendS32(stageNum);
         code->appendf("\tfloat %s = 2.0 * (%s * %s.x - %s);\n",
                       bVar.c_str(), p2.c_str(),
-                      builder->fSampleCoords.c_str(), p3.c_str());
+                      builder->defaultTexCoordsName(), p3.c_str());
     }
 
     // c = (x^2)+(y^2) - params[4]
     code->appendf("\tfloat %s = dot(%s, %s) - %s;\n",
-                  cName.c_str(), builder->fSampleCoords.c_str(),
-                  builder->fSampleCoords.c_str(),
+                  cName.c_str(),
+                  builder->defaultTexCoordsName(),
+                  builder->defaultTexCoordsName(),
                   p4.c_str());
 
     // If we aren't degenerate, emit some extra code, and accept a slightly