Vulkan: Support EGL_ANDROID_image_native_buffer on Android.
BUG=angleproject:2668
BUG=angleproject:3121
Change-Id: I0dfb2ec0737ebd963b0fadb78cf720a90874f00b
Reviewed-on: https://chromium-review.googlesource.com/c/1452264
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
diff --git a/src/libANGLE/renderer/vulkan/RenderbufferVk.cpp b/src/libANGLE/renderer/vulkan/RenderbufferVk.cpp
index ef49e38..1e485a9 100644
--- a/src/libANGLE/renderer/vulkan/RenderbufferVk.cpp
+++ b/src/libANGLE/renderer/vulkan/RenderbufferVk.cpp
@@ -139,6 +139,16 @@
VkImageAspectFlags aspect = vk::GetFormatAspectFlags(textureFormat);
+ // Transfer the image to this queue if needed
+ uint32_t rendererQueueFamilyIndex = contextVk->getRenderer()->getQueueFamilyIndex();
+ if (mImage->isQueueChangeNeccesary(rendererQueueFamilyIndex))
+ {
+ vk::CommandBuffer *commandBuffer = nullptr;
+ ANGLE_TRY(mImage->recordCommands(contextVk, &commandBuffer));
+ mImage->changeLayoutAndQueue(aspect, vk::ImageLayout::ColorAttachment,
+ rendererQueueFamilyIndex, commandBuffer);
+ }
+
ANGLE_TRY(mImage->initLayerImageView(contextVk, imageVk->getImageTextureType(), aspect,
gl::SwizzleState(), &mImageView, imageVk->getImageLevel(),
1, imageVk->getImageLayer(), 1));