Re-revert r6233.



git-svn-id: http://skia.googlecode.com/svn/trunk@6239 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/gpu/gl/GrGLProgram.cpp b/src/gpu/gl/GrGLProgram.cpp
index 120bd1e..cd16d9e 100644
--- a/src/gpu/gl/GrGLProgram.cpp
+++ b/src/gpu/gl/GrGLProgram.cpp
@@ -909,64 +909,57 @@
 
     /// Vertex Shader Stuff
 
-    const char* vertexCoords;
+    // decide whether we need a matrix to transform texture coords and whether the varying needs a
+    // perspective coord.
+    const char* matName = NULL;
+    GrSLType texCoordVaryingType;
+    if (desc.fOptFlags & StageDesc::kIdentityMatrix_OptFlagBit) {
+        texCoordVaryingType = kVec2f_GrSLType;
+    } else {
+        uniforms->fTextureMatrixUni = builder->addUniform(GrGLShaderBuilder::kVertex_ShaderType,
+                                                         kMat33f_GrSLType, "TexM", &matName);
+        builder->getUniformVariable(uniforms->fTextureMatrixUni);
 
-    // Has the effect not yet been updated to insert its own texture matrix if necessary.
-    if (glEffect->requiresTextureMatrix()) {
-        // Decide whether we need a matrix to transform texture coords and whether the varying needs
-        // a perspective coord.
-        const char* matName = NULL;
-        GrSLType texCoordVaryingType;
-        if (desc.fOptFlags & StageDesc::kIdentityMatrix_OptFlagBit) {
+        if (desc.fOptFlags & StageDesc::kNoPerspective_OptFlagBit) {
             texCoordVaryingType = kVec2f_GrSLType;
         } else {
-            uniforms->fTextureMatrixUni = builder->addUniform(GrGLShaderBuilder::kVertex_ShaderType,
-                                                              kMat33f_GrSLType, "TexM", &matName);
-            builder->getUniformVariable(uniforms->fTextureMatrixUni);
-
-            if (desc.fOptFlags & StageDesc::kNoPerspective_OptFlagBit) {
-                texCoordVaryingType = kVec2f_GrSLType;
-            } else {
-                texCoordVaryingType = kVec3f_GrSLType;
-            }
+            texCoordVaryingType = kVec3f_GrSLType;
         }
-        const char *varyingVSName, *varyingFSName;
-        builder->addVarying(texCoordVaryingType,
-                            "Stage",
-                            &varyingVSName,
-                            &varyingFSName);
-        builder->setupTextureAccess(varyingFSName, texCoordVaryingType);
-
-        if (!matName) {
-            GrAssert(kVec2f_GrSLType == texCoordVaryingType);
-            builder->fVSCode.appendf("\t%s = %s;\n", varyingVSName, vsInCoord);
-        } else {
-            // varying = texMatrix * texCoord
-            builder->fVSCode.appendf("\t%s = (%s * vec3(%s, 1))%s;\n",
-                                     varyingVSName, matName, vsInCoord,
-                                     vector_all_coords(GrSLTypeToVecLength(texCoordVaryingType)));
-        }
-        vertexCoords = varyingVSName;
-    } else {
-        vertexCoords = vsInCoord;
     }
+    const char *varyingVSName, *varyingFSName;
+    builder->addVarying(texCoordVaryingType,
+                        "Stage",
+                        &varyingVSName,
+                        &varyingFSName);
+    builder->setupTextureAccess(varyingFSName, texCoordVaryingType);
 
-    // setup texture samplers for gl effect
     int numTextures = effect->numTextures();
     SkSTArray<8, GrGLShaderBuilder::TextureSampler> textureSamplers;
+
     textureSamplers.push_back_n(numTextures);
+
     for (int i = 0; i < numTextures; ++i) {
         textureSamplers[i].init(builder, &effect->textureAccess(i));
         uniforms->fSamplerUniforms.push_back(textureSamplers[i].fSamplerUniform);
     }
 
+    if (!matName) {
+        GrAssert(kVec2f_GrSLType == texCoordVaryingType);
+        builder->fVSCode.appendf("\t%s = %s;\n", varyingVSName, vsInCoord);
+    } else {
+        // varying = texMatrix * texCoord
+        builder->fVSCode.appendf("\t%s = (%s * vec3(%s, 1))%s;\n",
+                                  varyingVSName, matName, vsInCoord,
+                                  vector_all_coords(GrSLTypeToVecLength(texCoordVaryingType)));
+    }
+
     // Enclose custom code in a block to avoid namespace conflicts
     builder->fVSCode.appendf("\t{ // %s\n", glEffect->name());
     builder->fFSCode.appendf("\t{ // %s \n", glEffect->name());
     glEffect->emitCode(builder,
                        stage,
                        desc.fEffectKey,
-                       vertexCoords,
+                       varyingVSName,
                        fsOutColor,
                        fsInColor,
                        textureSamplers);