Vulkan: Refactor GarbageObject.
Instead of allocating a small bundle for deferred deletion, store a
small triple of {Serial,VkHandle,HandleType}. The HandleType can be
used in a generic way to release the VkHandle, without needing to
store a pointer and use a virtual call.
BUG=angleproject:2200
Change-Id: I30925c2f50fd11dafb1b986ced7d279a7dde827b
Reviewed-on: https://chromium-review.googlesource.com/741163
Commit-Queue: Jamie Madill <jmadill@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 28d9f64..d961981 100644
--- a/src/libANGLE/renderer/vulkan/TextureVk.cpp
+++ b/src/libANGLE/renderer/vulkan/TextureVk.cpp
@@ -31,10 +31,10 @@
ContextVk *contextVk = GetImplAs<ContextVk>(context);
RendererVk *renderer = contextVk->getRenderer();
- renderer->enqueueGarbageOrDeleteNow(*this, std::move(mImage));
- renderer->enqueueGarbageOrDeleteNow(*this, std::move(mDeviceMemory));
- renderer->enqueueGarbageOrDeleteNow(*this, std::move(mImageView));
- renderer->enqueueGarbageOrDeleteNow(*this, std::move(mSampler));
+ renderer->releaseResource(*this, &mImage);
+ renderer->releaseResource(*this, &mDeviceMemory);
+ renderer->releaseResource(*this, &mImageView);
+ renderer->releaseResource(*this, &mSampler);
return gl::NoError();
}
@@ -222,7 +222,7 @@
VK_IMAGE_ASPECT_COLOR_BIT);
// TODO(jmadill): Re-use staging images.
- renderer->enqueueGarbage(renderer->getCurrentQueueSerial(), std::move(stagingImage));
+ renderer->releaseObject(renderer->getCurrentQueueSerial(), &stagingImage);
}
return gl::NoError();