| 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);
|
| + 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;
|
| }
|
| +
|
|
|