vulkan: Add a return code to vk_device_init

Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8676>
This commit is contained in:
Jason Ekstrand 2021-01-24 09:26:24 -06:00 committed by Marge Bot
parent 8ee88948e3
commit 5d6ac87d61
7 changed files with 43 additions and 15 deletions

View File

@ -2798,8 +2798,12 @@ VkResult radv_CreateDevice(
if (!device)
return vk_error(physical_device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
vk_device_init(&device->vk, pCreateInfo,
&physical_device->instance->alloc, pAllocator);
result = vk_device_init(&device->vk, pCreateInfo,
&physical_device->instance->alloc, pAllocator);
if (result != VK_SUCCESS) {
vk_free(&device->vk.alloc, device);
return result;
}
device->instance = physical_device->instance;
device->physical_device = physical_device;

View File

@ -1579,8 +1579,12 @@ v3dv_CreateDevice(VkPhysicalDevice physicalDevice,
if (!device)
return vk_error(instance, VK_ERROR_OUT_OF_HOST_MEMORY);
vk_device_init(&device->vk, pCreateInfo,
&physical_device->instance->alloc, pAllocator);
result = vk_device_init(&device->vk, pCreateInfo,
&physical_device->instance->alloc, pAllocator);
if (result != VK_SUCCESS) {
vk_free(&device->vk.alloc, device);
return vk_error(instance, result);
}
device->instance = instance;
device->pdevice = physical_device;

View File

@ -1041,8 +1041,13 @@ tu_CreateDevice(VkPhysicalDevice physicalDevice,
if (!device)
return vk_startup_errorf(physical_device->instance, VK_ERROR_OUT_OF_HOST_MEMORY, "OOM");
vk_device_init(&device->vk, pCreateInfo,
result = vk_device_init(&device->vk, pCreateInfo,
&physical_device->instance->alloc, pAllocator);
if (result != VK_SUCCESS) {
vk_free(&device->vk.alloc, device);
return vk_startup_errorf(physical_device->instance, result,
"vk_device_init failed");
}
device->instance = physical_device->instance;
device->physical_device = physical_device;

View File

@ -937,8 +937,13 @@ VkResult lvp_CreateDevice(
if (!device)
return vk_error(physical_device->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
vk_device_init(&device->vk, pCreateInfo,
&physical_device->instance->alloc, pAllocator);
VkResult result = vk_device_init(&device->vk, pCreateInfo,
&physical_device->instance->alloc,
pAllocator);
if (result != VK_SUCCESS) {
vk_free(&device->vk.alloc, device);
return vk_error(physical_device->instance, result);
}
device->instance = physical_device->instance;
device->physical_device = physical_device;

View File

@ -2860,8 +2860,12 @@ VkResult anv_CreateDevice(
if (!device)
return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY);
vk_device_init(&device->vk, pCreateInfo,
&physical_device->instance->alloc, pAllocator);
result = vk_device_init(&device->vk, pCreateInfo,
&physical_device->instance->alloc, pAllocator);
if (result != VK_SUCCESS) {
vk_error(result);
goto fail_alloc;
}
if (INTEL_DEBUG & DEBUG_BATCH) {
const unsigned decode_flags =
@ -3239,6 +3243,7 @@ VkResult anv_CreateDevice(
close(device->fd);
fail_device:
vk_device_finish(&device->vk);
fail_alloc:
vk_free(&device->vk.alloc, device);
return result;

View File

@ -26,7 +26,7 @@
#include "util/hash_table.h"
#include "util/ralloc.h"
void
VkResult
vk_device_init(struct vk_device *device,
UNUSED const VkDeviceCreateInfo *pCreateInfo,
const VkAllocationCallbacks *instance_alloc,
@ -44,6 +44,8 @@ vk_device_init(struct vk_device *device,
mtx_init(&device->swapchain_private_mtx, mtx_plain);
device->swapchain_private = NULL;
#endif /* ANDROID */
return VK_SUCCESS;
}
void

View File

@ -42,11 +42,14 @@ struct vk_device {
#endif
};
void vk_device_init(struct vk_device *device,
const VkDeviceCreateInfo *pCreateInfo,
const VkAllocationCallbacks *instance_alloc,
const VkAllocationCallbacks *device_alloc);
void vk_device_finish(struct vk_device *device);
VkResult MUST_CHECK
vk_device_init(struct vk_device *device,
const VkDeviceCreateInfo *pCreateInfo,
const VkAllocationCallbacks *instance_alloc,
const VkAllocationCallbacks *device_alloc);
void
vk_device_finish(struct vk_device *device);
#ifdef __cplusplus
}