ash/extensions/khr/
present_wait.rs1use crate::prelude::*;
2use crate::vk;
3use crate::{Device, Instance};
4use std::ffi::CStr;
5use std::mem;
6
7#[derive(Clone)]
8pub struct PresentWait {
9 handle: vk::Device,
10 fp: vk::KhrPresentWaitFn,
11}
12
13impl PresentWait {
14 pub fn new(instance: &Instance, device: &Device) -> Self {
15 let handle = device.handle();
16 let fp = vk::KhrPresentWaitFn::load(|name| unsafe {
17 mem::transmute(instance.get_device_proc_addr(handle, name.as_ptr()))
18 });
19 Self { handle, fp }
20 }
21
22 #[inline]
24 pub unsafe fn wait_for_present(
25 &self,
26 swapchain: vk::SwapchainKHR,
27 present_id: u64,
28 timeout: u64,
29 ) -> VkResult<()> {
30 (self.fp.wait_for_present_khr)(self.handle, swapchain, present_id, timeout).result()
31 }
32
33 #[inline]
34 pub const fn name() -> &'static CStr {
35 vk::KhrPresentWaitFn::name()
36 }
37
38 #[inline]
39 pub fn fp(&self) -> &vk::KhrPresentWaitFn {
40 &self.fp
41 }
42
43 #[inline]
44 pub fn device(&self) -> vk::Device {
45 self.handle
46 }
47}