Corrects error handling when image creation fails and fixes
shutdown behaviour in error cases.
Change-Id: I29b9fbd237b90f6007e4731d9019efb6b4c256ff
Signed-off-by: Iason Paraskevopoulos <iason.paraskevopoulos@arm.com>
/*
- * Copyright (c) 2017-2019 Arm Limited.
+ * Copyright (c) 2017-2020 Arm Limited.
*
* SPDX-License-Identifier: MIT
*
{
VkResult res = VK_SUCCESS;
res = m_device_data.disp.CreateImage(m_device, &image_create, nullptr, &image.image);
- assert(VK_SUCCESS == res);
+ if (res != VK_SUCCESS)
+ {
+ return res;
+ }
VkMemoryRequirements memory_requirements;
m_device_data.disp.GetImageMemoryRequirements(m_device, image.image, &memory_requirements);
}
/* If descendant started presenting, there is no pending buffer in the swapchain. */
- if (descendent_started_presenting == false)
+ if (m_is_valid && descendent_started_presenting == false)
{
wait_for_pending_buffers();
}
+ if (m_queue != VK_NULL_HANDLE)
+ {
+ /* Make sure the vkFences are done signaling. */
+ vkQueueWaitIdle(m_queue);
+ }
+
/* Make sure the vkFences are done signaling. */
m_device_data.disp.QueueWaitIdle(m_queue);