Add error handling to RenderTarget creation.

 * RenderTarget9/11 don't create any resources themselves anymore.
 * Pass the real internal format to RenderTarget creation so that it is
   not lost by converting to D3D formats and back.

BUG=angle:520

Change-Id: If420970d42f0bf6ce392d64f9cb7efa4df0b8f8e
Reviewed-on: https://chromium-review.googlesource.com/222838
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
diff --git a/src/libGLESv2/Renderbuffer.cpp b/src/libGLESv2/Renderbuffer.cpp
index 30a7b86..90c758a 100644
--- a/src/libGLESv2/Renderbuffer.cpp
+++ b/src/libGLESv2/Renderbuffer.cpp
@@ -38,15 +38,21 @@
     SafeDelete(mRenderbuffer);
 }
 
-void Renderbuffer::setStorage(GLsizei width, GLsizei height, GLenum internalformat, GLsizei samples)
+Error Renderbuffer::setStorage(GLsizei width, GLsizei height, GLenum internalformat, GLsizei samples)
 {
+    Error error = mRenderbuffer->setStorage(width, height, internalformat, samples);
+    if (error.isError())
+    {
+        return error;
+    }
+
     mWidth = width;
     mHeight = height;
     mInternalFormat = internalformat;
     mSamples = samples;
-
-    mRenderbuffer->setStorage(width, height, internalformat, samples);
     mActualFormat = mRenderbuffer->getActualFormat();
+
+    return Error(GL_NO_ERROR);
 }
 
 rx::RenderbufferImpl *Renderbuffer::getImplementation()