Create a separate GrStencilBuffer class apart from GrRenderTarget.

Review URL: http://codereview.appspot.com/4837046/



git-svn-id: http://skia.googlecode.com/svn/trunk@2026 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/gpu/src/GrGLRenderTarget.cpp b/gpu/src/GrGLRenderTarget.cpp
index 7be8b32..38b9eb7 100644
--- a/gpu/src/GrGLRenderTarget.cpp
+++ b/gpu/src/GrGLRenderTarget.cpp
@@ -19,7 +19,6 @@
     fRTFBOID                = desc.fRTFBOID;
     fTexFBOID               = desc.fTexFBOID;
     fMSColorRenderbufferID  = desc.fMSColorRenderbufferID;
-    fStencilRenderbufferID  = desc.fStencilRenderbufferID;
     fViewport               = viewport;
     fOwnIDs                 = desc.fOwnIDs;
     fTexIDObj               = texID;
@@ -32,8 +31,7 @@
                                    GrGLTexID* texID,
                                    GrGLTexture* texture)
     : INHERITED(gpu, texture, viewport.fWidth,
-                viewport.fHeight, desc.fConfig,
-                desc.fStencilBits, desc.fSampleCnt) {
+                viewport.fHeight, desc.fConfig, desc.fSampleCnt) {
     GrAssert(NULL != texID);
     GrAssert(NULL != texture);
     // FBO 0 can't also be a texture, right?
@@ -46,8 +44,7 @@
                                    const Desc& desc,
                                    const GrGLIRect& viewport)
     : INHERITED(gpu, NULL, viewport.fWidth,
-                viewport.fHeight, desc.fConfig,
-                desc.fStencilBits, desc.fSampleCnt) {
+                viewport.fHeight, desc.fConfig, desc.fSampleCnt) {
     this->init(desc, viewport, NULL);
 }
 
@@ -60,29 +57,26 @@
         if (fRTFBOID && fRTFBOID != fTexFBOID) {
             GR_GL(DeleteFramebuffers(1, &fRTFBOID));
         }
-        if (fStencilRenderbufferID) {
-            GR_GL(DeleteRenderbuffers(1, &fStencilRenderbufferID));
-        }
         if (fMSColorRenderbufferID) {
             GR_GL(DeleteRenderbuffers(1, &fMSColorRenderbufferID));
         }
     }
     fRTFBOID                = 0;
     fTexFBOID               = 0;
-    fStencilRenderbufferID  = 0;
     fMSColorRenderbufferID  = 0;
     GrSafeUnref(fTexIDObj);
     fTexIDObj = NULL;
+    GrSafeSetNull(fStencilBuffer);
 }
 
 void GrGLRenderTarget::onAbandon() {
     fRTFBOID                = 0;
     fTexFBOID               = 0;
-    fStencilRenderbufferID  = 0;
     fMSColorRenderbufferID  = 0;
     if (NULL != fTexIDObj) {
         fTexIDObj->abandon();
         fTexIDObj = NULL;
     }
+    GrSafeSetNull(fStencilBuffer);
 }