#[cfg(doc)] usesuper::Entry; usecrate::device::Device; usecrate::prelude::*; usecrate::vk; usecrate::RawPtr; use alloc::vec::Vec; use core::ffi; use core::mem; use core::ptr;
/// Retrieve the number of elements to pass to [`get_physical_device_tool_properties()`][Self::get_physical_device_tool_properties()] #[inline] pubunsafefn get_physical_device_tool_properties_len(
&self,
physical_device: vk::PhysicalDevice,
) -> VkResult<usize> { letmut count = mem::MaybeUninit::uninit();
(self.instance_fn_1_3.get_physical_device_tool_properties)(
physical_device,
count.as_mut_ptr(),
ptr::null_mut(),
)
.assume_init_on_success(count)
.map(|c| c as usize)
}
/// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkGetPhysicalDeviceToolProperties.html> /// /// Call [`get_physical_device_tool_properties_len()`][Self::get_physical_device_tool_properties_len()] to query the number of elements to pass to `out`. /// Be sure to [`Default::default()`]-initialize these elements and optionally set their `p_next` pointer. #[inline] pubunsafefn get_physical_device_tool_properties(
&self,
physical_device: vk::PhysicalDevice,
out: &mut [vk::PhysicalDeviceToolProperties<'_>],
) -> VkResult<()> { letmut count = out.len() as u32;
(self.instance_fn_1_3.get_physical_device_tool_properties)(
physical_device,
&mut count,
out.as_mut_ptr(),
)
.result()?;
assert_eq!(count as usize, out.len());
Ok(())
}
}
/// Retrieve the number of elements to pass to [`enumerate_physical_device_groups()`][Self::enumerate_physical_device_groups()] #[inline] pubunsafefn enumerate_physical_device_groups_len(&self) -> VkResult<usize> { letmut group_count = mem::MaybeUninit::uninit();
(self.instance_fn_1_1.enumerate_physical_device_groups)( self.handle(),
group_count.as_mut_ptr(),
ptr::null_mut(),
)
.assume_init_on_success(group_count)
.map(|c| c as usize)
}
/// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkEnumeratePhysicalDeviceGroups.html> /// /// Call [`enumerate_physical_device_groups_len()`][Self::enumerate_physical_device_groups_len()] to query the number of elements to pass to `out`. /// Be sure to [`Default::default()`]-initialize these elements and optionally set their `p_next` pointer. #[inline] pubunsafefn enumerate_physical_device_groups(
&self,
out: &mut [vk::PhysicalDeviceGroupProperties<'_>],
) -> VkResult<()> { letmut count = out.len() as u32;
(self.instance_fn_1_1.enumerate_physical_device_groups)( self.handle(),
&mut count,
out.as_mut_ptr(),
)
.result()?;
assert_eq!(count as usize, out.len());
Ok(())
}
/// Retrieve the number of elements to pass to [`get_physical_device_queue_family_properties2()`][Self::get_physical_device_queue_family_properties2()] #[inline] pubunsafefn get_physical_device_queue_family_properties2_len(
&self,
physical_device: vk::PhysicalDevice,
) -> usize { letmut queue_count = mem::MaybeUninit::uninit();
(self
.instance_fn_1_1
.get_physical_device_queue_family_properties2)(
physical_device,
queue_count.as_mut_ptr(),
ptr::null_mut(),
);
queue_count.assume_init() as usize
}
/// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkGetPhysicalDeviceQueueFamilyProperties2.html> /// /// Call [`get_physical_device_queue_family_properties2_len()`][Self::get_physical_device_queue_family_properties2_len()] to query the number of elements to pass to `out`. /// Be sure to [`Default::default()`]-initialize these elements and optionally set their `p_next` pointer. #[inline] pubunsafefn get_physical_device_queue_family_properties2(
&self,
physical_device: vk::PhysicalDevice,
out: &mut [vk::QueueFamilyProperties2<'_>],
) { letmut count = out.len() as u32;
(self
.instance_fn_1_1
.get_physical_device_queue_family_properties2)(
physical_device,
&mut count,
out.as_mut_ptr(),
);
assert_eq!(count as usize, out.len());
}
/// Retrieve the number of elements to pass to [`get_physical_device_sparse_image_format_properties2()`][Self::get_physical_device_sparse_image_format_properties2()] #[inline] pubunsafefn get_physical_device_sparse_image_format_properties2_len(
&self,
physical_device: vk::PhysicalDevice,
format_info: &vk::PhysicalDeviceSparseImageFormatInfo2<'_>,
) -> usize { letmut format_count = mem::MaybeUninit::uninit();
(self
.instance_fn_1_1
.get_physical_device_sparse_image_format_properties2)(
physical_device,
format_info,
format_count.as_mut_ptr(),
ptr::null_mut(),
);
format_count.assume_init() as usize
}
/// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkGetPhysicalDeviceSparseImageFormatProperties2.html> /// /// Call [`get_physical_device_sparse_image_format_properties2_len()`][Self::get_physical_device_sparse_image_format_properties2_len()] to query the number of elements to pass to `out`. /// Be sure to [`Default::default()`]-initialize these elements and optionally set their `p_next` pointer. #[inline] pubunsafefn get_physical_device_sparse_image_format_properties2(
&self,
physical_device: vk::PhysicalDevice,
format_info: &vk::PhysicalDeviceSparseImageFormatInfo2<'_>,
out: &mut [vk::SparseImageFormatProperties2<'_>],
) { letmut count = out.len() as u32;
(self
.instance_fn_1_1
.get_physical_device_sparse_image_format_properties2)(
physical_device,
format_info,
&mut count,
out.as_mut_ptr(),
);
assert_eq!(count as usize, out.len());
}
/// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkCreateDevice.html> /// /// # Safety /// /// There is a [parent/child relation] between [`Instance`] and the resulting [`Device`]. The /// application must not [destroy][Instance::destroy_instance()] the parent [`Instance`] object /// before first [destroying][Device::destroy_device()] the returned [`Device`] child object. /// [`Device`] does _not_ implement [drop][drop()] semantics and can only be destroyed via /// [`destroy_device()`][Device::destroy_device()]. /// /// See the [`Entry::create_instance()`] documentation for more destruction ordering rules on /// [`Instance`]. /// /// [parent/child relation]: https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fundamentals-objectmodel-lifetime #[inline] pubunsafefn create_device(
&self,
physical_device: vk::PhysicalDevice,
create_info: &vk::DeviceCreateInfo<'_>,
allocation_callbacks: Option<&vk::AllocationCallbacks<'_>>,
) -> VkResult<Device> { letmut device = mem::MaybeUninit::uninit(); let device = (self.instance_fn_1_0.create_device)(
physical_device,
create_info,
allocation_callbacks.as_raw_ptr(),
device.as_mut_ptr(),
)
.assume_init_on_success(device)?;
Ok(Device::load(&self.instance_fn_1_0, device))
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.