Index: src/gpu/gl/GrGLProgramDesc.cpp |
diff --git a/src/gpu/gl/GrGLProgramDesc.cpp b/src/gpu/gl/GrGLProgramDesc.cpp |
index 068386c3aa94a5e761da2620714967de81b6d842..2476c5532cc3cd89cc14af1c7ccdf4e53ccc6112 100644 |
--- a/src/gpu/gl/GrGLProgramDesc.cpp |
+++ b/src/gpu/gl/GrGLProgramDesc.cpp |
@@ -189,13 +189,21 @@ bool GrGLProgramDescBuilder::Build(const GrOptDrawState& optState, |
const GrFragmentProcessor& fp = *fps.getProcessor(); |
GrProcessorKeyBuilder b(&desc->fKey); |
fp.getGLProcessorKey(gpu->glCaps(), &b); |
- if (!get_meta_key(*fps.getProcessor(), gpu->glCaps(), |
- gen_transform_key(fps, requiresLocalCoordAttrib), 0, &b)) { |
+ if (!get_meta_key(fp, gpu->glCaps(), |
+ gen_transform_key(fps, requiresLocalCoordAttrib), 0, &b)) { |
desc->fKey.reset(); |
return false; |
} |
} |
+ const GrXferProcessor& xp = *optState.getXferProcessor(); |
+ GrProcessorKeyBuilder b(&desc->fKey); |
+ xp.getGLProcessorKey(gpu->glCaps(), &b); |
+ if (!get_meta_key(xp, gpu->glCaps(), 0, 0, &b)) { |
+ desc->fKey.reset(); |
+ return false; |
+ } |
+ |
// --------DO NOT MOVE HEADER ABOVE THIS LINE-------------------------------------------------- |
// Because header is a pointer into the dynamic array, we can't push any new data into the key |
// below here. |
@@ -260,9 +268,6 @@ bool GrGLProgramDescBuilder::Build(const GrOptDrawState& optState, |
header->fFragPosKey = 0; |
} |
- header->fPrimaryOutputType = descInfo.fPrimaryOutputType; |
- header->fSecondaryOutputType = descInfo.fSecondaryOutputType; |
- |
header->fColorEffectCnt = optState.numColorStages(); |
header->fCoverageEffectCnt = optState.numCoverageStages(); |
desc->finalize(); |