From b1f4243ccf71afcfd55e2be9338f115f4b69d156 Mon Sep 17 00:00:00 2001 From: hodasemi Date: Fri, 20 Jan 2023 15:36:10 +0100 Subject: [PATCH] Add check for usage flag when writing to file --- vulkan-rs/src/image.rs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/vulkan-rs/src/image.rs b/vulkan-rs/src/image.rs index ed2596a..d2d7fe9 100644 --- a/vulkan-rs/src/image.rs +++ b/vulkan-rs/src/image.rs @@ -129,7 +129,7 @@ impl ImageBuilder { layers: preinitialized_image.layers, levels: 1, sample_count: preinitialized_image.sample_count, - _usage: preinitialized_image.usage, + usage: preinitialized_image.usage, }); // TODO: check necessity @@ -414,7 +414,7 @@ impl ImageBuilder { layers: info.vk_image_create_info.arrayLayers, levels: info.vk_image_create_info.mipLevels, sample_count: info.vk_image_create_info.samples, - _usage: info.vk_image_create_info.usage, + usage: info.vk_image_create_info.usage, })) } @@ -489,7 +489,7 @@ pub struct Image { layers: u32, // array layers levels: u32, // mip map levels sample_count: VkSampleCountFlagBits, - _usage: VkImageUsageFlagBits, + usage: VkImageUsageFlagBits, } impl Image { @@ -779,6 +779,13 @@ impl Image { } pub fn to_file(self: &Arc, path: impl AsRef) -> Result<()> { + // check if image is created with correct usage flag that allows transfering data from it + if (self.usage | VK_IMAGE_USAGE_TRANSFER_SRC_BIT) == 0 { + return Err(anyhow::anyhow!( + "Image has not been create with VK_IMAGE_USAGE_TRANSFER_SRC_BIT flag!" + )); + } + let buffer = self.copy_image_to_buffer()?; let memory = buffer.map_complete()?;