From: Joshua Simmons Date: Thu, 17 Nov 2022 08:05:03 +0000 (+0100) Subject: Simplify image barrier usage X-Git-Url: https://git.nega.tv//gitweb.cgi?a=commitdiff_plain;h=6292a6ea6dbd16f86e7c169348440530d9c4249c;p=josh%2Fnarcissus Simplify image barrier usage --- diff --git a/narcissus-gpu/src/lib.rs b/narcissus-gpu/src/lib.rs index b76d0e6..07d0b95 100644 --- a/narcissus-gpu/src/lib.rs +++ b/narcissus-gpu/src/lib.rs @@ -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> { diff --git a/narcissus/src/main.rs b/narcissus/src/main.rs index fa32f45..fbd4ef3 100644 --- a/narcissus/src/main.rs +++ b/narcissus/src/main.rs @@ -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);