Vulkan: Allow in-flight Framebuffer changes.
This allows the app to alter Framebuffer attachments while there
are existing command buffers using the resources and attachments.
BUG=angleproject:2200
Change-Id: I3298dafef5e3bd2c6efda8e8a32a6cf7febc13dc
Reviewed-on: https://chromium-review.googlesource.com/742370
Reviewed-by: Geoff Lang <geofflang@chromium.org>
diff --git a/src/libANGLE/renderer/vulkan/FramebufferVk.cpp b/src/libANGLE/renderer/vulkan/FramebufferVk.cpp
index b8de9b2..b38ab13 100644
--- a/src/libANGLE/renderer/vulkan/FramebufferVk.cpp
+++ b/src/libANGLE/renderer/vulkan/FramebufferVk.cpp
@@ -355,13 +355,15 @@
void FramebufferVk::syncState(const gl::Context *context,
const gl::Framebuffer::DirtyBits &dirtyBits)
{
- auto contextVk = GetImplAs<ContextVk>(context);
+ ContextVk *contextVk = GetImplAs<ContextVk>(context);
+ RendererVk *renderer = contextVk->getRenderer();
ASSERT(dirtyBits.any());
// TODO(jmadill): Smarter update.
- mRenderPass.destroy(contextVk->getDevice());
- mFramebuffer.destroy(contextVk->getDevice());
+ renderer->releaseResource(*this, &mRenderPass);
+ renderer->releaseResource(*this, &mFramebuffer);
+ renderer->onReleaseRenderPass(this);
// TODO(jmadill): Use pipeline cache.
contextVk->invalidateCurrentPipeline();