From 6709e300385c610f14b848961c2c5afdbc9aadc0 Mon Sep 17 00:00:00 2001 From: Danny Holman Date: Mon, 28 Oct 2024 15:58:23 -0500 Subject: render: error check when creating device queues When creating Vulkan device queues, the returned queue objects should be check for NULL values. If any queue is invalid, the process must be aborted. Signed-off-by: Danny Holman --- render/vulkan/device.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/render/vulkan/device.c b/render/vulkan/device.c index 3aef3a1..a123983 100644 --- a/render/vulkan/device.c +++ b/render/vulkan/device.c @@ -143,9 +143,25 @@ struct vkdev* create_vkdev(VkInstance instance, VkSurfaceKHR surface) { vkassert(vkCreateDevice(dev->pdev, &dcinfo, NULL, &dev->ldev)); vkGetDeviceQueue(dev->ldev, dev->gfx_index, 0, &dev->gfx_queue); + if (dev->gfx_queue == NULL) { + log_output(LOG_FATAL, "Error creating Vulkan graphics queue"); + rune_abort(); + } vkGetDeviceQueue(dev->ldev, dev->tsfr_index, 0, &dev->tsfr_queue); + if (dev->tsfr_queue == NULL) { + log_output(LOG_FATAL, "Error creating Vulkan transfer queue"); + rune_abort(); + } vkGetDeviceQueue(dev->ldev, dev->pres_index, 0, &dev->pres_queue); + if (dev->pres_queue == NULL) { + log_output(LOG_FATAL, "Error creating Vulkan present queue"); + rune_abort(); + } vkGetDeviceQueue(dev->ldev, dev->comp_index, 0, &dev->comp_queue); + if (dev->comp_queue == NULL) { + log_output(LOG_FATAL, "Error creating Vulkan compute queue"); + rune_abort(); + } VkCommandPoolCreateInfo pcinfo; pcinfo.sType = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO; -- cgit v1.2.3