rFactor2_vk_hud/src/enums.rs

47 lines
1.4 KiB
Rust
Raw Normal View History

2023-01-10 13:24:04 +00:00
#![allow(non_camel_case_types)]
use std::{mem, ptr};
2023-01-11 20:46:17 +00:00
use vulkan_rs::prelude::*;
2023-01-10 13:24:04 +00:00
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),
2023-01-12 08:17:24 +00:00
CreateSwapchain(PFN_vkCreateSwapchainKHR),
QueueSubmit(PFN_vkQueueSubmit),
2023-01-10 13:24:04 +00:00
}
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) },
2023-01-12 08:17:24 +00:00
Functions::CreateSwapchain(func) => unsafe { mem::transmute(func) },
Functions::QueueSubmit(func) => unsafe { mem::transmute(func) },
2023-01-10 13:24:04 +00:00
}
}
}