Allow extra flags to copy buffer creation

This commit is contained in:
hodasemi 2023-04-10 21:41:31 +02:00
parent eae46a0d5e
commit 872c858f9e

View file

@ -793,7 +793,7 @@ impl Image {
)); ));
} }
let buffer = self.copy_image_to_buffer()?; let buffer = self.copy_image_to_buffer(None)?;
let memory = buffer.map_complete()?; let memory = buffer.map_complete()?;
let image = image::RgbaImage::from_raw( let image = image::RgbaImage::from_raw(
@ -811,9 +811,17 @@ impl Image {
Ok(()) Ok(())
} }
pub fn copy_image_to_buffer(self: &Arc<Image>) -> Result<Arc<Buffer<RawBuffer>>> { pub fn copy_image_to_buffer(
self: &Arc<Image>,
extra_buffer_flags: impl Into<Option<VkBufferUsageFlagBits>>,
) -> Result<Arc<Buffer<RawBuffer>>> {
let usage = match extra_buffer_flags.into() {
Some(flags) => VK_BUFFER_USAGE_TRANSFER_DST_BIT | flags,
None => VK_BUFFER_USAGE_TRANSFER_DST_BIT.into(),
};
let buffer = Buffer::builder() let buffer = Buffer::builder()
.set_usage(VK_BUFFER_USAGE_TRANSFER_DST_BIT) .set_usage(usage)
.set_memory_usage(MemoryUsage::GpuToCpu) .set_memory_usage(MemoryUsage::GpuToCpu)
.set_size((self.width * self.height * 4) as VkDeviceSize) .set_size((self.width * self.height * 4) as VkDeviceSize)
.build(self.device.clone())?; .build(self.device.clone())?;