Module: Mesa Branch: master Commit: 8ef52974cdbd2995dc3aee1d7a705e7e5e2e83d8 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=8ef52974cdbd2995dc3aee1d7a705e7e5e2e83d8
Author: Samuel Pitoiset <samuel.pitoi...@gmail.com> Date: Fri Jul 10 17:11:10 2020 +0200 radv: destroy the base object if VkCreateBuffer() failed Signed-off-by: Samuel Pitoiset <samuel.pitoi...@gmail.com> Reviewed-by: Bas Nieuwenhuizen <b...@basnieuwenhuizen.nl> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5868> --- src/amd/vulkan/radv_device.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c index 407cc6fc6ac..f449199d994 100644 --- a/src/amd/vulkan/radv_device.c +++ b/src/amd/vulkan/radv_device.c @@ -5886,6 +5886,18 @@ VkResult radv_ResetEvent( return VK_SUCCESS; } +static void +radv_destroy_buffer(struct radv_device *device, + const VkAllocationCallbacks *pAllocator, + struct radv_buffer *buffer) +{ + if ((buffer->flags & VK_BUFFER_CREATE_SPARSE_BINDING_BIT) && buffer->bo) + device->ws->buffer_destroy(buffer->bo); + + vk_object_base_finish(&buffer->base); + vk_free2(&device->vk.alloc, pAllocator, buffer); +} + VkResult radv_CreateBuffer( VkDevice _device, const VkBufferCreateInfo* pCreateInfo, @@ -5922,7 +5934,7 @@ VkResult radv_CreateBuffer( 4096, 0, RADEON_FLAG_VIRTUAL, RADV_BO_PRIORITY_VIRTUAL); if (!buffer->bo) { - vk_free2(&device->vk.alloc, pAllocator, buffer); + radv_destroy_buffer(device, pAllocator, buffer); return vk_error(device->instance, VK_ERROR_OUT_OF_DEVICE_MEMORY); } } @@ -5943,11 +5955,7 @@ void radv_DestroyBuffer( if (!buffer) return; - if (buffer->flags & VK_BUFFER_CREATE_SPARSE_BINDING_BIT) - device->ws->buffer_destroy(buffer->bo); - - vk_object_base_finish(&buffer->base); - vk_free2(&device->vk.alloc, pAllocator, buffer); + radv_destroy_buffer(device, pAllocator, buffer); } VkDeviceAddress radv_GetBufferDeviceAddress( _______________________________________________ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit