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)