ash/extensions/ext/
tooling_info.rs
1use 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 pub unsafe fn get_physical_device_tool_properties(
22 &self,
23 physical_device: vk::PhysicalDevice,
24 ) -> VkResult<Vec<vk::PhysicalDeviceToolPropertiesEXT>> {
25 read_into_defaulted_vector(|count, data| {
26 (self.fp.get_physical_device_tool_properties_ext)(physical_device, count, data)
27 })
28 }
29
30 pub const fn name() -> &'static CStr {
31 vk::ExtToolingInfoFn::name()
32 }
33
34 pub fn fp(&self) -> &vk::ExtToolingInfoFn {
35 &self.fp
36 }
37}