ursus_core/vulkan/core/
sync.rs1use 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}