]> git.nega.tv - josh/narcissus/commitdiff
Simplify image barrier usage
authorJoshua Simmons <josh@nega.tv>
Thu, 17 Nov 2022 08:05:03 +0000 (09:05 +0100)
committerJoshua Simmons <josh@nega.tv>
Thu, 17 Nov 2022 08:05:03 +0000 (09:05 +0100)
narcissus-gpu/src/lib.rs
narcissus/src/main.rs

index b76d0e6c2c1b8192ea701d7efa3526f2b8af5086..07d0b958e6a9a61b09d98459152afc40f8a6b9fd 100644 (file)
@@ -1,7 +1,7 @@
 use std::{ffi::CStr, marker::PhantomData};
 
 use narcissus_app::{App, Window};
-use narcissus_core::{flags_def, thread_token_def, Handle, PhantomUnsend};
+use narcissus_core::{default, flags_def, thread_token_def, Handle, PhantomUnsend};
 
 mod delay_queue;
 mod vulkan;
@@ -562,6 +562,23 @@ pub struct ImageBarrier<'a> {
     pub subresource_range: ImageSubresourceRange,
 }
 
+impl<'a> ImageBarrier<'a> {
+    pub fn with_access_optimal(
+        prev_access: &'a [Access],
+        next_access: &'a [Access],
+        image: Image,
+    ) -> ImageBarrier<'a> {
+        Self {
+            prev_access,
+            next_access,
+            prev_layout: ImageLayout::Optimal,
+            next_layout: ImageLayout::Optimal,
+            image,
+            subresource_range: default(),
+        }
+    }
+}
+
 thread_token_def!(ThreadToken, GpuConcurrent, 8);
 
 pub struct Frame<'a> {
index fa32f451dbaebd35f5894d2e75574f907cf5fb6e..fbd4ef3a0cff043320db035219ae99e9d210ddf9 100644 (file)
@@ -175,14 +175,11 @@ fn create_image_with_data(
     device.cmd_barrier(
         &mut cmd_buffer,
         None,
-        &[ImageBarrier {
-            prev_access: &[Access::None],
-            next_access: &[Access::TransferWrite],
-            prev_layout: ImageLayout::Optimal,
-            next_layout: ImageLayout::Optimal,
+        &[ImageBarrier::with_access_optimal(
+            &[Access::None],
+            &[Access::TransferWrite],
             image,
-            subresource_range: default(),
-        }],
+        )],
     );
 
     device.cmd_copy_buffer_to_image(
@@ -207,14 +204,11 @@ fn create_image_with_data(
     device.cmd_barrier(
         &mut cmd_buffer,
         None,
-        &[ImageBarrier {
-            prev_access: &[Access::TransferWrite],
-            next_access: &[Access::FragmentShaderSampledImageRead],
-            prev_layout: ImageLayout::Optimal,
-            next_layout: ImageLayout::Optimal,
+        &[ImageBarrier::with_access_optimal(
+            &[Access::TransferWrite],
+            &[Access::FragmentShaderSampledImageRead],
             image,
-            subresource_range: default(),
-        }],
+        )],
     );
 
     device.submit(&frame, cmd_buffer);