From ba276e5ac21ecfa5bf1e3b9c7ae140c4880e2a3a Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Wed, 31 May 2023 21:29:04 +0200 Subject: [PATCH] render/vulkan: handle vulkan_record_stage_cb() failures --- render/vulkan/renderer.c | 3 +++ render/vulkan/texture.c | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/render/vulkan/renderer.c b/render/vulkan/renderer.c index f4af9caf..49e28d8f 100644 --- a/render/vulkan/renderer.c +++ b/render/vulkan/renderer.c @@ -1774,6 +1774,9 @@ static bool vulkan_read_pixels(struct wlr_renderer *wlr_renderer, } VkCommandBuffer cb = vulkan_record_stage_cb(vk_renderer); + if (cb == VK_NULL_HANDLE) { + return false; + } vulkan_change_layout(cb, dst_image, VK_IMAGE_LAYOUT_UNDEFINED, diff --git a/render/vulkan/texture.c b/render/vulkan/texture.c index 6a895a42..eb4601b5 100644 --- a/render/vulkan/texture.c +++ b/render/vulkan/texture.c @@ -143,6 +143,11 @@ static bool write_pixels(struct wlr_vk_texture *texture, // record staging cb // will be executed before next frame VkCommandBuffer cb = vulkan_record_stage_cb(renderer); + if (cb == VK_NULL_HANDLE) { + free(copies); + return false; + } + vulkan_change_layout(cb, texture->image, old_layout, src_stage, src_access, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, VK_PIPELINE_STAGE_TRANSFER_BIT,