rFactor2_vk_hud/src/enums.rs

43 lines
1.2 KiB
Rust
Raw Normal View History

2023-01-10 13:24:04 +00:00
#![allow(non_camel_case_types)]
use std::{mem, ptr};
use vulkan_sys::prelude::*;
pub use VkLayerFunction::*;
pub use VkNegotiateLayerStructType::*;
#[derive(Clone)]
pub enum VkNegotiateLayerStructType {
LAYER_NEGOTIATE_INTERFACE_STRUCT = 1,
}
#[derive(Clone, Copy, Eq, PartialEq)]
pub enum VkLayerFunction {
VK_LAYER_LINK_INFO = 0,
VK_LOADER_DATA_CALLBACK = 1,
VK_LOADER_LAYER_CREATE_DEVICE_CALLBACK = 2,
VK_LOADER_FEATURES = 3,
}
pub enum Functions {
Null,
CreateInstance(PFN_vkCreateInstance),
DestroyInstance(PFN_vkDestroyInstance),
CreateDevice(PFN_vkCreateDevice),
DestroyDevice(PFN_vkDestroyDevice),
}
impl Functions {
pub fn convert(self) -> PFN_vkVoidFunction {
match self {
Functions::Null => unsafe {
mem::transmute::<*const (), PFN_vkVoidFunction>(ptr::null())
},
Functions::CreateInstance(func) => unsafe { mem::transmute(func) },
Functions::DestroyInstance(func) => unsafe { mem::transmute(func) },
Functions::CreateDevice(func) => unsafe { mem::transmute(func) },
Functions::DestroyDevice(func) => unsafe { mem::transmute(func) },
}
}
}