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,