Commit 3a23edd1 authored by Michael Spang's avatar Michael Spang Committed by Commit Bot

ozone: demo: Add missing destruction of per-buffer vulkan objects

Bug: 851997
Test: ozone_demo --enable-vulkan on vulkan-enabled eve
Change-Id: I08164f47a83387e4d9311cf5271b410402c5f1ec
Reviewed-on: https://chromium-review.googlesource.com/1115569
Commit-Queue: Michael Spang <spang@chromium.org>
Reviewed-by: default avatarDaniel Nicoara <dnicoara@chromium.org>
Reviewed-by: default avatarRobert Kroeger <rjkroege@chromium.org>
Cr-Commit-Position: refs/heads/master@{#570868}
parent 9e668c3e
......@@ -48,8 +48,7 @@ VulkanOverlayRenderer::VulkanOverlayRenderer(
weak_ptr_factory_(this) {}
VulkanOverlayRenderer::~VulkanOverlayRenderer() {
for (auto& buffer : buffers_)
buffer.reset();
DestroyBuffers();
command_buffer_->Destroy();
command_buffer_.reset();
command_pool_->Destroy();
......@@ -118,9 +117,28 @@ bool VulkanOverlayRenderer::Initialize() {
return true;
}
void VulkanOverlayRenderer::DestroyBuffers() {
VkDevice vk_device = device_queue_->GetVulkanDevice();
for (std::unique_ptr<Buffer>& buffer : buffers_) {
if (!buffer)
continue;
vulkan_function_pointers_->vkDestroyFramebuffer(
vk_device, buffer->vk_framebuffer(), nullptr);
vulkan_function_pointers_->vkDestroyImageView(
vk_device, buffer->vk_image_view(), nullptr);
vulkan_function_pointers_->vkDestroyImage(vk_device, buffer->vk_image(),
nullptr);
vulkan_function_pointers_->vkFreeMemory(
vk_device, buffer->vk_device_memory(), nullptr);
buffer.reset();
}
}
void VulkanOverlayRenderer::RecreateBuffers() {
TRACE_EVENT0("ozone", "VulkanOverlayRenderer::RecreateBuffers");
DestroyBuffers();
for (auto& buffer : buffers_) {
buffer = Buffer::Create(surface_factory_ozone_, vulkan_function_pointers_,
device_queue_->GetVulkanDevice(), render_pass_,
......
......@@ -44,6 +44,7 @@ class VulkanOverlayRenderer : public RendererBase {
bool Initialize() override;
private:
void DestroyBuffers();
void RecreateBuffers();
void RenderFrame();
void PostRenderFrameTask();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment