aluminium 0.1.0

vulkan-based graphics engine
use ash::vk;
use super::{Device, VulkanError, VulkanResult};

pub struct Semaphore {
    pub raw: vk::Semaphore,
}

pub struct SemaphoreBuilder<'a> {
    device: &'a Device,
}

impl<'a> SemaphoreBuilder<'a> {
    pub fn new(device: &'a Device) -> Self {
        Self {
            device,
        }
    }

    pub fn build(self) -> VulkanResult<Semaphore> {

        let create_info = vk::SemaphoreCreateInfo::default();

        let semaphore = unsafe {
            profiling::scope!("vkCreateSemaphore");
            self.device
                .create_semaphore(&create_info, None)
                .map_err(VulkanError::Unknown)
        }?;

        Ok(Semaphore { raw: semaphore })
    }
}