mirror of https://github.com/ocornut/imgui
Proper destruction and device sync if resize is required
This commit is contained in:
parent
286cd5bd41
commit
634554588a
|
@ -397,10 +397,19 @@ static void CreateOrResizeBuffer(VkBuffer& buffer, VkDeviceMemory& buffer_memory
|
|||
ImGui_ImplVulkan_Data* bd = ImGui_ImplVulkan_GetBackendData();
|
||||
ImGui_ImplVulkan_InitInfo* v = &bd->VulkanInitInfo;
|
||||
VkResult err;
|
||||
if (buffer != VK_NULL_HANDLE)
|
||||
vkDestroyBuffer(v->Device, buffer, v->Allocator);
|
||||
if (buffer_memory != VK_NULL_HANDLE)
|
||||
vkFreeMemory(v->Device, buffer_memory, v->Allocator);
|
||||
|
||||
// Destroy resources if they existed already
|
||||
if (buffer != VK_NULL_HANDLE || buffer_memory != VK_NULL_HANDLE)
|
||||
{
|
||||
//sync device to avoid deleting buffers that might be used by the gpu in a command list.
|
||||
err = vkDeviceWaitIdle(v->Device);
|
||||
check_vk_result(err);
|
||||
|
||||
if (buffer != VK_NULL_HANDLE)
|
||||
vkDestroyBuffer(v->Device, buffer, v->Allocator);
|
||||
if (buffer_memory != VK_NULL_HANDLE)
|
||||
vkFreeMemory(v->Device, buffer_memory, v->Allocator);
|
||||
}
|
||||
|
||||
VkDeviceSize buffer_size_aligned = AlignBufferSize(IM_MAX(v->MinAllocationSize, new_size), bd->BufferMemoryAlignment);
|
||||
VkBufferCreateInfo buffer_info = {};
|
||||
|
|
Loading…
Reference in New Issue