Index: src/gpu/GrRenderTarget.cpp |
diff --git a/src/gpu/GrRenderTarget.cpp b/src/gpu/GrRenderTarget.cpp |
index 0bcde3bafe8e6c0d8a7ea64ede2194b98d0a1400..09d43f99e4085764da7a58c4656490ab3a94b9df 100644 |
--- a/src/gpu/GrRenderTarget.cpp |
+++ b/src/gpu/GrRenderTarget.cpp |
@@ -105,7 +105,14 @@ int GrRenderTargetPriv::numStencilBits() const { |
const GrGpu::MultisampleSpecs& |
GrRenderTargetPriv::getMultisampleSpecs(const GrStencilSettings& stencil) const { |
- return fRenderTarget->getGpu()->getMultisampleSpecs(fRenderTarget, stencil); |
+ GrGpu* gpu = fRenderTarget->getGpu(); |
+ if (auto id = fRenderTarget->fMultisampleSpecsID) { |
+ SkASSERT(gpu->queryMultisampleSpecs(fRenderTarget, stencil).fUniqueID == id); |
+ return gpu->getMultisampleSpecs(id); |
+ } |
+ const GrGpu::MultisampleSpecs& specs = gpu->queryMultisampleSpecs(fRenderTarget, stencil); |
+ fRenderTarget->fMultisampleSpecsID = specs.fUniqueID; |
+ return specs; |
} |
int GrRenderTargetPriv::maxWindowRectangles() const { |