ash/extensions/khr/
get_surface_capabilities2.rs
1use crate::prelude::*;
2use crate::vk;
3use crate::{Entry, Instance};
4use std::ffi::CStr;
5use std::mem;
6
7#[derive(Clone)]
8pub struct GetSurfaceCapabilities2 {
9 fp: vk::KhrGetSurfaceCapabilities2Fn,
10}
11
12impl GetSurfaceCapabilities2 {
13 pub fn new(entry: &Entry, instance: &Instance) -> Self {
14 let fp = vk::KhrGetSurfaceCapabilities2Fn::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_surface_capabilities2(
22 &self,
23 physical_device: vk::PhysicalDevice,
24 surface_info: &vk::PhysicalDeviceSurfaceInfo2KHR,
25 ) -> VkResult<vk::SurfaceCapabilities2KHR> {
26 let mut surface_capabilities = Default::default();
27 (self.fp.get_physical_device_surface_capabilities2_khr)(
28 physical_device,
29 surface_info,
30 &mut surface_capabilities,
31 )
32 .result_with_success(surface_capabilities)
33 }
34
35 pub unsafe fn get_physical_device_surface_formats2_len(
37 &self,
38 physical_device: vk::PhysicalDevice,
39 surface_info: &vk::PhysicalDeviceSurfaceInfo2KHR,
40 ) -> VkResult<usize> {
41 let mut count = 0;
42 let err_code = (self.fp.get_physical_device_surface_formats2_khr)(
43 physical_device,
44 surface_info,
45 &mut count,
46 std::ptr::null_mut(),
47 );
48 err_code.result_with_success(count as usize)
49 }
50
51 pub unsafe fn get_physical_device_surface_formats2(
56 &self,
57 physical_device: vk::PhysicalDevice,
58 surface_info: &vk::PhysicalDeviceSurfaceInfo2KHR,
59 out: &mut [vk::SurfaceFormat2KHR],
60 ) -> VkResult<()> {
61 let mut count = out.len() as u32;
62 let err_code = (self.fp.get_physical_device_surface_formats2_khr)(
63 physical_device,
64 surface_info,
65 &mut count,
66 out.as_mut_ptr(),
67 );
68 assert_eq!(count as usize, out.len());
69 err_code.result()
70 }
71
72 pub const fn name() -> &'static CStr {
73 vk::KhrGetSurfaceCapabilities2Fn::name()
74 }
75
76 pub fn fp(&self) -> &vk::KhrGetSurfaceCapabilities2Fn {
77 &self.fp
78 }
79}