| Index: src/gpu/gl/GrGLGpu.cpp
 | 
| diff --git a/src/gpu/gl/GrGLGpu.cpp b/src/gpu/gl/GrGLGpu.cpp
 | 
| index ef4423ba6be17d7a1004eb886948a2fdf24ba650..8710931301eae53fc39b2d930ece9f04301d7e5a 100644
 | 
| --- a/src/gpu/gl/GrGLGpu.cpp
 | 
| +++ b/src/gpu/gl/GrGLGpu.cpp
 | 
| @@ -11,6 +11,7 @@
 | 
|  #include "GrGLTextureRenderTarget.h"
 | 
|  #include "GrGpuResourcePriv.h"
 | 
|  #include "GrPipeline.h"
 | 
| +#include "GrRenderTargetPriv.h"
 | 
|  #include "GrSurfacePriv.h"
 | 
|  #include "GrTemplates.h"
 | 
|  #include "GrTexturePriv.h"
 | 
| @@ -454,7 +455,7 @@ GrRenderTarget* GrGLGpu::onWrapBackendRenderTarget(const GrBackendRenderTargetDe
 | 
|                                              desc.fHeight,
 | 
|                                              desc.fSampleCnt,
 | 
|                                              format));
 | 
| -        tgt->setStencilBuffer(sb);
 | 
| +        tgt->renderTargetPriv().didAttachStencilBuffer(sb);
 | 
|          sb->unref();
 | 
|      }
 | 
|      return tgt;
 | 
| @@ -1175,7 +1176,7 @@ bool GrGLGpu::createStencilBufferForRenderTarget(GrRenderTarget* rt, int width,
 | 
|                                                    (this, sbDesc, width, height, samples, format)));
 | 
|              if (this->attachStencilBufferToRenderTarget(sb, rt)) {
 | 
|                  fLastSuccessfulStencilFmtIdx = sIdx;
 | 
| -                rt->setStencilBuffer(sb);
 | 
| +                rt->renderTargetPriv().didAttachStencilBuffer(sb);
 | 
|                  return true;
 | 
|              }
 | 
|              // Remove the scratch key from this resource so we don't grab it from the cache ever
 | 
| @@ -1195,7 +1196,7 @@ bool GrGLGpu::attachStencilBufferToRenderTarget(GrStencilBuffer* sb, GrRenderTar
 | 
|      GrGLuint fbo = glrt->renderFBOID();
 | 
|  
 | 
|      if (NULL == sb) {
 | 
| -        if (rt->getStencilBuffer()) {
 | 
| +        if (rt->renderTargetPriv().getStencilBuffer()) {
 | 
|              GL_CALL(FramebufferRenderbuffer(GR_GL_FRAMEBUFFER,
 | 
|                                              GR_GL_STENCIL_ATTACHMENT,
 | 
|                                              GR_GL_RENDERBUFFER, 0));
 | 
| @@ -1570,10 +1571,11 @@ void GrGLGpu::clearStencil(GrRenderTarget* target) {
 | 
|  void GrGLGpu::onClearStencilClip(GrRenderTarget* target, const SkIRect& rect, bool insideClip) {
 | 
|      SkASSERT(target);
 | 
|  
 | 
| +    GrStencilBuffer* sb = target->renderTargetPriv().getStencilBuffer();
 | 
|      // this should only be called internally when we know we have a
 | 
|      // stencil buffer.
 | 
| -    SkASSERT(target->getStencilBuffer());
 | 
| -    GrGLint stencilBitCount =  target->getStencilBuffer()->bits();
 | 
| +    SkASSERT(sb);
 | 
| +    GrGLint stencilBitCount =  sb->bits();
 | 
|  #if 0
 | 
|      SkASSERT(stencilBitCount > 0);
 | 
|      GrGLint clipStencilMask  = (1 << (stencilBitCount - 1));
 | 
| @@ -2560,7 +2562,7 @@ bool GrGLGpu::initCopySurfaceDstDesc(const GrSurface* src, GrSurfaceDesc* desc)
 | 
|          // then we set up for that, otherwise fail.
 | 
|          if (this->caps()->isConfigRenderable(kBGRA_8888_GrPixelConfig, false)) {
 | 
|              desc->fOrigin = kDefault_GrSurfaceOrigin;
 | 
| -            desc->fFlags = kRenderTarget_GrSurfaceFlag | kNoStencil_GrSurfaceFlag;
 | 
| +            desc->fFlags = kRenderTarget_GrSurfaceFlag;
 | 
|              desc->fConfig = kBGRA_8888_GrPixelConfig;
 | 
|              return true;
 | 
|          }
 | 
| @@ -2576,7 +2578,7 @@ bool GrGLGpu::initCopySurfaceDstDesc(const GrSurface* src, GrSurfaceDesc* desc)
 | 
|          // fail.
 | 
|          if (this->caps()->isConfigRenderable(src->config(), false)) {
 | 
|              desc->fOrigin = kDefault_GrSurfaceOrigin;
 | 
| -            desc->fFlags = kRenderTarget_GrSurfaceFlag | kNoStencil_GrSurfaceFlag;
 | 
| +            desc->fFlags = kRenderTarget_GrSurfaceFlag;
 | 
|              desc->fConfig = src->config();
 | 
|              return true;
 | 
|          }
 | 
| 
 |