From c0265fa3f4c7386383277ac3f0ca8397d59506f9 Mon Sep 17 00:00:00 2001 From: Yuki Nishidate Date: Fri, 15 May 2026 21:37:15 +0900 Subject: [PATCH 1/2] Fix image usage for screenshot in raytracing samples --- samples/extensions/ray_tracing_basic/ray_tracing_basic.cpp | 2 +- .../ray_tracing_position_fetch/ray_tracing_position_fetch.cpp | 2 +- .../ray_tracing_reflection/ray_tracing_reflection.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/samples/extensions/ray_tracing_basic/ray_tracing_basic.cpp b/samples/extensions/ray_tracing_basic/ray_tracing_basic.cpp index a031007382..6d185096c9 100644 --- a/samples/extensions/ray_tracing_basic/ray_tracing_basic.cpp +++ b/samples/extensions/ray_tracing_basic/ray_tracing_basic.cpp @@ -836,7 +836,7 @@ bool RaytracingBasic::prepare(const vkb::ApplicationOptions &options) } // This sample copies the ray traced output to the swap chain image, so we need to enable the required image usage flags - const std::set image_usage_flags = {VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, VK_IMAGE_USAGE_TRANSFER_DST_BIT}; + const std::set image_usage_flags = {VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, VK_IMAGE_USAGE_TRANSFER_DST_BIT, VK_IMAGE_USAGE_TRANSFER_SRC_BIT}; update_swapchain_image_usage_flags(image_usage_flags); // This sample renders the UI overlay on top of the ray tracing output, so we need to disable color attachment clears diff --git a/samples/extensions/ray_tracing_position_fetch/ray_tracing_position_fetch.cpp b/samples/extensions/ray_tracing_position_fetch/ray_tracing_position_fetch.cpp index 63bfc13f95..9d491aa1fd 100644 --- a/samples/extensions/ray_tracing_position_fetch/ray_tracing_position_fetch.cpp +++ b/samples/extensions/ray_tracing_position_fetch/ray_tracing_position_fetch.cpp @@ -568,7 +568,7 @@ bool RayTracingPositionFetch::prepare(const vkb::ApplicationOptions &options) } // This sample copies the ray traced output to the swap chain image, so we need to enable the required image usage flags - const std::set image_usage_flags = {VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, VK_IMAGE_USAGE_TRANSFER_DST_BIT}; + const std::set image_usage_flags = {VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, VK_IMAGE_USAGE_TRANSFER_DST_BIT, VK_IMAGE_USAGE_TRANSFER_SRC_BIT}; update_swapchain_image_usage_flags(image_usage_flags); // This sample renders the UI overlay on top of the ray tracing output, so we need to disable color attachment clears diff --git a/samples/extensions/ray_tracing_reflection/ray_tracing_reflection.cpp b/samples/extensions/ray_tracing_reflection/ray_tracing_reflection.cpp index 39fd8cd903..89f064bb1c 100644 --- a/samples/extensions/ray_tracing_reflection/ray_tracing_reflection.cpp +++ b/samples/extensions/ray_tracing_reflection/ray_tracing_reflection.cpp @@ -982,7 +982,7 @@ bool RaytracingReflection::prepare(const vkb::ApplicationOptions &options) } // This sample copies the ray traced output to the swap chain image, so we need to enable the required image usage flags - const std::set image_usage_flags = {VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, VK_IMAGE_USAGE_TRANSFER_DST_BIT}; + const std::set image_usage_flags = {VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, VK_IMAGE_USAGE_TRANSFER_DST_BIT, VK_IMAGE_USAGE_TRANSFER_SRC_BIT}; update_swapchain_image_usage_flags(image_usage_flags); // This sample renders the UI overlay on top of the ray tracing output, so we need to disable color attachment clears From 729cf0610318e5c492595848e7238e9a438dd8c2 Mon Sep 17 00:00:00 2001 From: Yuki Nishidate Date: Fri, 15 May 2026 22:51:59 +0900 Subject: [PATCH 2/2] Fix image usage --- .../rasterization_order_attachment_access.cpp | 2 +- samples/extensions/shader_object/shader_object.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/samples/extensions/rasterization_order_attachment_access/rasterization_order_attachment_access.cpp b/samples/extensions/rasterization_order_attachment_access/rasterization_order_attachment_access.cpp index fcd1f700b0..5e6e01bcf0 100644 --- a/samples/extensions/rasterization_order_attachment_access/rasterization_order_attachment_access.cpp +++ b/samples/extensions/rasterization_order_attachment_access/rasterization_order_attachment_access.cpp @@ -60,7 +60,7 @@ bool RasterizationOrderAttachmentAccess::prepare(const vkb::ApplicationOptions & } // Add INPUT_ATTACHMENT_BIT so fragment shaders can read the color attachment with subpassLoad() - update_swapchain_image_usage_flags({VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT}); + update_swapchain_image_usage_flags({VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, VK_IMAGE_USAGE_TRANSFER_SRC_BIT}); camera.type = vkb::CameraType::LookAt; camera.set_position({0.0f, 0.0f, -4.0f}); diff --git a/samples/extensions/shader_object/shader_object.cpp b/samples/extensions/shader_object/shader_object.cpp index 894963dc67..904c4934e6 100644 --- a/samples/extensions/shader_object/shader_object.cpp +++ b/samples/extensions/shader_object/shader_object.cpp @@ -145,7 +145,7 @@ bool ShaderObject::resize(const uint32_t _width, const uint32_t _height) update_uniform_buffers(); // Update swapchain to allow transfer dst to blit to it - update_swapchain_image_usage_flags({VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, VK_IMAGE_USAGE_TRANSFER_DST_BIT}); + update_swapchain_image_usage_flags({VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, VK_IMAGE_USAGE_TRANSFER_DST_BIT, VK_IMAGE_USAGE_TRANSFER_SRC_BIT}); return true; } @@ -176,7 +176,7 @@ bool ShaderObject::prepare(const vkb::ApplicationOptions &options) initialize_descriptor_sets(); // Update swapchain to allow transfer dst to blit to it - update_swapchain_image_usage_flags({VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, VK_IMAGE_USAGE_TRANSFER_DST_BIT}); + update_swapchain_image_usage_flags({VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, VK_IMAGE_USAGE_TRANSFER_DST_BIT, VK_IMAGE_USAGE_TRANSFER_SRC_BIT}); generate_terrain(); build_command_buffers();