Use a single stencil buffer for a given width,height,samplecount
Review URL: http://codereview.appspot.com/4854044/
git-svn-id: http://skia.googlecode.com/svn/trunk@2061 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/gpu/src/GrRenderTarget.cpp b/gpu/src/GrRenderTarget.cpp
index 8a73a84..7b26811 100644
--- a/gpu/src/GrRenderTarget.cpp
+++ b/gpu/src/GrRenderTarget.cpp
@@ -31,7 +31,10 @@
} else {
colorBits = GrBytesPerPixel(fConfig);
}
- return fAllocatedWidth * fAllocatedHeight * colorBits * GrMax(1,fSampleCnt);
+ return (size_t) fAllocatedWidth *
+ fAllocatedHeight *
+ colorBits *
+ GrMax(1,fSampleCnt);
}
void GrRenderTarget::flagAsNeedingResolve(const GrIRect* rect) {
@@ -59,5 +62,13 @@
}
void GrRenderTarget::setStencilBuffer(GrStencilBuffer* stencilBuffer) {
- GrSafeAssign(fStencilBuffer, stencilBuffer);
+ if (NULL != fStencilBuffer) {
+ fStencilBuffer->wasDetachedFromRenderTarget(this);
+ fStencilBuffer->unref();
+ }
+ fStencilBuffer = stencilBuffer;
+ if (NULL != fStencilBuffer) {
+ fStencilBuffer->wasAttachedToRenderTarget(this);
+ fStencilBuffer->ref();
+ }
}
\ No newline at end of file