ash/extensions/ext/
tooling_info.rs1use crate::prelude::*;
2use crate::vk;
3use crate::{Entry, Instance};
4use std::ffi::CStr;
5use std::mem;
6
7#[derive(Clone)]
8pub struct ToolingInfo {
9 fp: vk::ExtToolingInfoFn,
10}
11
12impl ToolingInfo {
13 pub fn new(entry: &Entry, instance: &Instance) -> Self {
14 let fp = vk::ExtToolingInfoFn::load(|name| unsafe {
15 mem::transmute(entry.get_instance_proc_addr(instance.handle(), name.as_ptr()))
16 });
17 Self { fp }
18 }
19
20 #[inline]
22 pub unsafe fn get_physical_device_tool_properties(
23 &self,
24 physical_device: vk::PhysicalDevice,
25 ) -> VkResult<Vec<vk::PhysicalDeviceToolPropertiesEXT>> {
26 read_into_defaulted_vector(|count, data| {
27 (self.fp.get_physical_device_tool_properties_ext)(physical_device, count, data)
28 })
29 }
30
31 #[inline]
32 pub const fn name() -> &'static CStr {
33 vk::ExtToolingInfoFn::name()
34 }
35
36 #[inline]
37 pub fn fp(&self) -> &vk::ExtToolingInfoFn {
38 &self.fp
39 }
40}