Skip to main content

ursus_core/vulkan/core/
sync.rs

1use ash::vk;
2
3pub struct FrameSync {
4    pub render_fence: vk::Fence,
5    device: ash::Device,
6}
7
8impl FrameSync {
9    pub fn new(device: &ash::Device) -> anyhow::Result<Self> {
10        let fence_info = vk::FenceCreateInfo::default().flags(vk::FenceCreateFlags::SIGNALED);
11        let render_fence = unsafe { device.create_fence(&fence_info, None)? };
12        Ok(Self { render_fence, device: device.clone() })
13    }
14}
15
16impl Drop for FrameSync {
17    fn drop(&mut self) {
18        unsafe {
19            self.device.destroy_fence(self.render_fence, None);
20        }
21    }
22}