Pass the GrCustomStage and key to GrGLProgramStage emitCode.
authorbsalomon@google.com <bsalomon@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Wed, 24 Oct 2012 17:34:46 +0000 (17:34 +0000)
committerbsalomon@google.com <bsalomon@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Wed, 24 Oct 2012 17:34:46 +0000 (17:34 +0000)
The key computation may encode some analysis that emitCode may be able to skip by examining the key.
Review URL: https://codereview.appspot.com/6709075

git-svn-id: http://skia.googlecode.com/svn/trunk@6075 2bbb7eff-a529-9590-31e7-b0007b416f81

src/gpu/gl/GrGLProgram.cpp
src/gpu/gl/GrGLProgramStage.h

index bc17ebf..d5ccdac 100644 (file)
@@ -955,7 +955,13 @@ GrGLProgramStage* GrGLProgram::GenStageCode(const GrCustomStage* stage,
     // Enclose custom code in a block to avoid namespace conflicts
     builder->fVSCode.appendf("\t{ // %s\n", glStage->name());
     builder->fFSCode.appendf("\t{ // %s \n", glStage->name());
-    glStage->emitCode(builder, varyingVSName, fsOutColor, fsInColor, textureSamplers);
+    glStage->emitCode(builder,
+                      *stage,
+                      desc.fCustomStageKey,
+                      varyingVSName,
+                      fsOutColor,
+                      fsInColor,
+                      textureSamplers);
     builder->fVSCode.appendf("\t}\n");
     builder->fFSCode.appendf("\t}\n");
 
index d835c0b..fce82d2 100644 (file)
@@ -50,6 +50,9 @@ public:
         stages.
 
         @param builder      Interface used to emit code in the shaders.
+        @param stage        The custom stage that generated this program stage.
+        @param key          The key that was computed by StageKey() from the generating
+                            GrCustomStage.
         @param vertexCoords A vec2 of texture coordinates in the VS, which may be altered. This will
                             be removed soon and stages will be responsible for computing their own
                             coords.
@@ -66,6 +69,8 @@ public:
                             reads in the generated code.
         */
     virtual void emitCode(GrGLShaderBuilder* builder,
+                          const GrCustomStage& stage,
+                          StageKey key,
                           const char* vertexCoords,
                           const char* outputColor,
                           const char* inputColor,
@@ -103,6 +108,8 @@ public:
                         const TextureSamplerArray&) = 0;
 
     virtual void emitCode(GrGLShaderBuilder* builder,
+                          const GrCustomStage&,
+                          StageKey,
                           const char* vertexCoords,
                           const char* outputColor,
                           const char* inputColor,