From 1a23b74df374e45e380eefd956c9f1b336afaafe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=C3=ABl=20Obr=C3=A9jan?= Date: Fri, 30 Aug 2019 15:36:14 +0200 Subject: [PATCH] Fixes https://github.com/amethyst/rendy/issues/58 + minor fixes --- factory/src/factory.rs | 39 ++++++++++++++++++--------- mesh/src/mesh.rs | 2 +- rendy/examples/quads/main.rs | 6 ++--- rendy/examples/source_shaders/main.rs | 2 +- 4 files changed, 32 insertions(+), 17 deletions(-) diff --git a/factory/src/factory.rs b/factory/src/factory.rs index 793045df..cdc5debc 100644 --- a/factory/src/factory.rs +++ b/factory/src/factory.rs @@ -398,16 +398,24 @@ where &self, buffer: &mut Buffer, offset: u64, - content: &[T], - ) -> Result<(), MapError> { + content: &T, + ) -> Result<(), MapError> + where + T: ?Sized + 'static, + { + let content_size = std::mem::size_of_val(content); + let content = std::slice::from_raw_parts( - content.as_ptr() as *const u8, - content.len() * std::mem::size_of::(), + { + let content_ptr: *const T = content; + content_ptr as *const u8 + }, + content_size, ); - let mut mapped = buffer.map(&self.device, offset..offset + content.len() as u64)?; + let mut mapped = buffer.map(&self.device, offset..offset + content_size as u64)?; mapped - .write(&self.device, 0..content.len() as u64)? + .write(&self.device, 0..content_size as u64)? .write(content); Ok(()) } @@ -437,13 +445,17 @@ where &self, buffer: &Buffer, offset: u64, - content: &[T], + content: &T, last: Option, next: BufferState, - ) -> Result<(), UploadError> { + ) -> Result<(), UploadError> + where + T: ?Sized + 'static, + { assert!(buffer.info().usage.contains(buffer::Usage::TRANSFER_DST)); - let content_size = content.len() as u64 * std::mem::size_of::() as u64; + let content_size = std::mem::size_of_val(content) as u64; + let mut staging = self .create_buffer( BufferInfo { @@ -544,17 +556,20 @@ where image_layers: SubresourceLayers, image_offset: image::Offset, image_extent: Extent, - content: &[T], + content: &T, last: impl Into, next: ImageState, - ) -> Result<(), UploadError> { + ) -> Result<(), UploadError> + where + T: ?Sized + 'static, + { assert!(image.info().usage.contains(image::Usage::TRANSFER_DST)); assert_eq!(image.format().surface_desc().aspects, image_layers.aspects); assert!(image_layers.layers.start <= image_layers.layers.end); assert!(image_layers.layers.end <= image.kind().num_layers()); assert!(image_layers.level <= image.info().levels); - let content_size = content.len() as u64 * std::mem::size_of::() as u64; + let content_size = std::mem::size_of_val(content) as u64; let format_desc = image.format().surface_desc(); let texels_count = (image_extent.width / format_desc.dim.0 as u32) as u64 * (image_extent.height / format_desc.dim.1 as u32) as u64 diff --git a/mesh/src/mesh.rs b/mesh/src/mesh.rs index 0c9fadef..9251286c 100644 --- a/mesh/src/mesh.rs +++ b/mesh/src/mesh.rs @@ -305,7 +305,7 @@ impl<'a> MeshBuilder<'a> { factory.upload_buffer( &mut buffer, 0, - &indices, + &**indices, None, BufferState::new(queue) .with_access(gfx_hal::buffer::Access::INDEX_BUFFER_READ) diff --git a/rendy/examples/quads/main.rs b/rendy/examples/quads/main.rs index faf64eab..e7381b57 100644 --- a/rendy/examples/quads/main.rs +++ b/rendy/examples/quads/main.rs @@ -433,7 +433,7 @@ where .upload_buffer( posvelbuff, 0, - &POSVEL_DATA, + &POSVEL_DATA[..], None, BufferState { queue: QueueId { @@ -582,7 +582,7 @@ fn run( WindowEvent::Resized(_dims) => { let started = std::time::Instant::now(); graph.take().unwrap().dispose(&mut factory, &()); - println!("Graph disposed in: {:?}", started.elapsed()); + log::trace!("Graph disposed in: {:?}", started.elapsed()); graph = Some(build_graph(&mut factory, &mut families, &window)); } _ => {} @@ -691,7 +691,7 @@ fn build_graph( let started = std::time::Instant::now(); let graph = graph_builder.build(factory, families, &()).unwrap(); - println!("Graph built in: {:?}", started.elapsed()); + log::trace!("Graph built in: {:?}", started.elapsed()); graph } diff --git a/rendy/examples/source_shaders/main.rs b/rendy/examples/source_shaders/main.rs index 430ba4a9..b22716d2 100644 --- a/rendy/examples/source_shaders/main.rs +++ b/rendy/examples/source_shaders/main.rs @@ -283,7 +283,7 @@ fn run( #[cfg(any(feature = "dx12", feature = "metal", feature = "vulkan"))] fn main() { env_logger::Builder::from_default_env() - .filter_module("triangle", log::LevelFilter::Trace) + .filter_module("source_shaders", log::LevelFilter::Trace) .init(); let config: Config = Default::default();