Pass the GrCustomStage and key to GrGLProgramStage emitCode.

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
This commit is contained in:
bsalomon@google.com 2012-10-24 17:34:46 +00:00
parent 985fa79141
commit 96182216f1
2 changed files with 14 additions and 1 deletions

View 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");

View 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,