]> git.nega.tv - josh/narcissus/commitdiff
narcissus-gpu: Fix minor sync issues
authorJoshua Simmons <josh@nega.tv>
Sat, 27 Apr 2024 16:55:22 +0000 (18:55 +0200)
committerJoshua Simmons <josh@nega.tv>
Sat, 27 Apr 2024 16:55:22 +0000 (18:55 +0200)
Resolve incorrect arguments to various presentation related barriers.

engine/narcissus-gpu/src/backend/vulkan/mod.rs

index ed5bc32f584245b7bd245da95d3c4974b1dbed35..94169d1ab4f5ce74066b617465694de1fc695485 100644 (file)
@@ -394,9 +394,9 @@ impl VulkanDevice {
             panic!("instance does not support vulkan 1.2")
         }
 
-        #[cfg(debug_assertions)]
-        let enabled_layers = &[(c"VK_LAYER_KHRONOS_validation").as_ptr()];
-        #[cfg(not(debug_assertions))]
+        // #[cfg(debug_assertions)]
+        // let enabled_layers = &[(c"VK_LAYER_KHRONOS_validation").as_ptr()];
+        // #[cfg(not(debug_assertions))]
         let enabled_layers = &[];
 
         let extension_properties = vk_vec(|count, ptr| unsafe {
@@ -1601,6 +1601,7 @@ impl Device for VulkanDevice {
                 command_buffer,
                 &vk::DependencyInfo {
                     memory_barriers: memory_barriers.into(),
+
                     image_memory_barriers: image_memory_barriers.into(),
                     ..default()
                 },
@@ -1939,9 +1940,9 @@ impl Device for VulkanDevice {
                             ),
                         );
 
-                        // transition swapchain image to optimal
+                        // transition swapchain image to attachment optimal
                         let image_memory_barriers = &[vk::ImageMemoryBarrier2 {
-                            src_stage_mask: vk::PipelineStageFlags2::TOP_OF_PIPE,
+                            src_stage_mask: vk::PipelineStageFlags2::COLOR_ATTACHMENT_OUTPUT,
                             src_access_mask: vk::AccessFlags2::NONE,
                             dst_stage_mask: vk::PipelineStageFlags2::COLOR_ATTACHMENT_OUTPUT,
                             dst_access_mask: vk::AccessFlags2::COLOR_ATTACHMENT_WRITE,
@@ -2126,7 +2127,7 @@ impl Device for VulkanDevice {
             let image_memory_barriers = &[vk::ImageMemoryBarrier2 {
                 src_stage_mask: vk::PipelineStageFlags2::COLOR_ATTACHMENT_OUTPUT,
                 src_access_mask: vk::AccessFlags2::COLOR_ATTACHMENT_WRITE,
-                dst_stage_mask: vk::PipelineStageFlags2::BOTTOM_OF_PIPE,
+                dst_stage_mask: vk::PipelineStageFlags2::COLOR_ATTACHMENT_OUTPUT,
                 dst_access_mask: vk::AccessFlags2::NONE,
                 src_queue_family_index: self.universal_queue_family_index,
                 dst_queue_family_index: self.universal_queue_family_index,
@@ -2172,7 +2173,7 @@ impl Device for VulkanDevice {
         signal_semaphores.push(vk::SemaphoreSubmitInfo {
             semaphore: self.universal_queue_semaphore,
             semaphore_value: fence,
-            stage_mask: vk::PipelineStageFlags2::ALL_GRAPHICS,
+            stage_mask: vk::PipelineStageFlags2::COLOR_ATTACHMENT_OUTPUT,
             ..default()
         });
 
@@ -2255,6 +2256,8 @@ impl Device for VulkanDevice {
 
             Self::destroy_deferred(device_fn, device, frame);
 
+            std::thread::sleep(std::time::Duration::from_millis(10));
+
             self.wsi_begin_frame();
 
             self.allocator_begin_frame(frame);