diff --git a/ash-window/src/lib.rs b/ash-window/src/lib.rs index 5328c82a7..8c7a67223 100644 --- a/ash-window/src/lib.rs +++ b/ash-window/src/lib.rs @@ -51,7 +51,7 @@ pub unsafe fn create_surface( (RawDisplayHandle::Xlib(display), RawWindowHandle::Xlib(window)) => { let surface_desc = vk::XlibSurfaceCreateInfoKHR::default() - .dpy(display.display as *mut _) + .dpy(display.display.cast()) .window(window.window); let surface_fn = khr::XlibSurface::new(entry, instance); surface_fn.create_xlib_surface(&surface_desc, allocation_callbacks) @@ -77,7 +77,7 @@ pub unsafe fn create_surface( use raw_window_metal::{appkit, Layer}; let layer = match appkit::metal_layer_from_handle(window) { - Layer::Existing(layer) | Layer::Allocated(layer) => layer as *mut _, + Layer::Existing(layer) | Layer::Allocated(layer) => layer.cast(), Layer::None => return Err(vk::Result::ERROR_INITIALIZATION_FAILED), }; @@ -91,7 +91,7 @@ pub unsafe fn create_surface( use raw_window_metal::{uikit, Layer}; let layer = match uikit::metal_layer_from_handle(window) { - Layer::Existing(layer) | Layer::Allocated(layer) => layer as *mut _, + Layer::Existing(layer) | Layer::Allocated(layer) => layer.cast(), Layer::None => return Err(vk::Result::ERROR_INITIALIZATION_FAILED), }; diff --git a/ash/src/device.rs b/ash/src/device.rs index aecd13c0d..b8c07ae02 100644 --- a/ash/src/device.rs +++ b/ash/src/device.rs @@ -1502,14 +1502,15 @@ impl Device { create_info: &vk::DescriptorSetAllocateInfo, ) -> VkResult> { let mut desc_set = Vec::with_capacity(create_info.descriptor_set_count as usize); - let err_code = (self.device_fn_1_0.allocate_descriptor_sets)( + (self.device_fn_1_0.allocate_descriptor_sets)( self.handle(), create_info, desc_set.as_mut_ptr(), - ); + ) + .result()?; desc_set.set_len(create_info.descriptor_set_count as usize); - err_code.result_with_success(desc_set) + Ok(desc_set) } /// @@ -2026,7 +2027,7 @@ impl Device { first_query, data.len() as u32, data_size, - data.as_mut_ptr() as *mut _, + data.as_mut_ptr().cast(), mem::size_of::() as _, flags, ) @@ -2484,13 +2485,14 @@ impl Device { create_info: &vk::CommandBufferAllocateInfo, ) -> VkResult> { let mut buffers = Vec::with_capacity(create_info.command_buffer_count as usize); - let err_code = (self.device_fn_1_0.allocate_command_buffers)( + (self.device_fn_1_0.allocate_command_buffers)( self.handle(), create_info, buffers.as_mut_ptr(), - ); + ) + .result()?; buffers.set_len(create_info.command_buffer_count as usize); - err_code.result_with_success(buffers) + Ok(buffers) } /// diff --git a/ash/src/extensions/khr/display_swapchain.rs b/ash/src/extensions/khr/display_swapchain.rs index 649851ba1..e4a33b2bd 100755 --- a/ash/src/extensions/khr/display_swapchain.rs +++ b/ash/src/extensions/khr/display_swapchain.rs @@ -28,15 +28,16 @@ impl DisplaySwapchain { allocation_callbacks: Option<&vk::AllocationCallbacks>, ) -> VkResult> { let mut swapchains = Vec::with_capacity(create_infos.len()); - let err_code = (self.fp.create_shared_swapchains_khr)( + (self.fp.create_shared_swapchains_khr)( self.handle, create_infos.len() as u32, create_infos.as_ptr(), allocation_callbacks.as_raw_ptr(), swapchains.as_mut_ptr(), - ); + ) + .result()?; swapchains.set_len(create_infos.len()); - err_code.result_with_success(swapchains) + Ok(swapchains) } #[inline] diff --git a/ash/src/extensions/khr/ray_tracing_pipeline.rs b/ash/src/extensions/khr/ray_tracing_pipeline.rs index 9e409e336..aba28cf74 100644 --- a/ash/src/extensions/khr/ray_tracing_pipeline.rs +++ b/ash/src/extensions/khr/ray_tracing_pipeline.rs @@ -90,16 +90,17 @@ impl RayTracingPipeline { data_size: usize, ) -> VkResult> { let mut data = Vec::::with_capacity(data_size); - let err_code = (self.fp.get_ray_tracing_shader_group_handles_khr)( + (self.fp.get_ray_tracing_shader_group_handles_khr)( self.handle, pipeline, first_group, group_count, data_size, - data.as_mut_ptr() as *mut std::ffi::c_void, - ); + data.as_mut_ptr().cast(), + ) + .result()?; data.set_len(data_size); - err_code.result_with_success(data) + Ok(data) } /// @@ -111,8 +112,8 @@ impl RayTracingPipeline { group_count: u32, data_size: usize, ) -> VkResult> { - let mut data: Vec = Vec::with_capacity(data_size); - let err_code = (self + let mut data = Vec::::with_capacity(data_size); + (self .fp .get_ray_tracing_capture_replay_shader_group_handles_khr)( self.handle, @@ -120,10 +121,11 @@ impl RayTracingPipeline { first_group, group_count, data_size, - data.as_mut_ptr() as *mut _, - ); + data.as_mut_ptr().cast(), + ) + .result()?; data.set_len(data_size); - err_code.result_with_success(data) + Ok(data) } /// diff --git a/ash/src/prelude.rs b/ash/src/prelude.rs index c0b548c9e..321c3aadd 100644 --- a/ash/src/prelude.rs +++ b/ash/src/prelude.rs @@ -49,8 +49,9 @@ where let err_code = f(&mut count, data.as_mut_ptr()); if err_code != vk::Result::INCOMPLETE { + err_code.result()?; data.set_len(count.try_into().expect("`N` failed to convert to `usize`")); - break err_code.result_with_success(data); + break Ok(data); } } }