aluminium 0.1.0

vulkan-based graphics engine
use std::ffi::CStr;

use ash::vk;
use thiserror::Error;

#[derive(Debug, Error)]
pub enum InstanceError {
    #[error("Missing required AppInfo structure")]
    MissingApp,
    #[error("Failed to create Vulkan instance (VkResult: {0:?})")]
    InstanceCreationFailed(vk::Result),
    #[error("Failed to create debug utils messenger (VkResult: {0:?})")]
    DebugUtilsMessengerCreationFailed(vk::Result),
    #[error("Required Vulkan extension not available: {0}")]
    MissingRequiredExtension(String),
    #[error("Required Vulkan layer not available: {0}")]
    MissingRequiredLayer(String),
    #[error("Failed to enumerate instance layers (VkResult: {0:?})")]
    EnumerateInstanceLayerPropertiesFailed(vk::Result),
    #[error("Failed to enumerate instance extensions (VkResult: {0:?})")]
    EnumerateInstanceExtensionsFailed(vk::Result),
    #[error("Vulkan layer is not supported: {0:?}")]
    NotSupportRequiredLayer(&'static CStr),
    #[error("Vulkan extension is not supported: {0:?}")]
    NotSupportRequiredExtension(&'static CStr),
}