Accept RenderTargets as parameters to Image::copy.

This gives us the flexibility to use copy internally for Textures
as well as FBO attachments. This will be useful for the TexSubImage
performance workaround.

BUG=angle:729

Change-Id: I4df8ef3a5a928d44ef84100cd96a5d35f12b47fa
Reviewed-on: https://chromium-review.googlesource.com/219863
Tested-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
diff --git a/src/libGLESv2/renderer/Image.cpp b/src/libGLESv2/renderer/Image.cpp
index 40721f3..370f660 100644
--- a/src/libGLESv2/renderer/Image.cpp
+++ b/src/libGLESv2/renderer/Image.cpp
@@ -9,6 +9,8 @@
 // surfaces or resources.
 
 #include "libGLESv2/renderer/Image.h"
+#include "libGLESv2/Framebuffer.h"
+#include "libGLESv2/main.h"
 
 namespace rx
 {
@@ -25,4 +27,18 @@
     mDirty = false;
 }
 
+void Image::copy(GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height, gl::Framebuffer *source)
+{
+    gl::FramebufferAttachment *colorbuffer = source->getReadColorbuffer();
+
+    if (!colorbuffer)
+    {
+        return gl::error(GL_OUT_OF_MEMORY);
+    }
+
+    RenderTarget *renderTarget = GetAttachmentRenderTarget(colorbuffer);
+    ASSERT(renderTarget);
+    copy(xoffset, yoffset, zoffset, x, y, width, height, renderTarget);
+}
+
 }