Skip to main content

lava/vulkan/ext/
vk_debug_utils_messenger_create_info.rs

1// Copied from `scripts/static/`
2
3use std::os::raw::c_char;
4use std::ffi::CString;
5use std::*;
6use utils::c_bindings::*;
7use utils::vk_traits::*;
8use utils::vk_convert::*;
9use utils::vk_ptr::*;
10use vulkan::vk::*;
11use vulkan::ext::*;
12
13type VkDebugUtilsMessengerCallback = fn(VkDebugUtilsMessageSeverityFlags, VkDebugUtilsMessageTypeFlags, VkDebugUtilsMessengerCallbackData);
14
15#[doc(hidden)]
16#[repr(C)]
17pub struct RawVkDebugUtilsMessengerCreateInfo {
18    s_type: i32,
19    p_next: *const c_void,
20    flags: u32,
21    message_severity: u32,
22    message_type: u32,
23    user_callback: unsafe extern fn(RawVkDebugUtilsMessageSeverityFlags, RawVkDebugUtilsMessageTypeFlags, *const RawVkDebugUtilsMessengerCallbackData, *mut c_void) -> u32,
24    user_data: *mut c_void
25}
26
27/// Wrapper for [VkDebugUtilsMessengerCreateInfo](https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkDebugUtilsMessengerCreateInfo.html).
28pub struct VkDebugUtilsMessengerCreateInfo {
29    pub flags: VkDebugUtilsMessengerCreateFlags,
30    pub message_severity: VkDebugUtilsMessageSeverityFlags,
31    pub message_type: VkDebugUtilsMessageTypeFlags,
32    pub user_callback: VkDebugUtilsMessengerCallback
33}
34
35unsafe extern fn raw_callback(message_severity: RawVkDebugUtilsMessageSeverityFlags, message_types: RawVkDebugUtilsMessageTypeFlags, callback_data: *const RawVkDebugUtilsMessengerCallbackData, user_data: *mut c_void) -> u32 {
36    let func : VkDebugUtilsMessengerCallback = mem::transmute(user_data);
37
38    func(
39        RawVkDebugUtilsMessageSeverityFlags::vk_to_wrapped(&message_severity),
40        RawVkDebugUtilsMessageSeverityFlags::vk_to_wrapped(&message_types),
41        RawVkDebugUtilsMessengerCallbackData::vk_to_wrapped(&*callback_data)
42    );
43
44    0
45}
46
47impl VkWrappedType<RawVkDebugUtilsMessengerCreateInfo> for VkDebugUtilsMessengerCreateInfo {
48    fn vk_to_raw(src: &VkDebugUtilsMessengerCreateInfo, dst: &mut RawVkDebugUtilsMessengerCreateInfo) {
49        unsafe {
50            dst.s_type = vk_to_raw_value(&VkStructureType::DebugUtilsMessengerCreateInfoExt);
51            dst.p_next = ptr::null();
52            dst.flags = vk_to_raw_value(&src.flags);
53            dst.message_severity = vk_to_raw_value(&src.message_severity);
54            dst.message_type = vk_to_raw_value(&src.message_type);
55            dst.user_callback = raw_callback;
56            dst.user_data = mem::transmute::<VkDebugUtilsMessengerCallback, *mut c_void>(src.user_callback);
57        }
58    }
59}
60
61impl VkFree for RawVkDebugUtilsMessengerCreateInfo {
62    fn vk_free(&self) {
63        
64    }
65}