Vulkan: Implement simple render-to-texture.

This was mostly working already, just needed to set up a few entry
points.

BUG=angleproject:2200

Change-Id: I9c13d6d4dd42f23c69a58e42e07e3e28877671a1
Reviewed-on: https://chromium-review.googlesource.com/734237
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
diff --git a/src/libANGLE/renderer/vulkan/TextureVk.cpp b/src/libANGLE/renderer/vulkan/TextureVk.cpp
index 58c0626..28d9f64 100644
--- a/src/libANGLE/renderer/vulkan/TextureVk.cpp
+++ b/src/libANGLE/renderer/vulkan/TextureVk.cpp
@@ -150,6 +150,13 @@
 
     ANGLE_TRY(mSampler.init(device, samplerInfo));
 
+    mRenderTarget.image     = &mImage;
+    mRenderTarget.imageView = &mImageView;
+    mRenderTarget.format    = &vkFormat;
+    mRenderTarget.extents   = size;
+    mRenderTarget.samples   = VK_SAMPLE_COUNT_1_BIT;
+    mRenderTarget.resource  = this;
+
     // Handle initial data.
     // TODO(jmadill): Consider re-using staging texture.
     if (pixels)
@@ -336,8 +343,10 @@
                                                const gl::ImageIndex &imageIndex,
                                                FramebufferAttachmentRenderTarget **rtOut)
 {
-    UNIMPLEMENTED();
-    return gl::InternalError();
+    ASSERT(imageIndex.type == GL_TEXTURE_2D);
+    ASSERT(imageIndex.mipIndex == 0 && imageIndex.layerIndex == gl::ImageIndex::ENTIRE_LEVEL);
+    *rtOut = &mRenderTarget;
+    return gl::NoError();
 }
 
 void TextureVk::syncState(const gl::Texture::DirtyBits &dirtyBits)