From: Joshua Simmons Date: Mon, 17 Jul 2023 15:34:59 +0000 (+0200) Subject: narcissus-gpu: Add `_with_data` helper for transient buffers X-Git-Url: https://git.nega.tv//gitweb.cgi?a=commitdiff_plain;h=d1c728df00d232210c4370c5db1216dee15d1861;p=josh%2Fnarcissus narcissus-gpu: Add `_with_data` helper for transient buffers --- diff --git a/bins/narcissus/src/main.rs b/bins/narcissus/src/main.rs index f4cd9fd..9b8bbff 100644 --- a/bins/narcissus/src/main.rs +++ b/bins/narcissus/src/main.rs @@ -148,15 +148,13 @@ pub fn main() { { let frame = device.begin_frame(); - let mut blåhaj_buffer = device.request_transient_buffer( + let blåhaj_buffer = device.request_transient_buffer_with_data( &frame, &thread_token, BufferUsageFlags::TRANSFER, - blåhaj_image_data.as_slice().len(), + blåhaj_image_data.as_slice(), ); - blåhaj_buffer.copy_from_slice(blåhaj_image_data.as_slice()); - let mut cmd_buffer = device.create_cmd_buffer(&frame, &thread_token); device.cmd_barrier( &mut cmd_buffer, @@ -453,15 +451,13 @@ pub fn main() { let height = atlas_height; let image = glyph_atlas; - let mut buffer = device.request_transient_buffer( + let buffer = device.request_transient_buffer_with_data( &frame, &thread_token, BufferUsageFlags::TRANSFER, - texture.len(), + texture, ); - buffer.copy_from_slice(texture); - device.cmd_barrier( &mut cmd_buffer, None, diff --git a/libs/narcissus-gpu/src/lib.rs b/libs/narcissus-gpu/src/lib.rs index 7cafd68..1486bdc 100644 --- a/libs/narcissus-gpu/src/lib.rs +++ b/libs/narcissus-gpu/src/lib.rs @@ -751,6 +751,20 @@ pub trait Device { size: usize, ) -> TransientBuffer<'a>; + #[must_use] + fn request_transient_buffer_with_data<'a>( + &self, + frame: &'a Frame<'a>, + thread_token: &'a ThreadToken, + usage: BufferUsageFlags, + data: &[u8], + ) -> TransientBuffer<'a> { + let mut transient_buffer = + self.request_transient_buffer(frame, thread_token, usage, data.len()); + transient_buffer.copy_from_slice(data); + transient_buffer + } + #[must_use] fn create_cmd_buffer<'a, 'thread>( &'a self,