Index: src/gpu/gl/GrGLProgramDesc.cpp |
diff --git a/src/gpu/gl/GrGLProgramDesc.cpp b/src/gpu/gl/GrGLProgramDesc.cpp |
index 789eb6233605fa1de22e288f898e77703aa87858..485e90be8aec3411fdfc6703141a7fbb72b32e4a 100644 |
--- a/src/gpu/gl/GrGLProgramDesc.cpp |
+++ b/src/gpu/gl/GrGLProgramDesc.cpp |
@@ -147,15 +147,15 @@ bool GrGLProgramDescBuilder::Build(GrProgramDesc* desc, |
// make sure any padding in the header is zeroed. |
memset(header, 0, kHeaderSize); |
+ GrRenderTarget* rt = pipeline.getRenderTarget(); |
+ |
if (requiredFeatures & GrProcessor::kFragmentPosition_RequiredFeature) { |
- header->fFragPosKey = |
- GrGLSLFragmentShaderBuilder::KeyForFragmentPosition(pipeline.getRenderTarget()); |
+ header->fFragPosKey = GrGLSLFragmentShaderBuilder::KeyForFragmentPosition(rt); |
} else { |
header->fFragPosKey = 0; |
} |
- header->fOutputSwizzle = |
- glslCaps.configOutputSwizzle(pipeline.getRenderTarget()->config()).asKey(); |
+ header->fOutputSwizzle = glslCaps.configOutputSwizzle(rt->config()).asKey(); |
if (pipeline.ignoresCoverage()) { |
header->fIgnoresCoverage = 1; |
@@ -166,6 +166,15 @@ bool GrGLProgramDescBuilder::Build(GrProgramDesc* desc, |
header->fSnapVerticesToPixelCenters = pipeline.snapVerticesToPixelCenters(); |
header->fColorEffectCnt = pipeline.numColorFragmentProcessors(); |
header->fCoverageEffectCnt = pipeline.numCoverageFragmentProcessors(); |
+ |
+ if (requiredFeatures & GrProcessor::kSampleLocations_RequiredFeature) { |
+ SkASSERT(pipeline.isHWAntialiasState()); |
+ header->fSamplePatternKey = |
+ rt->renderTargetPriv().getSamplePatternID(pipeline.getStencil()); |
+ } else { |
+ header->fSamplePatternKey = 0; |
+ } |
+ |
glDesc->finalize(); |
return true; |
} |