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();