Chromium Code Reviews| Index: src/gpu/GrRenderTarget.cpp |
| diff --git a/src/gpu/GrRenderTarget.cpp b/src/gpu/GrRenderTarget.cpp |
| index 5cb34e849aa1ed601fe908d7c201066aa554198d..0a362de6e90305a5bf24e21524bdced72a6ffcd0 100644 |
| --- a/src/gpu/GrRenderTarget.cpp |
| +++ b/src/gpu/GrRenderTarget.cpp |
| @@ -72,12 +72,29 @@ void GrRenderTargetPriv::didAttachStencilAttachment(GrStencilAttachment* stencil |
| SkRefCnt_SafeAssign(fRenderTarget->fStencilAttachment, stencilAttachment); |
| } |
| -GrStencilAttachment* GrRenderTargetPriv::attachStencilAttachment() const { |
| +GrStencilAttachment* GrRenderTargetPriv::attachStencilAttachment() { |
| if (fRenderTarget->fStencilAttachment) { |
| return fRenderTarget->fStencilAttachment; |
| } |
| if (!fRenderTarget->wasDestroyed() && fRenderTarget->canAttemptStencilAttachment()) { |
| - fRenderTarget->getGpu()->attachStencilAttachmentToRenderTarget(fRenderTarget); |
| + bool newStencil = fRenderTarget->getGpu()->getStencilAttachment( |
| + fRenderTarget, &fRenderTarget->fStencilAttachment); |
|
jvanverth1
2015/09/14 18:35:07
Indent to (, or at least further over.
|
| + if (!fRenderTarget->completeStencilAttachment()) { |
| + SkSafeSetNull(fRenderTarget->fStencilAttachment); |
| + } else { |
| + if (newStencil) { |
| + // Right now we're clearing the stencil attachment here after it is |
| + // attached to an RT for the first time. When we start matching |
| + // stencil buffers with smaller color targets this will no longer |
| + // be correct because it won't be guaranteed to clear the entire |
| + // sb. |
| + // We used to clear down in the GL subclass using a special purpose |
| + // FBO. But iOS doesn't allow a stencil-only FBO. It reports unsupported |
| + // FBO status. |
| + fRenderTarget->getGpu()->clearStencil(fRenderTarget); |
| + } |
| + } |
| } |
| return fRenderTarget->fStencilAttachment; |
| } |
| + |