30 lines
No EOL
741 B
Rust
30 lines
No EOL
741 B
Rust
use super::VkDevice;
|
|
use ash::vk;
|
|
use std::sync::Arc;
|
|
|
|
pub struct VkFence {
|
|
device: Arc<VkDevice>,
|
|
|
|
pub handle: vk::Fence,
|
|
}
|
|
|
|
impl VkFence {
|
|
pub fn new(device: &Arc<VkDevice>) -> anyhow::Result<Self> {
|
|
let fence_info = vk::FenceCreateInfo::default()
|
|
.flags(vk::FenceCreateFlags::SIGNALED);
|
|
let fence = unsafe { device.handle.create_fence(&fence_info, None)? };
|
|
log::debug!("Fence created ({fence:?})");
|
|
|
|
Ok(Self {
|
|
device: device.clone(),
|
|
handle: fence,
|
|
})
|
|
}
|
|
}
|
|
|
|
impl Drop for VkFence {
|
|
fn drop(&mut self) {
|
|
unsafe { self.device.handle.destroy_fence(self.handle, None) };
|
|
log::debug!("Fence destroyed ({:?})", self.handle);
|
|
}
|
|
} |