cleanup GrGLTexture / GrGLRenderTarget cons. Make GrRenderTarget aware of its msaa sample count.
Review URL: http://codereview.appspot.com/4833045/
git-svn-id: http://skia.googlecode.com/svn/trunk@1996 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/gpu/src/GrGLRenderTarget.cpp b/gpu/src/GrGLRenderTarget.cpp
index d21e37f..7be8b32 100644
--- a/gpu/src/GrGLRenderTarget.cpp
+++ b/gpu/src/GrGLRenderTarget.cpp
@@ -13,27 +13,44 @@
#define GPUGL static_cast<GrGpuGL*>(getGpu())
-GrGLRenderTarget::GrGLRenderTarget(GrGpuGL* gpu,
- const GLRenderTargetIDs& ids,
- GrGLTexID* texID,
- GrPixelConfig config,
- GrGLuint stencilBits,
- bool isMultisampled,
- const GrGLIRect& viewport,
- GrGLTexture* texture)
- : INHERITED(gpu, texture, viewport.fWidth,
- viewport.fHeight, config,
- stencilBits, isMultisampled) {
- fRTFBOID = ids.fRTFBOID;
- fTexFBOID = ids.fTexFBOID;
- fStencilRenderbufferID = ids.fStencilRenderbufferID;
- fMSColorRenderbufferID = ids.fMSColorRenderbufferID;
+void GrGLRenderTarget::init(const Desc& desc,
+ const GrGLIRect& viewport,
+ GrGLTexID* texID) {
+ fRTFBOID = desc.fRTFBOID;
+ fTexFBOID = desc.fTexFBOID;
+ fMSColorRenderbufferID = desc.fMSColorRenderbufferID;
+ fStencilRenderbufferID = desc.fStencilRenderbufferID;
fViewport = viewport;
- fOwnIDs = ids.fOwnIDs;
+ fOwnIDs = desc.fOwnIDs;
fTexIDObj = texID;
GrSafeRef(fTexIDObj);
}
+GrGLRenderTarget::GrGLRenderTarget(GrGpuGL* gpu,
+ const Desc& desc,
+ const GrGLIRect& viewport,
+ GrGLTexID* texID,
+ GrGLTexture* texture)
+ : INHERITED(gpu, texture, viewport.fWidth,
+ viewport.fHeight, desc.fConfig,
+ desc.fStencilBits, desc.fSampleCnt) {
+ GrAssert(NULL != texID);
+ GrAssert(NULL != texture);
+ // FBO 0 can't also be a texture, right?
+ GrAssert(0 != desc.fRTFBOID);
+ GrAssert(0 != desc.fTexFBOID);
+ this->init(desc, viewport, texID);
+}
+
+GrGLRenderTarget::GrGLRenderTarget(GrGpuGL* gpu,
+ const Desc& desc,
+ const GrGLIRect& viewport)
+ : INHERITED(gpu, NULL, viewport.fWidth,
+ viewport.fHeight, desc.fConfig,
+ desc.fStencilBits, desc.fSampleCnt) {
+ this->init(desc, viewport, NULL);
+}
+
void GrGLRenderTarget::onRelease() {
GPUGL->notifyRenderTargetDelete(this);
if (fOwnIDs) {