Index: src/gpu/gl/GrGLProgramDesc.cpp |
diff --git a/src/gpu/gl/GrGLProgramDesc.cpp b/src/gpu/gl/GrGLProgramDesc.cpp |
index 6867a1329b048b59384dfded65f122eee414d05b..85fccc1696c16b47b3a10305075361ade408abeb 100644 |
--- a/src/gpu/gl/GrGLProgramDesc.cpp |
+++ b/src/gpu/gl/GrGLProgramDesc.cpp |
@@ -178,13 +178,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. |
@@ -249,9 +257,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(); |