diff --git a/Changelog.md b/Changelog.md index e916889cf..032a4d6e3 100644 --- a/Changelog.md +++ b/Changelog.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Update Vulkan-Headers to 1.4.303 (#910, #951) +- Added helper wrappers for Vulkan core 1.4 `Device` functions (#951) - Added `VK_KHR_get_display_properties2` instance extension (#932) - Added `VK_EXT_metal_objects` device extension (#942) diff --git a/ash/src/device.rs b/ash/src/device.rs index 76fc814fa..ceba96b77 100644 --- a/ash/src/device.rs +++ b/ash/src/device.rs @@ -17,6 +17,7 @@ pub struct Device { pub(crate) device_fn_1_1: crate::DeviceFnV1_1, pub(crate) device_fn_1_2: crate::DeviceFnV1_2, pub(crate) device_fn_1_3: crate::DeviceFnV1_3, + pub(crate) device_fn_1_4: crate::DeviceFnV1_4, } impl Device { @@ -37,6 +38,7 @@ impl Device { crate::DeviceFnV1_1::load(&mut load_fn), crate::DeviceFnV1_2::load(&mut load_fn), crate::DeviceFnV1_3::load(&mut load_fn), + crate::DeviceFnV1_4::load(&mut load_fn), ) } @@ -47,6 +49,7 @@ impl Device { device_fn_1_1: crate::DeviceFnV1_1, device_fn_1_2: crate::DeviceFnV1_2, device_fn_1_3: crate::DeviceFnV1_3, + device_fn_1_4: crate::DeviceFnV1_4, ) -> Self { Self { handle, @@ -55,6 +58,7 @@ impl Device { device_fn_1_1, device_fn_1_2, device_fn_1_3, + device_fn_1_4, } } @@ -64,6 +68,274 @@ impl Device { } } +/// Vulkan core 1.4 +impl Device { + #[inline] + pub fn fp_v1_4(&self) -> &crate::DeviceFnV1_4 { + &self.device_fn_1_4 + } + + /// + #[inline] + #[doc(alias = "vkCmdSetLineStipple")] + pub unsafe fn cmd_set_line_stipple( + &self, + command_buffer: vk::CommandBuffer, + line_stipple_factor: u32, + line_stipple_pattern: u16, + ) { + (self.device_fn_1_4.cmd_set_line_stipple)( + command_buffer, + line_stipple_factor, + line_stipple_pattern, + ) + } + + /// + #[inline] + #[doc(alias = "vkMapMemory2")] + pub unsafe fn map_memory2( + &self, + memory_map_info: &vk::MemoryMapInfo<'_>, + ) -> VkResult<*mut ffi::c_void> { + let mut data = mem::MaybeUninit::uninit(); + (self.device_fn_1_4.map_memory2)(self.handle, memory_map_info, data.as_mut_ptr()) + .assume_init_on_success(data) + } + + /// + #[inline] + #[doc(alias = "vkUnmapMemory2")] + pub unsafe fn unmap_memory2( + &self, + memory_unmap_info: &vk::MemoryUnmapInfo<'_>, + ) -> VkResult<()> { + (self.device_fn_1_4.unmap_memory2)(self.handle, memory_unmap_info).result() + } + + /// + #[inline] + #[doc(alias = "vkCmdBindIndexBuffer2")] + pub unsafe fn cmd_bind_index_buffer2( + &self, + command_buffer: vk::CommandBuffer, + buffer: vk::Buffer, + offset: vk::DeviceSize, + size: vk::DeviceSize, + index_type: vk::IndexType, + ) { + (self.device_fn_1_4.cmd_bind_index_buffer2)( + command_buffer, + buffer, + offset, + size, + index_type, + ) + } + + /// + #[inline] + #[doc(alias = "vkGetRenderingAreaGranularity")] + pub unsafe fn get_rendering_area_granularity( + &self, + rendering_area_info: &vk::RenderingAreaInfo<'_>, + ) -> vk::Extent2D { + let mut granularity = mem::MaybeUninit::uninit(); + (self.device_fn_1_4.get_rendering_area_granularity)( + self.handle, + rendering_area_info, + granularity.as_mut_ptr(), + ); + granularity.assume_init() + } + + /// + #[inline] + #[doc(alias = "vkGetDeviceImageSubresourceLayout")] + pub unsafe fn get_device_image_subresource_layout( + &self, + info: &vk::DeviceImageSubresourceInfo<'_>, + layout: &mut vk::SubresourceLayout2<'_>, + ) { + (self.device_fn_1_4.get_device_image_subresource_layout)(self.handle, info, layout) + } + + // XXX: Replicate comments from VK_EXT_host_image_copy, VK_EXT_image_compression_control + // and VK_KHR_maintenance5 about alternative ways to fetch and use a suffixed vesion of this + // function? And retroactively update those docs? + /// + #[inline] + #[doc(alias = "vkGetImageSubresourceLayout2")] + pub unsafe fn get_image_subresource_layout2( + &self, + image: vk::Image, + subresource: &vk::ImageSubresource2<'_>, + layout: &mut vk::SubresourceLayout2<'_>, + ) { + (self.device_fn_1_4.get_image_subresource_layout2)(self.handle, image, subresource, layout) + } + + /// + #[inline] + #[doc(alias = "vkCmdPushDescriptorSet")] + pub unsafe fn cmd_push_descriptor_set( + &self, + command_buffer: vk::CommandBuffer, + pipeline_bind_point: vk::PipelineBindPoint, + layout: vk::PipelineLayout, + set: u32, + descriptor_writes: &[vk::WriteDescriptorSet<'_>], + ) { + (self.device_fn_1_4.cmd_push_descriptor_set)( + command_buffer, + pipeline_bind_point, + layout, + set, + descriptor_writes.len() as u32, + descriptor_writes.as_ptr(), + ) + } + + /// + #[inline] + #[doc(alias = "vkCmdPushDescriptorSetWithTemplate")] + pub unsafe fn cmd_push_descriptor_set_with_template( + &self, + command_buffer: vk::CommandBuffer, + descriptor_update_template: vk::DescriptorUpdateTemplate, + layout: vk::PipelineLayout, + set: u32, + p_data: *const ffi::c_void, + ) { + (self.device_fn_1_4.cmd_push_descriptor_set_with_template)( + command_buffer, + descriptor_update_template, + layout, + set, + p_data, + ) + } + + /// + #[inline] + #[doc(alias = "vkCmdSetRenderingAttachmentLocations")] + pub unsafe fn cmd_set_rendering_attachment_locations( + &self, + command_buffer: vk::CommandBuffer, + location_info: &vk::RenderingAttachmentLocationInfo<'_>, + ) { + (self.device_fn_1_4.cmd_set_rendering_attachment_locations)(command_buffer, location_info) + } + + /// + #[inline] + #[doc(alias = "vkCmdSetRenderingInputAttachmentIndices")] + pub unsafe fn cmd_set_rendering_input_attachment_indices( + &self, + command_buffer: vk::CommandBuffer, + input_attachment_index_info: &vk::RenderingInputAttachmentIndexInfo<'_>, + ) { + (self + .device_fn_1_4 + .cmd_set_rendering_input_attachment_indices)( + command_buffer, + input_attachment_index_info, + ) + } + + /// + #[inline] + #[doc(alias = "vkCmdBindDescriptorSets2")] + pub unsafe fn cmd_bind_descriptor_sets2( + &self, + command_buffer: vk::CommandBuffer, + bind_descriptor_sets_info: &vk::BindDescriptorSetsInfo<'_>, + ) { + (self.device_fn_1_4.cmd_bind_descriptor_sets2)(command_buffer, bind_descriptor_sets_info) + } + + /// + #[inline] + #[doc(alias = "vkCmdPushConstants2")] + pub unsafe fn cmd_push_constants2( + &self, + command_buffer: vk::CommandBuffer, + push_constants_info: &vk::PushConstantsInfo<'_>, + ) { + (self.device_fn_1_4.cmd_push_constants2)(command_buffer, push_constants_info) + } + + /// + #[inline] + #[doc(alias = "vkCmdPushDescriptorSet2")] + pub unsafe fn cmd_push_descriptor_set2( + &self, + command_buffer: vk::CommandBuffer, + push_descriptor_set_info: &vk::PushDescriptorSetInfo<'_>, + ) { + (self.device_fn_1_4.cmd_push_descriptor_set2)(command_buffer, push_descriptor_set_info) + } + + /// + #[inline] + #[doc(alias = "vkCmdPushDescriptorSetWithTemplate2")] + pub unsafe fn cmd_push_descriptor_set_with_template2( + &self, + command_buffer: vk::CommandBuffer, + push_descriptor_set_with_template_info: &vk::PushDescriptorSetWithTemplateInfo<'_>, + ) { + (self.device_fn_1_4.cmd_push_descriptor_set_with_template2)( + command_buffer, + push_descriptor_set_with_template_info, + ) + } + + /// + #[inline] + #[doc(alias = "vkCopyMemoryToImage")] + pub unsafe fn copy_memory_to_image( + &self, + copy_memory_to_image_info: &vk::CopyMemoryToImageInfo<'_>, + ) -> VkResult<()> { + (self.device_fn_1_4.copy_memory_to_image)(self.handle, copy_memory_to_image_info).result() + } + + /// + #[inline] + #[doc(alias = "vkCopyImageToMemory")] + pub unsafe fn copy_image_to_memory( + &self, + copy_image_to_memory_info: &vk::CopyImageToMemoryInfo<'_>, + ) -> VkResult<()> { + (self.device_fn_1_4.copy_image_to_memory)(self.handle, copy_image_to_memory_info).result() + } + + /// + #[inline] + #[doc(alias = "vkCopyImageToImage")] + pub unsafe fn copy_image_to_image( + &self, + copy_image_to_image_info: &vk::CopyImageToImageInfo<'_>, + ) -> VkResult<()> { + (self.device_fn_1_4.copy_image_to_image)(self.handle, copy_image_to_image_info).result() + } + + /// + #[inline] + #[doc(alias = "vkTransitionImageLayout")] + pub unsafe fn transition_image_layout( + &self, + transitions: &[vk::HostImageLayoutTransitionInfo<'_>], + ) -> VkResult<()> { + (self.device_fn_1_4.transition_image_layout)( + self.handle, + transitions.len() as u32, + transitions.as_ptr(), + ) + .result() + } +} + /// Vulkan core 1.3 impl Device { #[inline] @@ -616,7 +888,7 @@ impl Device { ) -> VkResult { let mut renderpass = mem::MaybeUninit::uninit(); (self.device_fn_1_2.create_render_pass2)( - self.handle(), + self.handle, create_info, allocation_callbacks.as_raw_ptr(), renderpass.as_mut_ptr(), @@ -672,19 +944,15 @@ impl Device { first_query: u32, query_count: u32, ) { - (self.device_fn_1_2.reset_query_pool)(self.handle(), query_pool, first_query, query_count); + (self.device_fn_1_2.reset_query_pool)(self.handle, query_pool, first_query, query_count); } /// #[inline] pub unsafe fn get_semaphore_counter_value(&self, semaphore: vk::Semaphore) -> VkResult { let mut value = mem::MaybeUninit::uninit(); - (self.device_fn_1_2.get_semaphore_counter_value)( - self.handle(), - semaphore, - value.as_mut_ptr(), - ) - .assume_init_on_success(value) + (self.device_fn_1_2.get_semaphore_counter_value)(self.handle, semaphore, value.as_mut_ptr()) + .assume_init_on_success(value) } /// @@ -694,7 +962,7 @@ impl Device { wait_info: &vk::SemaphoreWaitInfo<'_>, timeout: u64, ) -> VkResult<()> { - (self.device_fn_1_2.wait_semaphores)(self.handle(), wait_info, timeout).result() + (self.device_fn_1_2.wait_semaphores)(self.handle, wait_info, timeout).result() } /// @@ -703,7 +971,7 @@ impl Device { &self, signal_info: &vk::SemaphoreSignalInfo<'_>, ) -> VkResult<()> { - (self.device_fn_1_2.signal_semaphore)(self.handle(), signal_info).result() + (self.device_fn_1_2.signal_semaphore)(self.handle, signal_info).result() } /// @@ -712,7 +980,7 @@ impl Device { &self, info: &vk::BufferDeviceAddressInfo<'_>, ) -> vk::DeviceAddress { - (self.device_fn_1_2.get_buffer_device_address)(self.handle(), info) + (self.device_fn_1_2.get_buffer_device_address)(self.handle, info) } /// @@ -721,7 +989,7 @@ impl Device { &self, info: &vk::BufferDeviceAddressInfo<'_>, ) -> u64 { - (self.device_fn_1_2.get_buffer_opaque_capture_address)(self.handle(), info) + (self.device_fn_1_2.get_buffer_opaque_capture_address)(self.handle, info) } /// @@ -730,7 +998,7 @@ impl Device { &self, info: &vk::DeviceMemoryOpaqueCaptureAddressInfo<'_>, ) -> u64 { - (self.device_fn_1_2.get_device_memory_opaque_capture_address)(self.handle(), info) + (self.device_fn_1_2.get_device_memory_opaque_capture_address)(self.handle, info) } } @@ -748,7 +1016,7 @@ impl Device { bind_infos: &[vk::BindBufferMemoryInfo<'_>], ) -> VkResult<()> { (self.device_fn_1_1.bind_buffer_memory2)( - self.handle(), + self.handle, bind_infos.len() as _, bind_infos.as_ptr(), ) @@ -762,7 +1030,7 @@ impl Device { bind_infos: &[vk::BindImageMemoryInfo<'_>], ) -> VkResult<()> { (self.device_fn_1_1.bind_image_memory2)( - self.handle(), + self.handle, bind_infos.len() as _, bind_infos.as_ptr(), ) @@ -779,7 +1047,7 @@ impl Device { ) -> vk::PeerMemoryFeatureFlags { let mut peer_memory_features = mem::MaybeUninit::uninit(); (self.device_fn_1_1.get_device_group_peer_memory_features)( - self.handle(), + self.handle, heap_index, local_device_index, remote_device_index, @@ -824,7 +1092,7 @@ impl Device { info: &vk::ImageMemoryRequirementsInfo2<'_>, out: &mut vk::MemoryRequirements2<'_>, ) { - (self.device_fn_1_1.get_image_memory_requirements2)(self.handle(), info, out); + (self.device_fn_1_1.get_image_memory_requirements2)(self.handle, info, out); } /// @@ -834,7 +1102,7 @@ impl Device { info: &vk::BufferMemoryRequirementsInfo2<'_>, out: &mut vk::MemoryRequirements2<'_>, ) { - (self.device_fn_1_1.get_buffer_memory_requirements2)(self.handle(), info, out); + (self.device_fn_1_1.get_buffer_memory_requirements2)(self.handle, info, out); } /// Retrieve the number of elements to pass to [`get_image_sparse_memory_requirements2()`][Self::get_image_sparse_memory_requirements2()] @@ -845,7 +1113,7 @@ impl Device { ) -> usize { let mut count = mem::MaybeUninit::uninit(); (self.device_fn_1_1.get_image_sparse_memory_requirements2)( - self.handle(), + self.handle, info, count.as_mut_ptr(), ptr::null_mut(), @@ -865,7 +1133,7 @@ impl Device { ) { let mut count = out.len() as u32; (self.device_fn_1_1.get_image_sparse_memory_requirements2)( - self.handle(), + self.handle, info, &mut count, out.as_mut_ptr(), @@ -880,14 +1148,14 @@ impl Device { command_pool: vk::CommandPool, flags: vk::CommandPoolTrimFlags, ) { - (self.device_fn_1_1.trim_command_pool)(self.handle(), command_pool, flags); + (self.device_fn_1_1.trim_command_pool)(self.handle, command_pool, flags); } /// #[inline] pub unsafe fn get_device_queue2(&self, queue_info: &vk::DeviceQueueInfo2<'_>) -> vk::Queue { let mut queue = mem::MaybeUninit::uninit(); - (self.device_fn_1_1.get_device_queue2)(self.handle(), queue_info, queue.as_mut_ptr()); + (self.device_fn_1_1.get_device_queue2)(self.handle, queue_info, queue.as_mut_ptr()); queue.assume_init() } @@ -900,7 +1168,7 @@ impl Device { ) -> VkResult { let mut ycbcr_conversion = mem::MaybeUninit::uninit(); (self.device_fn_1_1.create_sampler_ycbcr_conversion)( - self.handle(), + self.handle, create_info, allocation_callbacks.as_raw_ptr(), ycbcr_conversion.as_mut_ptr(), @@ -916,7 +1184,7 @@ impl Device { allocation_callbacks: Option<&vk::AllocationCallbacks<'_>>, ) { (self.device_fn_1_1.destroy_sampler_ycbcr_conversion)( - self.handle(), + self.handle, ycbcr_conversion, allocation_callbacks.as_raw_ptr(), ); @@ -931,7 +1199,7 @@ impl Device { ) -> VkResult { let mut descriptor_update_template = mem::MaybeUninit::uninit(); (self.device_fn_1_1.create_descriptor_update_template)( - self.handle(), + self.handle, create_info, allocation_callbacks.as_raw_ptr(), descriptor_update_template.as_mut_ptr(), @@ -947,7 +1215,7 @@ impl Device { allocation_callbacks: Option<&vk::AllocationCallbacks<'_>>, ) { (self.device_fn_1_1.destroy_descriptor_update_template)( - self.handle(), + self.handle, descriptor_update_template, allocation_callbacks.as_raw_ptr(), ); @@ -962,7 +1230,7 @@ impl Device { data: *const ffi::c_void, ) { (self.device_fn_1_1.update_descriptor_set_with_template)( - self.handle(), + self.handle, descriptor_set, descriptor_update_template, data, @@ -976,7 +1244,7 @@ impl Device { create_info: &vk::DescriptorSetLayoutCreateInfo<'_>, out: &mut vk::DescriptorSetLayoutSupport<'_>, ) { - (self.device_fn_1_1.get_descriptor_set_layout_support)(self.handle(), create_info, out); + (self.device_fn_1_1.get_descriptor_set_layout_support)(self.handle, create_info, out); } } @@ -993,7 +1261,7 @@ impl Device { &self, allocation_callbacks: Option<&vk::AllocationCallbacks<'_>>, ) { - (self.device_fn_1_0.destroy_device)(self.handle(), allocation_callbacks.as_raw_ptr()); + (self.device_fn_1_0.destroy_device)(self.handle, allocation_callbacks.as_raw_ptr()); } /// @@ -1004,7 +1272,7 @@ impl Device { allocation_callbacks: Option<&vk::AllocationCallbacks<'_>>, ) { (self.device_fn_1_0.destroy_sampler)( - self.handle(), + self.handle, sampler, allocation_callbacks.as_raw_ptr(), ); @@ -1017,7 +1285,7 @@ impl Device { memory: vk::DeviceMemory, allocation_callbacks: Option<&vk::AllocationCallbacks<'_>>, ) { - (self.device_fn_1_0.free_memory)(self.handle(), memory, allocation_callbacks.as_raw_ptr()); + (self.device_fn_1_0.free_memory)(self.handle, memory, allocation_callbacks.as_raw_ptr()); } /// @@ -1028,7 +1296,7 @@ impl Device { command_buffers: &[vk::CommandBuffer], ) { (self.device_fn_1_0.free_command_buffers)( - self.handle(), + self.handle, command_pool, command_buffers.len() as u32, command_buffers.as_ptr(), @@ -1044,7 +1312,7 @@ impl Device { ) -> VkResult { let mut event = mem::MaybeUninit::uninit(); (self.device_fn_1_0.create_event)( - self.handle(), + self.handle, create_info, allocation_callbacks.as_raw_ptr(), event.as_mut_ptr(), @@ -1059,7 +1327,7 @@ impl Device { /// event is _unsignaled_ ([`vk::Result::EVENT_RESET`]), or [`Err`] on failure. #[inline] pub unsafe fn get_event_status(&self, event: vk::Event) -> VkResult { - let err_code = (self.device_fn_1_0.get_event_status)(self.handle(), event); + let err_code = (self.device_fn_1_0.get_event_status)(self.handle, event); match err_code { vk::Result::EVENT_SET => Ok(true), vk::Result::EVENT_RESET => Ok(false), @@ -1070,13 +1338,13 @@ impl Device { /// #[inline] pub unsafe fn set_event(&self, event: vk::Event) -> VkResult<()> { - (self.device_fn_1_0.set_event)(self.handle(), event).result() + (self.device_fn_1_0.set_event)(self.handle, event).result() } /// #[inline] pub unsafe fn reset_event(&self, event: vk::Event) -> VkResult<()> { - (self.device_fn_1_0.reset_event)(self.handle(), event).result() + (self.device_fn_1_0.reset_event)(self.handle, event).result() } /// #[inline] @@ -1133,7 +1401,7 @@ impl Device { fence: vk::Fence, allocation_callbacks: Option<&vk::AllocationCallbacks<'_>>, ) { - (self.device_fn_1_0.destroy_fence)(self.handle(), fence, allocation_callbacks.as_raw_ptr()); + (self.device_fn_1_0.destroy_fence)(self.handle, fence, allocation_callbacks.as_raw_ptr()); } /// @@ -1143,7 +1411,7 @@ impl Device { event: vk::Event, allocation_callbacks: Option<&vk::AllocationCallbacks<'_>>, ) { - (self.device_fn_1_0.destroy_event)(self.handle(), event, allocation_callbacks.as_raw_ptr()); + (self.device_fn_1_0.destroy_event)(self.handle, event, allocation_callbacks.as_raw_ptr()); } /// @@ -1153,7 +1421,7 @@ impl Device { image: vk::Image, allocation_callbacks: Option<&vk::AllocationCallbacks<'_>>, ) { - (self.device_fn_1_0.destroy_image)(self.handle(), image, allocation_callbacks.as_raw_ptr()); + (self.device_fn_1_0.destroy_image)(self.handle, image, allocation_callbacks.as_raw_ptr()); } /// @@ -1164,7 +1432,7 @@ impl Device { allocation_callbacks: Option<&vk::AllocationCallbacks<'_>>, ) { (self.device_fn_1_0.destroy_command_pool)( - self.handle(), + self.handle, pool, allocation_callbacks.as_raw_ptr(), ); @@ -1178,7 +1446,7 @@ impl Device { allocation_callbacks: Option<&vk::AllocationCallbacks<'_>>, ) { (self.device_fn_1_0.destroy_image_view)( - self.handle(), + self.handle, image_view, allocation_callbacks.as_raw_ptr(), ); @@ -1192,7 +1460,7 @@ impl Device { allocation_callbacks: Option<&vk::AllocationCallbacks<'_>>, ) { (self.device_fn_1_0.destroy_render_pass)( - self.handle(), + self.handle, renderpass, allocation_callbacks.as_raw_ptr(), ); @@ -1206,7 +1474,7 @@ impl Device { allocation_callbacks: Option<&vk::AllocationCallbacks<'_>>, ) { (self.device_fn_1_0.destroy_framebuffer)( - self.handle(), + self.handle, framebuffer, allocation_callbacks.as_raw_ptr(), ); @@ -1220,7 +1488,7 @@ impl Device { allocation_callbacks: Option<&vk::AllocationCallbacks<'_>>, ) { (self.device_fn_1_0.destroy_pipeline_layout)( - self.handle(), + self.handle, pipeline_layout, allocation_callbacks.as_raw_ptr(), ); @@ -1234,7 +1502,7 @@ impl Device { allocation_callbacks: Option<&vk::AllocationCallbacks<'_>>, ) { (self.device_fn_1_0.destroy_pipeline_cache)( - self.handle(), + self.handle, pipeline_cache, allocation_callbacks.as_raw_ptr(), ); @@ -1247,11 +1515,7 @@ impl Device { buffer: vk::Buffer, allocation_callbacks: Option<&vk::AllocationCallbacks<'_>>, ) { - (self.device_fn_1_0.destroy_buffer)( - self.handle(), - buffer, - allocation_callbacks.as_raw_ptr(), - ); + (self.device_fn_1_0.destroy_buffer)(self.handle, buffer, allocation_callbacks.as_raw_ptr()); } /// @@ -1262,7 +1526,7 @@ impl Device { allocation_callbacks: Option<&vk::AllocationCallbacks<'_>>, ) { (self.device_fn_1_0.destroy_shader_module)( - self.handle(), + self.handle, shader, allocation_callbacks.as_raw_ptr(), ); @@ -1276,7 +1540,7 @@ impl Device { allocation_callbacks: Option<&vk::AllocationCallbacks<'_>>, ) { (self.device_fn_1_0.destroy_pipeline)( - self.handle(), + self.handle, pipeline, allocation_callbacks.as_raw_ptr(), ); @@ -1290,7 +1554,7 @@ impl Device { allocation_callbacks: Option<&vk::AllocationCallbacks<'_>>, ) { (self.device_fn_1_0.destroy_semaphore)( - self.handle(), + self.handle, semaphore, allocation_callbacks.as_raw_ptr(), ); @@ -1304,7 +1568,7 @@ impl Device { allocation_callbacks: Option<&vk::AllocationCallbacks<'_>>, ) { (self.device_fn_1_0.destroy_descriptor_pool)( - self.handle(), + self.handle, pool, allocation_callbacks.as_raw_ptr(), ); @@ -1318,7 +1582,7 @@ impl Device { allocation_callbacks: Option<&vk::AllocationCallbacks<'_>>, ) { (self.device_fn_1_0.destroy_query_pool)( - self.handle(), + self.handle, pool, allocation_callbacks.as_raw_ptr(), ); @@ -1332,7 +1596,7 @@ impl Device { allocation_callbacks: Option<&vk::AllocationCallbacks<'_>>, ) { (self.device_fn_1_0.destroy_descriptor_set_layout)( - self.handle(), + self.handle, layout, allocation_callbacks.as_raw_ptr(), ); @@ -1346,7 +1610,7 @@ impl Device { descriptor_sets: &[vk::DescriptorSet], ) -> VkResult<()> { (self.device_fn_1_0.free_descriptor_sets)( - self.handle(), + self.handle, pool, descriptor_sets.len() as u32, descriptor_sets.as_ptr(), @@ -1362,7 +1626,7 @@ impl Device { descriptor_copies: &[vk::CopyDescriptorSet<'_>], ) { (self.device_fn_1_0.update_descriptor_sets)( - self.handle(), + self.handle, descriptor_writes.len() as u32, descriptor_writes.as_ptr(), descriptor_copies.len() as u32, @@ -1379,7 +1643,7 @@ impl Device { ) -> VkResult { let mut sampler = mem::MaybeUninit::uninit(); (self.device_fn_1_0.create_sampler)( - self.handle(), + self.handle, create_info, allocation_callbacks.as_raw_ptr(), sampler.as_mut_ptr(), @@ -1552,7 +1816,7 @@ impl Device { ) -> VkResult> { let mut desc_set = Vec::with_capacity(allocate_info.descriptor_set_count as usize); (self.device_fn_1_0.allocate_descriptor_sets)( - self.handle(), + self.handle, allocate_info, desc_set.as_mut_ptr(), ) @@ -1568,7 +1832,7 @@ impl Device { ) -> VkResult { let mut layout = mem::MaybeUninit::uninit(); (self.device_fn_1_0.create_descriptor_set_layout)( - self.handle(), + self.handle, create_info, allocation_callbacks.as_raw_ptr(), layout.as_mut_ptr(), @@ -1579,7 +1843,7 @@ impl Device { /// #[inline] pub unsafe fn device_wait_idle(&self) -> VkResult<()> { - (self.device_fn_1_0.device_wait_idle)(self.handle()).result() + (self.device_fn_1_0.device_wait_idle)(self.handle).result() } /// @@ -1591,7 +1855,7 @@ impl Device { ) -> VkResult { let mut pool = mem::MaybeUninit::uninit(); (self.device_fn_1_0.create_descriptor_pool)( - self.handle(), + self.handle, create_info, allocation_callbacks.as_raw_ptr(), pool.as_mut_ptr(), @@ -1606,7 +1870,7 @@ impl Device { pool: vk::DescriptorPool, flags: vk::DescriptorPoolResetFlags, ) -> VkResult<()> { - (self.device_fn_1_0.reset_descriptor_pool)(self.handle(), pool, flags).result() + (self.device_fn_1_0.reset_descriptor_pool)(self.handle, pool, flags).result() } /// @@ -1616,7 +1880,7 @@ impl Device { command_pool: vk::CommandPool, flags: vk::CommandPoolResetFlags, ) -> VkResult<()> { - (self.device_fn_1_0.reset_command_pool)(self.handle(), command_pool, flags).result() + (self.device_fn_1_0.reset_command_pool)(self.handle, command_pool, flags).result() } /// @@ -1632,7 +1896,7 @@ impl Device { /// #[inline] pub unsafe fn reset_fences(&self, fences: &[vk::Fence]) -> VkResult<()> { - (self.device_fn_1_0.reset_fences)(self.handle(), fences.len() as u32, fences.as_ptr()) + (self.device_fn_1_0.reset_fences)(self.handle, fences.len() as u32, fences.as_ptr()) .result() } @@ -2068,7 +2332,7 @@ impl Device { ) -> VkResult<()> { let data_size = size_of_val(data); (self.device_fn_1_0.get_query_pool_results)( - self.handle(), + self.handle, query_pool, first_query, data.len() as u32, @@ -2136,7 +2400,7 @@ impl Device { ) -> VkResult { let mut semaphore = mem::MaybeUninit::uninit(); (self.device_fn_1_0.create_semaphore)( - self.handle(), + self.handle, create_info, allocation_callbacks.as_raw_ptr(), semaphore.as_mut_ptr(), @@ -2158,7 +2422,7 @@ impl Device { ) -> Result, (Vec, vk::Result)> { let mut pipelines = Vec::with_capacity(create_infos.len()); let err_code = (self.device_fn_1_0.create_graphics_pipelines)( - self.handle(), + self.handle, pipeline_cache, create_infos.len() as u32, create_infos.as_ptr(), @@ -2186,7 +2450,7 @@ impl Device { ) -> Result, (Vec, vk::Result)> { let mut pipelines = Vec::with_capacity(create_infos.len()); let err_code = (self.device_fn_1_0.create_compute_pipelines)( - self.handle(), + self.handle, pipeline_cache, create_infos.len() as u32, create_infos.as_ptr(), @@ -2209,7 +2473,7 @@ impl Device { ) -> VkResult { let mut buffer = mem::MaybeUninit::uninit(); (self.device_fn_1_0.create_buffer)( - self.handle(), + self.handle, create_info, allocation_callbacks.as_raw_ptr(), buffer.as_mut_ptr(), @@ -2226,7 +2490,7 @@ impl Device { ) -> VkResult { let mut pipeline_layout = mem::MaybeUninit::uninit(); (self.device_fn_1_0.create_pipeline_layout)( - self.handle(), + self.handle, create_info, allocation_callbacks.as_raw_ptr(), pipeline_layout.as_mut_ptr(), @@ -2243,7 +2507,7 @@ impl Device { ) -> VkResult { let mut pipeline_cache = mem::MaybeUninit::uninit(); (self.device_fn_1_0.create_pipeline_cache)( - self.handle(), + self.handle, create_info, allocation_callbacks.as_raw_ptr(), pipeline_cache.as_mut_ptr(), @@ -2259,7 +2523,7 @@ impl Device { ) -> VkResult> { read_into_uninitialized_vector(|count, data: *mut u8| { (self.device_fn_1_0.get_pipeline_cache_data)( - self.handle(), + self.handle, pipeline_cache, count, data.cast(), @@ -2275,7 +2539,7 @@ impl Device { src_caches: &[vk::PipelineCache], ) -> VkResult<()> { (self.device_fn_1_0.merge_pipeline_caches)( - self.handle(), + self.handle, dst_cache, src_caches.len() as u32, src_caches.as_ptr(), @@ -2293,21 +2557,14 @@ impl Device { flags: vk::MemoryMapFlags, ) -> VkResult<*mut ffi::c_void> { let mut data = mem::MaybeUninit::uninit(); - (self.device_fn_1_0.map_memory)( - self.handle(), - memory, - offset, - size, - flags, - data.as_mut_ptr(), - ) - .assume_init_on_success(data) + (self.device_fn_1_0.map_memory)(self.handle, memory, offset, size, flags, data.as_mut_ptr()) + .assume_init_on_success(data) } /// #[inline] pub unsafe fn unmap_memory(&self, memory: vk::DeviceMemory) { - (self.device_fn_1_0.unmap_memory)(self.handle(), memory); + (self.device_fn_1_0.unmap_memory)(self.handle, memory); } /// @@ -2317,7 +2574,7 @@ impl Device { ranges: &[vk::MappedMemoryRange<'_>], ) -> VkResult<()> { (self.device_fn_1_0.invalidate_mapped_memory_ranges)( - self.handle(), + self.handle, ranges.len() as u32, ranges.as_ptr(), ) @@ -2331,7 +2588,7 @@ impl Device { ranges: &[vk::MappedMemoryRange<'_>], ) -> VkResult<()> { (self.device_fn_1_0.flush_mapped_memory_ranges)( - self.handle(), + self.handle, ranges.len() as u32, ranges.as_ptr(), ) @@ -2347,7 +2604,7 @@ impl Device { ) -> VkResult { let mut framebuffer = mem::MaybeUninit::uninit(); (self.device_fn_1_0.create_framebuffer)( - self.handle(), + self.handle, create_info, allocation_callbacks.as_raw_ptr(), framebuffer.as_mut_ptr(), @@ -2360,7 +2617,7 @@ impl Device { pub unsafe fn get_device_queue(&self, queue_family_index: u32, queue_index: u32) -> vk::Queue { let mut queue = mem::MaybeUninit::uninit(); (self.device_fn_1_0.get_device_queue)( - self.handle(), + self.handle, queue_family_index, queue_index, queue.as_mut_ptr(), @@ -2403,7 +2660,7 @@ impl Device { ) -> VkResult { let mut renderpass = mem::MaybeUninit::uninit(); (self.device_fn_1_0.create_render_pass)( - self.handle(), + self.handle, create_info, allocation_callbacks.as_raw_ptr(), renderpass.as_mut_ptr(), @@ -2436,7 +2693,7 @@ impl Device { timeout: u64, ) -> VkResult<()> { (self.device_fn_1_0.wait_for_fences)( - self.handle(), + self.handle, fences.len() as u32, fences.as_ptr(), wait_all as u32, @@ -2452,7 +2709,7 @@ impl Device { /// fence is _unsignaled_ ([`vk::Result::NOT_READY`]), or [`Err`] on failure. #[inline] pub unsafe fn get_fence_status(&self, fence: vk::Fence) -> VkResult { - let err_code = (self.device_fn_1_0.get_fence_status)(self.handle(), fence); + let err_code = (self.device_fn_1_0.get_fence_status)(self.handle, fence); match err_code { vk::Result::SUCCESS => Ok(true), vk::Result::NOT_READY => Ok(false), @@ -2504,7 +2761,7 @@ impl Device { ) -> VkResult { let mut buffer_view = mem::MaybeUninit::uninit(); (self.device_fn_1_0.create_buffer_view)( - self.handle(), + self.handle, create_info, allocation_callbacks.as_raw_ptr(), buffer_view.as_mut_ptr(), @@ -2520,7 +2777,7 @@ impl Device { allocation_callbacks: Option<&vk::AllocationCallbacks<'_>>, ) { (self.device_fn_1_0.destroy_buffer_view)( - self.handle(), + self.handle, buffer_view, allocation_callbacks.as_raw_ptr(), ); @@ -2535,7 +2792,7 @@ impl Device { ) -> VkResult { let mut image_view = mem::MaybeUninit::uninit(); (self.device_fn_1_0.create_image_view)( - self.handle(), + self.handle, create_info, allocation_callbacks.as_raw_ptr(), image_view.as_mut_ptr(), @@ -2551,7 +2808,7 @@ impl Device { ) -> VkResult> { let mut buffers = Vec::with_capacity(allocate_info.command_buffer_count as usize); (self.device_fn_1_0.allocate_command_buffers)( - self.handle(), + self.handle, allocate_info, buffers.as_mut_ptr(), ) @@ -2567,7 +2824,7 @@ impl Device { ) -> VkResult { let mut pool = mem::MaybeUninit::uninit(); (self.device_fn_1_0.create_command_pool)( - self.handle(), + self.handle, create_info, allocation_callbacks.as_raw_ptr(), pool.as_mut_ptr(), @@ -2584,7 +2841,7 @@ impl Device { ) -> VkResult { let mut pool = mem::MaybeUninit::uninit(); (self.device_fn_1_0.create_query_pool)( - self.handle(), + self.handle, create_info, allocation_callbacks.as_raw_ptr(), pool.as_mut_ptr(), @@ -2601,7 +2858,7 @@ impl Device { ) -> VkResult { let mut image = mem::MaybeUninit::uninit(); (self.device_fn_1_0.create_image)( - self.handle(), + self.handle, create_info, allocation_callbacks.as_raw_ptr(), image.as_mut_ptr(), @@ -2618,7 +2875,7 @@ impl Device { ) -> vk::SubresourceLayout { let mut layout = mem::MaybeUninit::uninit(); (self.device_fn_1_0.get_image_subresource_layout)( - self.handle(), + self.handle, image, &subresource, layout.as_mut_ptr(), @@ -2631,7 +2888,7 @@ impl Device { pub unsafe fn get_image_memory_requirements(&self, image: vk::Image) -> vk::MemoryRequirements { let mut mem_req = mem::MaybeUninit::uninit(); (self.device_fn_1_0.get_image_memory_requirements)( - self.handle(), + self.handle, image, mem_req.as_mut_ptr(), ); @@ -2646,7 +2903,7 @@ impl Device { ) -> vk::MemoryRequirements { let mut mem_req = mem::MaybeUninit::uninit(); (self.device_fn_1_0.get_buffer_memory_requirements)( - self.handle(), + self.handle, buffer, mem_req.as_mut_ptr(), ); @@ -2662,7 +2919,7 @@ impl Device { ) -> VkResult { let mut memory = mem::MaybeUninit::uninit(); (self.device_fn_1_0.allocate_memory)( - self.handle(), + self.handle, allocate_info, allocation_callbacks.as_raw_ptr(), memory.as_mut_ptr(), @@ -2679,7 +2936,7 @@ impl Device { ) -> VkResult { let mut shader = mem::MaybeUninit::uninit(); (self.device_fn_1_0.create_shader_module)( - self.handle(), + self.handle, create_info, allocation_callbacks.as_raw_ptr(), shader.as_mut_ptr(), @@ -2696,7 +2953,7 @@ impl Device { ) -> VkResult { let mut fence = mem::MaybeUninit::uninit(); (self.device_fn_1_0.create_fence)( - self.handle(), + self.handle, create_info, allocation_callbacks.as_raw_ptr(), fence.as_mut_ptr(), @@ -2712,8 +2969,7 @@ impl Device { device_memory: vk::DeviceMemory, offset: vk::DeviceSize, ) -> VkResult<()> { - (self.device_fn_1_0.bind_buffer_memory)(self.handle(), buffer, device_memory, offset) - .result() + (self.device_fn_1_0.bind_buffer_memory)(self.handle, buffer, device_memory, offset).result() } /// @@ -2724,7 +2980,7 @@ impl Device { device_memory: vk::DeviceMemory, offset: vk::DeviceSize, ) -> VkResult<()> { - (self.device_fn_1_0.bind_image_memory)(self.handle(), image, device_memory, offset).result() + (self.device_fn_1_0.bind_image_memory)(self.handle, image, device_memory, offset).result() } /// @@ -2732,7 +2988,7 @@ impl Device { pub unsafe fn get_render_area_granularity(&self, render_pass: vk::RenderPass) -> vk::Extent2D { let mut granularity = mem::MaybeUninit::uninit(); (self.device_fn_1_0.get_render_area_granularity)( - self.handle(), + self.handle, render_pass, granularity.as_mut_ptr(), ); @@ -2744,7 +3000,7 @@ impl Device { pub unsafe fn get_device_memory_commitment(&self, memory: vk::DeviceMemory) -> vk::DeviceSize { let mut committed_memory_in_bytes = mem::MaybeUninit::uninit(); (self.device_fn_1_0.get_device_memory_commitment)( - self.handle(), + self.handle, memory, committed_memory_in_bytes.as_mut_ptr(), ); @@ -2759,7 +3015,7 @@ impl Device { ) -> Vec { read_into_uninitialized_vector(|count, data| { (self.device_fn_1_0.get_image_sparse_memory_requirements)( - self.handle(), + self.handle, image, count, data, diff --git a/ash/src/extensions/ext/host_image_copy.rs b/ash/src/extensions/ext/host_image_copy.rs index 204896407..2aff97025 100644 --- a/ash/src/extensions/ext/host_image_copy.rs +++ b/ash/src/extensions/ext/host_image_copy.rs @@ -8,6 +8,7 @@ use crate::{ext, khr}; impl crate::ext::host_image_copy::Device { /// #[inline] + #[doc(alias = "vkCopyMemoryToImageEXT")] pub unsafe fn copy_memory_to_image( &self, copy_memory_to_image_info: &vk::CopyMemoryToImageInfoEXT<'_>, @@ -17,6 +18,7 @@ impl crate::ext::host_image_copy::Device { /// #[inline] + #[doc(alias = "vkCopyImageToMemoryEXT")] pub unsafe fn copy_image_to_memory( &self, copy_image_to_memory_info: &vk::CopyImageToMemoryInfoEXT<'_>, @@ -26,6 +28,7 @@ impl crate::ext::host_image_copy::Device { /// #[inline] + #[doc(alias = "vkCopyImageToImageEXT")] pub unsafe fn copy_image_to_image( &self, copy_image_to_image_info: &vk::CopyImageToImageInfoEXT<'_>, @@ -35,6 +38,7 @@ impl crate::ext::host_image_copy::Device { /// #[inline] + #[doc(alias = "vkTransitionImageLayoutEXT")] pub unsafe fn transition_image_layout( &self, transitions: &[vk::HostImageLayoutTransitionInfoEXT<'_>], diff --git a/ash/src/extensions/khr/dynamic_rendering_local_read.rs b/ash/src/extensions/khr/dynamic_rendering_local_read.rs index fbd6f29ff..2f25557b2 100644 --- a/ash/src/extensions/khr/dynamic_rendering_local_read.rs +++ b/ash/src/extensions/khr/dynamic_rendering_local_read.rs @@ -5,6 +5,7 @@ use crate::vk; impl crate::khr::dynamic_rendering_local_read::Device { /// #[inline] + #[doc(alias = "vkCmdSetRenderingAttachmentLocations")] pub unsafe fn cmd_set_rendering_attachment_locations( &self, command_buffer: vk::CommandBuffer, @@ -15,6 +16,7 @@ impl crate::khr::dynamic_rendering_local_read::Device { /// #[inline] + #[doc(alias = "vkCmdSetRenderingInputAttachmentIndices")] pub unsafe fn cmd_set_rendering_input_attachment_indices( &self, command_buffer: vk::CommandBuffer, diff --git a/ash/src/extensions/khr/maintenance5.rs b/ash/src/extensions/khr/maintenance5.rs index 93b417a68..0bec20d01 100644 --- a/ash/src/extensions/khr/maintenance5.rs +++ b/ash/src/extensions/khr/maintenance5.rs @@ -8,6 +8,7 @@ use core::mem; impl crate::khr::maintenance5::Device { /// #[inline] + #[doc(alias = "vkCmdBindIndexBuffer2KHR")] pub unsafe fn cmd_bind_index_buffer2( &self, command_buffer: vk::CommandBuffer, @@ -21,6 +22,7 @@ impl crate::khr::maintenance5::Device { /// #[inline] + #[doc(alias = "vkGetRenderingAreaGranularityKHR")] pub unsafe fn get_rendering_area_granularity( &self, rendering_area_info: &vk::RenderingAreaInfoKHR<'_>, @@ -36,6 +38,7 @@ impl crate::khr::maintenance5::Device { /// #[inline] + #[doc(alias = "vkGetDeviceImageSubresourceLayoutKHR")] pub unsafe fn get_device_image_subresource_layout( &self, info: &vk::DeviceImageSubresourceInfoKHR<'_>, @@ -55,6 +58,7 @@ impl crate::khr::maintenance5::Device { /// [`VK_EXT_host_image_copy`]: https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_host_image_copy.html /// [`VK_EXT_image_compression_control`]: https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_image_compression_control.html #[inline] + #[doc(alias = "vkGetImageSubresourceLayout2KHR")] pub unsafe fn get_image_subresource_layout2( &self, image: vk::Image, diff --git a/ash/src/extensions/khr/maintenance6.rs b/ash/src/extensions/khr/maintenance6.rs index 696ff6f3c..a3dd36f29 100644 --- a/ash/src/extensions/khr/maintenance6.rs +++ b/ash/src/extensions/khr/maintenance6.rs @@ -5,6 +5,7 @@ use crate::vk; impl crate::khr::maintenance6::Device { /// #[inline] + #[doc(alias = "vkCmdBindDescriptorSets2KHR")] pub unsafe fn cmd_bind_descriptor_sets2( &self, command_buffer: vk::CommandBuffer, @@ -15,6 +16,7 @@ impl crate::khr::maintenance6::Device { /// #[inline] + #[doc(alias = "vkCmdPushConstants2KHR")] pub unsafe fn cmd_push_constants2( &self, command_buffer: vk::CommandBuffer, @@ -25,6 +27,7 @@ impl crate::khr::maintenance6::Device { /// #[inline] + #[doc(alias = "vkCmdPushDescriptorSet2KHR")] pub unsafe fn cmd_push_descriptor_set2( &self, command_buffer: vk::CommandBuffer, @@ -35,6 +38,7 @@ impl crate::khr::maintenance6::Device { /// #[inline] + #[doc(alias = "vkCmdPushDescriptorSetWithTemplate2KHR")] pub unsafe fn cmd_push_descriptor_set_with_template2( &self, command_buffer: vk::CommandBuffer, @@ -46,8 +50,11 @@ impl crate::khr::maintenance6::Device { ) } + // XXX: The below two belong in a different extension! + /// #[inline] + #[doc(alias = "vkCmdSetDescriptorBufferOffsets2EXT")] pub unsafe fn cmd_set_descriptor_buffer_offsets2( &self, command_buffer: vk::CommandBuffer, @@ -61,6 +68,7 @@ impl crate::khr::maintenance6::Device { /// #[inline] + #[doc(alias = "vkCmdBindDescriptorBufferEmbeddedSamplers2EXT")] pub unsafe fn cmd_bind_descriptor_buffer_embedded_samplers2( &self, command_buffer: vk::CommandBuffer, diff --git a/ash/src/extensions/khr/push_descriptor.rs b/ash/src/extensions/khr/push_descriptor.rs index bf742937b..d3d6fff8e 100644 --- a/ash/src/extensions/khr/push_descriptor.rs +++ b/ash/src/extensions/khr/push_descriptor.rs @@ -6,6 +6,7 @@ use core::ffi; impl crate::khr::push_descriptor::Device { /// #[inline] + #[doc(alias = "vkCmdPushDescriptorSetKHR")] pub unsafe fn cmd_push_descriptor_set( &self, command_buffer: vk::CommandBuffer, @@ -26,6 +27,7 @@ impl crate::khr::push_descriptor::Device { /// #[inline] + #[doc(alias = "vkCmdPushDescriptorSetWithTemplateKHR")] pub unsafe fn cmd_push_descriptor_set_with_template( &self, command_buffer: vk::CommandBuffer, diff --git a/ash/src/instance.rs b/ash/src/instance.rs index 79995e19e..987b8f1e8 100644 --- a/ash/src/instance.rs +++ b/ash/src/instance.rs @@ -118,7 +118,7 @@ impl Instance { pub unsafe fn enumerate_physical_device_groups_len(&self) -> VkResult { let mut group_count = mem::MaybeUninit::uninit(); (self.instance_fn_1_1.enumerate_physical_device_groups)( - self.handle(), + self.handle, group_count.as_mut_ptr(), ptr::null_mut(), ) @@ -137,7 +137,7 @@ impl Instance { ) -> VkResult<()> { let mut count = out.len() as u32; (self.instance_fn_1_1.enumerate_physical_device_groups)( - self.handle(), + self.handle, &mut count, out.as_mut_ptr(), ) @@ -392,7 +392,7 @@ impl Instance { &self, allocation_callbacks: Option<&vk::AllocationCallbacks<'_>>, ) { - (self.instance_fn_1_0.destroy_instance)(self.handle(), allocation_callbacks.as_raw_ptr()); + (self.instance_fn_1_0.destroy_instance)(self.handle, allocation_callbacks.as_raw_ptr()); } /// @@ -495,7 +495,7 @@ impl Instance { #[inline] pub unsafe fn enumerate_physical_devices(&self) -> VkResult> { read_into_uninitialized_vector(|count, data| { - (self.instance_fn_1_0.enumerate_physical_devices)(self.handle(), count, data) + (self.instance_fn_1_0.enumerate_physical_devices)(self.handle, count, data) }) }