ash/extensions/khr/
present_wait.rs
1use 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 pub unsafe fn wait_for_present(
24 &self,
25 swapchain: vk::SwapchainKHR,
26 present_id: u64,
27 timeout: u64,
28 ) -> VkResult<()> {
29 (self.fp.wait_for_present_khr)(self.handle, swapchain, present_id, timeout).result()
30 }
31
32 pub const fn name() -> &'static CStr {
33 vk::KhrPresentWaitFn::name()
34 }
35
36 pub fn fp(&self) -> &vk::KhrPresentWaitFn {
37 &self.fp
38 }
39
40 pub fn device(&self) -> vk::Device {
41 self.handle
42 }
43}