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