Split RenderbufferTexture into 2D and CubeMap specific variants

Issue=306
Signed-off-by: Nicolas Capens

git-svn-id: https://angleproject.googlecode.com/svn/trunk@1078 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/Renderbuffer.cpp b/src/libGLESv2/Renderbuffer.cpp
index 6004255..ed3dbac 100644
--- a/src/libGLESv2/Renderbuffer.cpp
+++ b/src/libGLESv2/Renderbuffer.cpp
@@ -63,68 +63,136 @@
     return dx2es::GetStencilSize(getD3DFormat());
 }
 
-RenderbufferTexture::RenderbufferTexture(Texture *texture, GLenum target) : mTarget(target)
+///// RenderbufferTexture2D Implementation ////////
+
+RenderbufferTexture2D::RenderbufferTexture2D(Texture2D *texture, GLenum target) : mTarget(target)
 {
-    mTexture.set(texture);
+    mTexture2D.set(texture);
 }
 
-RenderbufferTexture::~RenderbufferTexture()
+RenderbufferTexture2D::~RenderbufferTexture2D()
 {
-    mTexture.set(NULL);
+    mTexture2D.set(NULL);
 }
 
 // Textures need to maintain their own reference count for references via
 // Renderbuffers acting as proxies. Here, we notify the texture of a reference.
-void RenderbufferTexture::addProxyRef(const Renderbuffer *proxy)
+void RenderbufferTexture2D::addProxyRef(const Renderbuffer *proxy)
 {
-    mTexture->addProxyRef(proxy);
+    mTexture2D->addProxyRef(proxy);
 }
 
-void RenderbufferTexture::releaseProxy(const Renderbuffer *proxy)
+void RenderbufferTexture2D::releaseProxy(const Renderbuffer *proxy)
 {
-    mTexture->releaseProxy(proxy);
+    mTexture2D->releaseProxy(proxy);
 }
 
-IDirect3DSurface9 *RenderbufferTexture::getRenderTarget()
+IDirect3DSurface9 *RenderbufferTexture2D::getRenderTarget()
 {
-    return mTexture->getRenderTarget(mTarget);
+    return mTexture2D->getRenderTarget(mTarget);
 }
 
-IDirect3DSurface9 *RenderbufferTexture::getDepthStencil()
+IDirect3DSurface9 *RenderbufferTexture2D::getDepthStencil()
 {
     return NULL;
 }
 
-GLsizei RenderbufferTexture::getWidth() const
+GLsizei RenderbufferTexture2D::getWidth() const
 {
-    return mTexture->getWidth(0);
-}
- 
-GLsizei RenderbufferTexture::getHeight() const
-{
-    return mTexture->getHeight(0);
-}
- 
-GLenum RenderbufferTexture::getInternalFormat() const
-{
-    return mTexture->getInternalFormat();
+    return mTexture2D->getWidth(0);
 }
 
-D3DFORMAT RenderbufferTexture::getD3DFormat() const
+GLsizei RenderbufferTexture2D::getHeight() const
 {
-    return mTexture->getD3DFormat();
+    return mTexture2D->getHeight(0);
 }
 
-GLsizei RenderbufferTexture::getSamples() const
+GLenum RenderbufferTexture2D::getInternalFormat() const
+{
+    return mTexture2D->getInternalFormat();
+}
+
+D3DFORMAT RenderbufferTexture2D::getD3DFormat() const
+{
+    return mTexture2D->getD3DFormat();
+}
+
+GLsizei RenderbufferTexture2D::getSamples() const
 {
     return 0;
 }
 
-unsigned int RenderbufferTexture::getSerial() const
+unsigned int RenderbufferTexture2D::getSerial() const
 {
-    return mTexture->getRenderTargetSerial(mTarget);
+    return mTexture2D->getRenderTargetSerial(mTarget);
 }
 
+///// RenderbufferTextureCubeMap Implementation ////////
+
+RenderbufferTextureCubeMap::RenderbufferTextureCubeMap(TextureCubeMap *texture, GLenum target) : mTarget(target)
+{
+    mTextureCubeMap.set(texture);
+}
+
+RenderbufferTextureCubeMap::~RenderbufferTextureCubeMap()
+{
+    mTextureCubeMap.set(NULL);
+}
+
+// Textures need to maintain their own reference count for references via
+// Renderbuffers acting as proxies. Here, we notify the texture of a reference.
+void RenderbufferTextureCubeMap::addProxyRef(const Renderbuffer *proxy)
+{
+    mTextureCubeMap->addProxyRef(proxy);
+}
+
+void RenderbufferTextureCubeMap::releaseProxy(const Renderbuffer *proxy)
+{
+    mTextureCubeMap->releaseProxy(proxy);
+}
+
+IDirect3DSurface9 *RenderbufferTextureCubeMap::getRenderTarget()
+{
+    return mTextureCubeMap->getRenderTarget(mTarget);
+}
+
+IDirect3DSurface9 *RenderbufferTextureCubeMap::getDepthStencil()
+{
+    return NULL;
+}
+
+GLsizei RenderbufferTextureCubeMap::getWidth() const
+{
+    return mTextureCubeMap->getWidth(0);
+}
+
+GLsizei RenderbufferTextureCubeMap::getHeight() const
+{
+    return mTextureCubeMap->getHeight(0);
+}
+
+GLenum RenderbufferTextureCubeMap::getInternalFormat() const
+{
+    return mTextureCubeMap->getInternalFormat();
+}
+
+D3DFORMAT RenderbufferTextureCubeMap::getD3DFormat() const
+{
+    return mTextureCubeMap->getD3DFormat();
+}
+
+GLsizei RenderbufferTextureCubeMap::getSamples() const
+{
+    return 0;
+}
+
+unsigned int RenderbufferTextureCubeMap::getSerial() const
+{
+    return mTextureCubeMap->getRenderTargetSerial(mTarget);
+}
+
+////// Renderbuffer Implementation //////
+
 Renderbuffer::Renderbuffer(GLuint id, RenderbufferInterface *instance) : RefCountObject(id)
 {
     ASSERT(instance != NULL);