• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 use crate::prelude::*;
2 use crate::vk;
3 use crate::{EntryCustom, Instance};
4 use std::ffi::CStr;
5 use std::mem;
6 
7 #[derive(Clone)]
8 pub struct ToolingInfo {
9     handle: vk::Instance,
10     tooling_info_fn: vk::ExtToolingInfoFn,
11 }
12 
13 impl ToolingInfo {
new<L>(entry: &EntryCustom<L>, instance: &Instance) -> Self14     pub fn new<L>(entry: &EntryCustom<L>, instance: &Instance) -> Self {
15         let tooling_info_fn = vk::ExtToolingInfoFn::load(|name| unsafe {
16             mem::transmute(entry.get_instance_proc_addr(instance.handle(), name.as_ptr()))
17         });
18         Self {
19             handle: instance.handle(),
20             tooling_info_fn,
21         }
22     }
23 
name() -> &'static CStr24     pub fn name() -> &'static CStr {
25         vk::ExtToolingInfoFn::name()
26     }
27 
28     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetPhysicalDeviceToolPropertiesEXT.html>"]
get_physical_device_tool_properties( &self, physical_device: vk::PhysicalDevice, ) -> VkResult<Vec<vk::PhysicalDeviceToolPropertiesEXT>>29     pub unsafe fn get_physical_device_tool_properties(
30         &self,
31         physical_device: vk::PhysicalDevice,
32     ) -> VkResult<Vec<vk::PhysicalDeviceToolPropertiesEXT>> {
33         read_into_defaulted_vector(|count, data| {
34             self.tooling_info_fn
35                 .get_physical_device_tool_properties_ext(physical_device, count, data)
36         })
37     }
38 
fp(&self) -> &vk::ExtToolingInfoFn39     pub fn fp(&self) -> &vk::ExtToolingInfoFn {
40         &self.tooling_info_fn
41     }
42 
instance(&self) -> vk::Instance43     pub fn instance(&self) -> vk::Instance {
44         self.handle
45     }
46 }
47