Index: src/gpu/vk/GrVkProgramDesc.cpp |
diff --git a/src/gpu/vk/GrVkProgramDesc.cpp b/src/gpu/vk/GrVkProgramDesc.cpp |
index 32357cdfcc22ca80b770698a464a8bc3c121afb1..f9f2e877fb8f2fea6a68e605ef89efc3af66fcd5 100644 |
--- a/src/gpu/vk/GrVkProgramDesc.cpp |
+++ b/src/gpu/vk/GrVkProgramDesc.cpp |
@@ -134,15 +134,15 @@ bool GrVkProgramDescBuilder::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; |
@@ -153,6 +153,15 @@ bool GrVkProgramDescBuilder::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; |
+ } |
+ |
vkDesc->finalize(); |
return true; |
} |