Passes the Renderer to various objects at construction time.

TRAC #22000

Signed-off-by: Daniel Koch

Author:    Shannon Woods

git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@1406 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/Context.cpp b/src/libGLESv2/Context.cpp
index 974cb49..4c1383a 100644
--- a/src/libGLESv2/Context.cpp
+++ b/src/libGLESv2/Context.cpp
@@ -321,8 +321,8 @@
     // Wrap the existing swapchain resources into GL objects and assign them to the '0' names
     rx::SwapChain *swapchain = surface->getSwapChain();
 
-    Colorbuffer *colorbufferZero = new Colorbuffer(swapchain);
-    DepthStencilbuffer *depthStencilbufferZero = new DepthStencilbuffer(swapchain);
+    Colorbuffer *colorbufferZero = new Colorbuffer(mRenderer, swapchain);
+    DepthStencilbuffer *depthStencilbufferZero = new DepthStencilbuffer(mRenderer, swapchain);
     Framebuffer *framebufferZero = new DefaultFramebuffer(mRenderer, colorbufferZero, depthStencilbufferZero);
 
     setFramebufferZero(framebufferZero);
@@ -1250,8 +1250,31 @@
     }
 }
 
-void Context::setRenderbufferStorage(RenderbufferStorage *renderbuffer)
+void Context::setRenderbufferStorage(GLsizei width, GLsizei height, GLenum internalformat, GLsizei samples)
 {
+    RenderbufferStorage *renderbuffer = NULL;
+    switch (internalformat)
+    {
+      case GL_DEPTH_COMPONENT16:
+        renderbuffer = new gl::Depthbuffer(mRenderer, width, height, samples);
+        break;
+      case GL_RGBA4:
+      case GL_RGB5_A1:
+      case GL_RGB565:
+      case GL_RGB8_OES:
+      case GL_RGBA8_OES:
+        renderbuffer = new gl::Colorbuffer(mRenderer,width, height, internalformat, samples);
+        break;
+      case GL_STENCIL_INDEX8:
+        renderbuffer = new gl::Stencilbuffer(mRenderer, width, height, samples);
+        break;
+      case GL_DEPTH24_STENCIL8_OES:
+        renderbuffer = new gl::DepthStencilbuffer(mRenderer, width, height, samples);
+        break;
+      default:
+        UNREACHABLE(); return;
+    }
+
     Renderbuffer *renderbufferObject = mState.renderbuffer.get();
     renderbufferObject->setStorage(renderbuffer);
 }