Refactor Framebuffer attachment application.

Instead of passing texture and renderbufer IDs which requires a call to
gl::getNonLostContext to resolve the objects, pass the Texture and Renderbuffer
objects directly.

BUG=angleproject:733

Change-Id: Ia500a781643e43a17c8e9cea9f95847a7ff7b25d
Reviewed-on: https://chromium-review.googlesource.com/228280
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
diff --git a/src/libGLESv2/Framebuffer.h b/src/libGLESv2/Framebuffer.h
index 87f44c5..d0fe893 100644
--- a/src/libGLESv2/Framebuffer.h
+++ b/src/libGLESv2/Framebuffer.h
@@ -27,6 +27,9 @@
 namespace gl
 {
 class FramebufferAttachment;
+class Texture;
+class Renderbuffer;
+struct ImageIndex;
 struct Caps;
 struct Extensions;
 class TextureCapsMap;
@@ -42,10 +45,9 @@
 
     GLuint id() const { return mId; }
 
-    void setColorbuffer(unsigned int colorAttachment, GLenum type, GLuint colorbuffer, GLint level, GLint layer);
-    void setDepthbuffer(GLenum type, GLuint depthbuffer, GLint level, GLint layer);
-    void setStencilbuffer(GLenum type, GLuint stencilbuffer, GLint level, GLint layer);
-    void setDepthStencilBuffer(GLenum type, GLuint depthStencilBuffer, GLint level, GLint layer);
+    void setTextureAttachment(GLenum attachment, Texture *texture, const ImageIndex &imageIndex);
+    void setRenderbufferAttachment(GLenum attachment, Renderbuffer *renderbuffer);
+    void setNULLAttachment(GLenum attachment);
 
     void detachTexture(GLuint texture);
     void detachRenderbuffer(GLuint renderbuffer);
@@ -94,7 +96,7 @@
   private:
     DISALLOW_COPY_AND_ASSIGN(Framebuffer);
 
-    FramebufferAttachment *createAttachment(GLenum binding, GLenum type, GLuint handle, GLint level, GLint layer) const;
+    void setAttachment(GLenum attachment, FramebufferAttachment *attachmentObj);
 };
 
 class DefaultFramebuffer : public Framebuffer