]> git.nega.tv - josh/narcissus/commitdiff
vulkan-sys: Add VK_EXT_debug_utils
authorJosh Simmons <josh@nega.tv>
Tue, 4 Jun 2024 20:41:17 +0000 (22:41 +0200)
committerJosh Simmons <josh@nega.tv>
Tue, 4 Jun 2024 20:41:17 +0000 (22:41 +0200)
external/vulkan-sys/src/enums.rs
external/vulkan-sys/src/flags.rs
external/vulkan-sys/src/functions.rs
external/vulkan-sys/src/handles.rs
external/vulkan-sys/src/lib.rs
external/vulkan-sys/src/structs.rs

index 9abeff3a86540ae10364f9042e10ef492bfe9332..a4ff4ce76c2134faed652942c7a0e34d78ab1d00 100644 (file)
@@ -1378,8 +1378,9 @@ pub enum StructureType {
 }
 
 #[repr(i32)]
-#[derive(Copy, Clone, PartialEq, Eq)]
+#[derive(Copy, Clone, PartialEq, Eq, Default)]
 pub enum ObjectType {
+    #[default]
     Unknown = 0,
     Instance = 1,
     PhysicalDevice = 2,
index 4c8be059518bc23984f30b810743885fd12151b7..b39c7d6b9d6dd85befc768cd320a51b9a0dbd207 100644 (file)
@@ -897,6 +897,32 @@ impl PresentGravityFlagsEXT {
     pub const CENTERED_EXT: Self = Self(0x00000004);
 }
 
+#[repr(C)]
+pub struct DebugUtilsMessengerCreateFlagsExt(u32);
+
+#[repr(C)]
+pub struct DebugUtilsMessageSeverityFlagsExt(u32);
+
+impl DebugUtilsMessageSeverityFlagsExt {
+    pub const VERBOSE: Self = Self(0x00000001);
+    pub const INFO: Self = Self(0x00000010);
+    pub const WARNING: Self = Self(0x00000100);
+    pub const ERROR: Self = Self(0x00001000);
+}
+
+#[repr(C)]
+pub struct DebugUtilsMessageTypeFlagsExt(u32);
+
+impl DebugUtilsMessageTypeFlagsExt {
+    pub const GENERAL: Self = Self(0x00000001);
+    pub const VALIDATION: Self = Self(0x00000002);
+    pub const PERFORMANCE: Self = Self(0x00000004);
+    pub const DEVICE_ADDRESS_BINDING: Self = Self(0x00000008);
+}
+
+#[repr(C)]
+pub struct DebugUtilsMessengerCallbackDataFlagsExt(u32);
+
 macro_rules! impl_flags_u32 {
     ($($t:ty),+) => {
         $(
index 65beece7c166c4945a7db3d06e6a3d8b56fdeaf6..131009fb381b544e2e2681cd87e00ec2e699b448 100644 (file)
@@ -948,3 +948,42 @@ pub type FnGetPhysicalDeviceSurfaceFormats2KHR = extern "system" fn(
     surface_format_count: &mut u32,
     surface_formats: *mut SurfaceFormat2KHR,
 ) -> Result;
+
+pub type FnCmdBeginDebugUtilsLabelExt =
+    extern "system" fn(command_buffer: CommandBuffer, label_info: &DebugUtilsLabelExt);
+pub type FnCmdEndDebugUtilsLabelExt = extern "system" fn(command_buffer: CommandBuffer);
+pub type FnCmdInsertDebugUtilsLabelExt =
+    extern "system" fn(command_buffer: CommandBuffer, label_info: &DebugUtilsLabelExt);
+pub type FnCreateDebugUtilsMessengerExt = extern "system" fn(
+    instance: Instance,
+    create_info: &DebugUtilsMessengerCreateInfoExt,
+    allocator: Option<&AllocationCallbacks>,
+    messenger: *mut DebugUtilsMessengerExt,
+);
+pub type FnDestroyDebugUtilsMessengerExt = extern "system" fn(
+    instance: Instance,
+    messenger: DebugUtilsMessengerExt,
+    allocator: Option<&AllocationCallbacks>,
+);
+pub type FnQueueBeginDebugUtilsLabelExt =
+    extern "system" fn(queue: Queue, label_info: &DebugUtilsLabelExt);
+pub type FnQueueEndDebugUtilsLabelExt = extern "system" fn(queue: Queue);
+pub type FnQueueInsertDebugUtilsLabelExt =
+    extern "system" fn(queue: Queue, label_info: &DebugUtilsLabelExt);
+pub type FnSetDebugUtilsObjectNameExt =
+    extern "system" fn(device: Device, name_info: &DebugUtilsObjectNameInfoExt);
+pub type FnSetDebugUtilsObjectTagExt =
+    extern "system" fn(device: Device, tag_info: &DebugUtilsObjectTagInfoExt);
+pub type FnSubmitDebugUtilsMessageExt = extern "system" fn(
+    instance: Instance,
+    message_severity: DebugUtilsMessageSeverityFlagsExt,
+    message_types: DebugUtilsMessageTypeFlagsExt,
+    callback_data: &DebugUtilsMessengerCallbackDataExt,
+);
+
+pub type FnDebugUtilsMessengerCallbackExt = extern "system" fn(
+    message_severity: DebugUtilsMessageSeverityFlagsExt,
+    message_types: DebugUtilsMessageTypeFlagsExt,
+    callback_data: &DebugUtilsMessengerCallbackDataExt,
+    user_data: *mut c_void,
+) -> Bool32;
index 85aad43dc476f6c7279aa025b52379d3fbc2f453..5befc957d15934778ee929beae314fd5b9c437ad 100644 (file)
@@ -118,6 +118,10 @@ pub struct SurfaceKHR(u64);
 #[derive(Copy, Clone, PartialEq, Eq, Default, Hash, Debug)]
 pub struct SwapchainKHR(u64);
 
+#[repr(C)]
+#[derive(Copy, Clone, PartialEq, Eq, Default, Hash, Debug)]
+pub struct DebugUtilsMessengerExt(u64);
+
 // impl Handle {
 //     #[inline]
 //     pub const fn null() -> Self {
@@ -165,6 +169,7 @@ pub struct SwapchainKHR(u64);
 // DisplayModeKHR
 // SurfaceKHR
 // SwapchainKHR
+// DebugUtilsMessengerExt
 
 impl Instance {
     #[inline]
@@ -796,3 +801,24 @@ impl SwapchainKHR {
         Self(value)
     }
 }
+impl DebugUtilsMessengerExt {
+    #[inline]
+    pub const fn null() -> Self {
+        Self(0)
+    }
+
+    #[inline]
+    pub const fn is_null(self) -> bool {
+        self.0 == 0
+    }
+
+    #[inline]
+    pub fn as_raw(self) -> u64 {
+        self.0
+    }
+
+    #[inline]
+    pub fn from_raw(value: u64) -> Self {
+        Self(value)
+    }
+}
index efc805d251db58e8b98e80fd46d3c785242e0f0c..13669d8338c50ab7c65c52faa5dafa5e5e8e9397 100644 (file)
@@ -2697,3 +2697,175 @@ impl SwapchainMaintenance1ExtFunctions {
         (self.release_swapchain_images_ext)(device, release_info)
     }
 }
+
+pub struct DebugUtilsFunctions {
+    cmd_begin_debug_utils_label_ext: FnCmdBeginDebugUtilsLabelExt,
+    cmd_end_debug_utils_label_ext: FnCmdEndDebugUtilsLabelExt,
+    cmd_insert_debug_utils_label_ext: FnCmdInsertDebugUtilsLabelExt,
+    create_debug_utils_messenger_ext: FnCreateDebugUtilsMessengerExt,
+    destroy_debug_utils_messenger_ext: FnDestroyDebugUtilsMessengerExt,
+    queue_begin_debug_utils_label_ext: FnQueueBeginDebugUtilsLabelExt,
+    queue_end_debug_utils_label_ext: FnQueueEndDebugUtilsLabelExt,
+    queue_insert_debug_utils_label_ext: FnQueueInsertDebugUtilsLabelExt,
+    set_debug_utils_object_name_ext: FnSetDebugUtilsObjectNameExt,
+    set_debug_utils_object_tag_ext: FnSetDebugUtilsObjectTagExt,
+    submit_debug_utils_message_ext: FnSubmitDebugUtilsMessageExt,
+}
+
+impl DebugUtilsFunctions {
+    pub fn new(
+        global_functions: &GlobalFunctions,
+        instance_functions: &InstanceFunctions,
+        instance: Instance,
+        device: Device,
+    ) -> Self {
+        unsafe {
+            let load_instance = |name: &CStr| {
+                global_functions
+                    .get_instance_proc_addr(instance, name)
+                    .unwrap_or_else(
+                        #[cold]
+                        || {
+                            panic!(
+                                "failed to load instance function {}",
+                                name.to_string_lossy()
+                            )
+                        },
+                    )
+            };
+            let load_device = |name: &CStr| {
+                instance_functions
+                    .get_device_proc_addr(device, name)
+                    .unwrap_or_else(
+                        #[cold]
+                        || panic!("failed to load device function {}", name.to_string_lossy()),
+                    )
+            };
+            Self {
+                cmd_begin_debug_utils_label_ext: transmute::<_, _>(load_device(
+                    c"vkCmdBeginDebugUtilsLabelEXT",
+                )),
+                cmd_end_debug_utils_label_ext: transmute::<_, _>(load_device(
+                    c"vkCmdEndDebugUtilsLabelEXT",
+                )),
+                cmd_insert_debug_utils_label_ext: transmute::<_, _>(load_device(
+                    c"vkCmdInsertDebugUtilsLabelEXT",
+                )),
+                create_debug_utils_messenger_ext: transmute::<_, _>(load_instance(
+                    c"vkCreateDebugUtilsMessengerEXT",
+                )),
+                destroy_debug_utils_messenger_ext: transmute::<_, _>(load_instance(
+                    c"vkDestroyDebugUtilsMessengerEXT",
+                )),
+                queue_begin_debug_utils_label_ext: transmute::<_, _>(load_device(
+                    c"vkQueueBeginDebugUtilsLabelEXT",
+                )),
+                queue_end_debug_utils_label_ext: transmute::<_, _>(load_device(
+                    c"vkQueueEndDebugUtilsLabelEXT",
+                )),
+                queue_insert_debug_utils_label_ext: transmute::<_, _>(load_device(
+                    c"vkQueueInsertDebugUtilsLabelEXT",
+                )),
+                set_debug_utils_object_name_ext: transmute::<_, _>(load_device(
+                    c"vkSetDebugUtilsObjectNameEXT",
+                )),
+                set_debug_utils_object_tag_ext: transmute::<_, _>(load_device(
+                    c"vkSetDebugUtilsObjectTagEXT",
+                )),
+                submit_debug_utils_message_ext: transmute::<_, _>(load_instance(
+                    c"vkSubmitDebugUtilsMessageEXT",
+                )),
+            }
+        }
+    }
+
+    pub unsafe fn cmd_begin_debug_utils_label_ext(
+        &self,
+        command_buffer: CommandBuffer,
+        label_info: &DebugUtilsLabelExt,
+    ) {
+        (self.cmd_begin_debug_utils_label_ext)(command_buffer, label_info)
+    }
+
+    pub unsafe fn cmd_end_debug_utils_label_ext(&self, command_buffer: CommandBuffer) {
+        (self.cmd_end_debug_utils_label_ext)(command_buffer)
+    }
+
+    pub unsafe fn cmd_insert_debug_utils_label_ext(
+        &self,
+        command_buffer: CommandBuffer,
+        label_info: &DebugUtilsLabelExt,
+    ) {
+        (self.cmd_insert_debug_utils_label_ext)(command_buffer, label_info)
+    }
+
+    pub unsafe fn create_debug_utils_messenger_ext(
+        &self,
+        instance: Instance,
+        create_info: &DebugUtilsMessengerCreateInfoExt,
+        allocator: Option<&AllocationCallbacks>,
+        messenger: *mut DebugUtilsMessengerExt,
+    ) {
+        (self.create_debug_utils_messenger_ext)(instance, create_info, allocator, messenger)
+    }
+
+    pub unsafe fn destroy_debug_utils_messenger_ext(
+        &self,
+        instance: Instance,
+        messenger: DebugUtilsMessengerExt,
+        allocator: Option<&AllocationCallbacks>,
+    ) {
+        (self.destroy_debug_utils_messenger_ext)(instance, messenger, allocator)
+    }
+
+    pub unsafe fn queue_begin_debug_utils_label_ext(
+        &self,
+        queue: Queue,
+        label_info: &DebugUtilsLabelExt,
+    ) {
+        (self.queue_begin_debug_utils_label_ext)(queue, label_info)
+    }
+
+    pub unsafe fn queue_end_debug_utils_label_ext(&self, queue: Queue) {
+        (self.queue_end_debug_utils_label_ext)(queue)
+    }
+
+    pub unsafe fn queue_insert_debug_utils_label_ext(
+        &self,
+        queue: Queue,
+        label_info: &DebugUtilsLabelExt,
+    ) {
+        (self.queue_insert_debug_utils_label_ext)(queue, label_info)
+    }
+
+    pub unsafe fn set_debug_utils_object_name_ext(
+        &self,
+        device: Device,
+        name_info: &DebugUtilsObjectNameInfoExt,
+    ) {
+        (self.set_debug_utils_object_name_ext)(device, name_info)
+    }
+
+    pub unsafe fn set_debug_utils_object_tag_ext(
+        &self,
+        device: Device,
+        tag_info: &DebugUtilsObjectTagInfoExt,
+    ) {
+        (self.set_debug_utils_object_tag_ext)(device, tag_info)
+    }
+
+    pub unsafe fn submit_debug_utils_message_ext(
+        &self,
+        instance: Instance,
+        message_severity: DebugUtilsMessageSeverityFlagsExt,
+        message_types: DebugUtilsMessageTypeFlagsExt,
+        callback_data: &DebugUtilsMessengerCallbackDataExt,
+    ) {
+        (self.submit_debug_utils_message_ext)(
+            instance,
+            message_severity,
+            message_types,
+            callback_data,
+        )
+    }
+}
index 6393dc42b8e500d75bfeff4fa647f29f51cfc0d9..0ba737dd5f8706ee305dc62d19786996a417cbaa 100644 (file)
@@ -2167,6 +2167,99 @@ impl Default for ImageMemoryBarrier {
     }
 }
 
+#[repr(C)]
+pub struct DebugUtilsLabelExt {
+    pub _type: StructureType,
+    pub _next: *const c_void,
+    pub label_name: *const c_char,
+    pub color: [f32; 4],
+}
+
+impl Default for DebugUtilsLabelExt {
+    fn default() -> Self {
+        DebugUtilsLabelExt {
+            _type: StructureType::DebugUtilsLabelExt,
+            _next: std::ptr::null(),
+            label_name: std::ptr::null(),
+            color: Default::default(),
+        }
+    }
+}
+
+#[repr(C)]
+
+pub struct DebugUtilsObjectTagInfoExt {
+    pub _type: StructureType,
+    pub _next: *const c_void,
+    pub object_type: ObjectType,
+    pub object_handle: u64,
+    pub tag_name: u64,
+    pub tag_size: usize,
+    pub tag_data: *const c_void,
+}
+
+impl Default for DebugUtilsObjectTagInfoExt {
+    fn default() -> Self {
+        Self {
+            _type: StructureType::DebugUtilsObjectTagInfoExt,
+            _next: std::ptr::null(),
+            object_type: ObjectType::Unknown,
+            object_handle: 0,
+            tag_name: 0,
+            tag_size: 0,
+            tag_data: std::ptr::null(),
+        }
+    }
+}
+
+#[repr(C)]
+pub struct DebugUtilsObjectNameInfoExt {
+    pub _type: StructureType,
+    pub _next: *const c_void,
+    pub object_type: ObjectType,
+    pub object_handle: u64,
+    pub object_name: *const c_char,
+}
+
+impl Default for DebugUtilsObjectNameInfoExt {
+    fn default() -> Self {
+        Self {
+            _type: StructureType::DebugUtilsObjectNameInfoExt,
+            _next: std::ptr::null(),
+            object_type: ObjectType::Unknown,
+            object_handle: 0,
+            object_name: std::ptr::null(),
+        }
+    }
+}
+
+#[repr(C)]
+pub struct DebugUtilsMessengerCreateInfoExt {
+    pub _type: StructureType,
+    pub _next: *const c_void,
+    pub flags: DebugUtilsMessengerCreateFlagsExt,
+    pub message_severity: DebugUtilsMessageSeverityFlagsExt,
+    pub message_type: DebugUtilsMessageTypeFlagsExt,
+    pub user_callback: FnDebugUtilsMessengerCallbackExt,
+    pub user_data: *mut c_void,
+}
+
+#[repr(C)]
+pub struct DebugUtilsMessengerCallbackDataExt {
+    pub _type: StructureType,
+    pub _next: *const c_void,
+    pub flags: DebugUtilsMessengerCallbackDataFlagsExt,
+    pub message_id_name: *const c_char,
+    pub message_id_number: i32,
+    pub message: *const c_char,
+    pub queue_label_count: u32,
+    pub queue_labels: *const DebugUtilsLabelExt,
+    pub command_buffer_label_count: u32,
+    pub command_buffer_labels: *const DebugUtilsLabelExt,
+    pub object_count: u32,
+    pub objects: *const DebugUtilsObjectNameInfoExt,
+}
+
 #[repr(C)]
 pub struct PhysicalDeviceSparseProperties {
     ///  Sparse resources support: GPU will access all 2D (single sample) sparse resources using the standard sparse image block shapes (based on pixel format)