diff --git a/piet-gpu-hal/examples/dx12_toy.rs b/piet-gpu-hal/examples/dx12_toy.rs index 23737bf..2ad9dfe 100644 --- a/piet-gpu-hal/examples/dx12_toy.rs +++ b/piet-gpu-hal/examples/dx12_toy.rs @@ -87,7 +87,7 @@ fn toy() -> Result<(), Error> { cmd_buf.host_barrier(); cmd_buf.finish(); device.run_cmd_bufs(&[&cmd_buf], &[], &[], Some(&mut fence))?; - device.wait_and_reset(&[&mut fence])?; + device.wait_and_reset(vec![&mut fence])?; let mut readback: Vec = vec![0u32; 256]; device.read_buffer(&buf, readback.as_mut_ptr() as *mut u8, 0, 1024)?; println!("{:?}", readback); diff --git a/piet-gpu-hal/src/dx12.rs b/piet-gpu-hal/src/dx12.rs index 637aa2f..cf9a0e3 100644 --- a/piet-gpu-hal/src/dx12.rs +++ b/piet-gpu-hal/src/dx12.rs @@ -405,7 +405,7 @@ impl crate::Device for Dx12Device { Ok(Fence { fence, event, val }) } - unsafe fn wait_and_reset(&self, fences: &[&mut Self::Fence]) -> Result<(), Error> { + unsafe fn wait_and_reset(&self, fences: Vec<&mut Self::Fence>) -> Result<(), Error> { for fence in fences { // TODO: probably handle errors here. let _status = fence.event.wait(winapi::um::winbase::INFINITE); diff --git a/piet-gpu-hal/src/lib.rs b/piet-gpu-hal/src/lib.rs index e9c62fd..6a66db6 100644 --- a/piet-gpu-hal/src/lib.rs +++ b/piet-gpu-hal/src/lib.rs @@ -233,7 +233,7 @@ pub trait Device: Sized { unsafe fn create_semaphore(&self) -> Result; unsafe fn create_fence(&self, signaled: bool) -> Result; - unsafe fn wait_and_reset(&self, fences: &[&mut Self::Fence]) -> Result<(), Error>; + unsafe fn wait_and_reset(&self, fences: Vec<&mut Self::Fence>) -> Result<(), Error>; unsafe fn get_fence_status(&self, fence: &Self::Fence) -> Result; unsafe fn create_sampler(&self, params: SamplerParams) -> Result; diff --git a/piet-gpu-hal/src/metal.rs b/piet-gpu-hal/src/metal.rs index 9818c75..bd69b5e 100644 --- a/piet-gpu-hal/src/metal.rs +++ b/piet-gpu-hal/src/metal.rs @@ -251,7 +251,7 @@ impl crate::Device for MtlDevice { todo!() } - unsafe fn wait_and_reset(&self, fences: &[&mut Self::Fence]) -> Result<(), Error> { + unsafe fn wait_and_reset(&self, fences: Vec<&mut Self::Fence>) -> Result<(), Error> { todo!() } diff --git a/piet-gpu-hal/src/mux.rs b/piet-gpu-hal/src/mux.rs index 90be57a..5b677ce 100644 --- a/piet-gpu-hal/src/mux.rs +++ b/piet-gpu-hal/src/mux.rs @@ -235,15 +235,15 @@ impl Device { let mut fences = fences .into_iter() .map(|f| f.vk_mut()) - .collect::>(); - d.wait_and_reset(&mut fences) + .collect::>(); + d.wait_and_reset(fences) } Device::Dx12(d) => { let mut fences = fences .into_iter() .map(|f| f.dx12_mut()) - .collect::>(); - d.wait_and_reset(&mut fences) + .collect::>(); + d.wait_and_reset(fences) } Device::Mtl(d) => { let mut fences = fences diff --git a/piet-gpu-hal/src/vulkan.rs b/piet-gpu-hal/src/vulkan.rs index 4d73c2f..8cdddcd 100644 --- a/piet-gpu-hal/src/vulkan.rs +++ b/piet-gpu-hal/src/vulkan.rs @@ -619,7 +619,7 @@ impl crate::Device for VkDevice { Ok(device.create_semaphore(&vk::SemaphoreCreateInfo::default(), None)?) } - unsafe fn wait_and_reset(&self, fences: &[&mut Self::Fence]) -> Result<(), Error> { + unsafe fn wait_and_reset(&self, fences: Vec<&mut Self::Fence>) -> Result<(), Error> { let device = &self.device.device; let fences = fences .iter()