diff --git a/crates/renderer/src/lib.rs b/crates/renderer/src/lib.rs index 0365461..d28d335 100644 --- a/crates/renderer/src/lib.rs +++ b/crates/renderer/src/lib.rs @@ -655,6 +655,7 @@ impl Swapchain { .map(|&image| { let info = vk::ImageViewCreateInfo::default() .image(image) + .view_type(vk::ImageViewType::TYPE_2D) .format(format) .components(vk::ComponentMapping::default()) .subresource_range( @@ -710,6 +711,7 @@ impl Swapchain { .map(|&image| { let info = vk::ImageViewCreateInfo::default() .image(image) + .view_type(vk::ImageViewType::TYPE_2D) .format(format) .components(vk::ComponentMapping::default()) .subresource_range( @@ -756,7 +758,10 @@ impl Swapchain { .image_color_space(image_color_space) .image_format(image_format) .min_image_count(image_count) - .image_usage(vk::ImageUsageFlags::TRANSFER_DST) + .image_usage( + vk::ImageUsageFlags::TRANSFER_DST + | vk::ImageUsageFlags::COLOR_ATTACHMENT, + ) .image_array_layers(1) .image_extent(image_extent) .image_sharing_mode(if queue_families.len() <= 1 { @@ -1216,8 +1221,6 @@ impl Vulkan { (family, index) }; - eprintln!("queue families: {:?}", pdev.queue_families); - let graphics_family_and_index = helper(pdev.queue_families.graphics); let compute_family_and_index = pdev.queue_families.async_compute.map(|f| helper(f)); @@ -1232,8 +1235,6 @@ impl Vulkan { as usize ]; - eprintln!("unique_families: {unique_families:?}"); - let queue_infos = unique_families .into_iter() .filter(|&(_, count)| count > 0) @@ -1244,8 +1245,6 @@ impl Vulkan { }) .collect::>(); - eprintln!("infos: {queue_infos:#?}"); - let extensions = features .device_extensions .iter() @@ -1556,7 +1555,7 @@ impl Renderer { continue; } - let image = ctx.current_swapchain.images.first().cloned().unwrap(); + let image = ctx.current_swapchain.images[swapchain_index as usize]; // let image = images::Image2D::new_exclusive( // self.vulkan.alloc.clone(), @@ -1612,7 +1611,7 @@ impl Renderer { vk::ImageAspectFlags::COLOR, vk::PipelineStageFlags2::TRANSFER, vk::AccessFlags2::TRANSFER_WRITE, - vk::PipelineStageFlags2::BOTTOM_OF_PIPE, + vk::PipelineStageFlags2::TRANSFER, vk::AccessFlags2::empty(), vk::ImageLayout::TRANSFER_DST_OPTIMAL, vk::ImageLayout::PRESENT_SRC_KHR, @@ -1631,7 +1630,7 @@ impl Renderer { dev.graphics_queue().clone(), Some(( ready_semaphore.semaphore(), - vk::PipelineStageFlags::TOP_OF_PIPE, + vk::PipelineStageFlags::ALL_COMMANDS, )), Some(signal_semaphore.semaphore()), )?; @@ -1648,6 +1647,9 @@ impl Renderer { })?; future.block_until()?; + dev.dev().device_wait_idle(); + drop(ready_semaphore); + drop(signal_semaphore); } }