use super::device::Device;
use super::{Fence, FenceBuilder, Semaphore, SemaphoreBuilder, VulkanResult};
pub struct FrameSync {
pub image_available: Semaphore,
pub render_finished: Semaphore,
pub in_flight_fence: Fence,
}
impl FrameSync {
pub fn new(device: &Device) -> VulkanResult<FrameSync> {
Ok(FrameSync {
image_available: SemaphoreBuilder::new(device).build()?,
render_finished: SemaphoreBuilder::new(device).build()?,
in_flight_fence: FenceBuilder::signaled(device).build()?,
})
}
pub fn destroy(&self, device: &Device) {
unsafe {
device.destroy_semaphore(self.image_available.raw, None);
device.destroy_semaphore(self.render_finished.raw, None);
device.destroy_fence(self.in_flight_fence.raw, None);
}
}
}