Skip to main content

jay_ash/extensions/ext/
debug_utils.rs

1//! <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_debug_utils.html>
2
3use crate::RawPtr;
4use crate::prelude::*;
5use crate::vk;
6use core::mem;
7
8impl crate::ext::debug_utils::Device {
9    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkSetDebugUtilsObjectNameEXT.html>
10    #[inline]
11    pub unsafe fn set_debug_utils_object_name(
12        &self,
13        name_info: &vk::DebugUtilsObjectNameInfoEXT<'_>,
14    ) -> VkResult<()> {
15        unsafe { (self.fp.set_debug_utils_object_name_ext)(self.handle, name_info).result() }
16    }
17
18    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkSetDebugUtilsObjectTagEXT.html>
19    #[inline]
20    pub unsafe fn set_debug_utils_object_tag(
21        &self,
22        tag_info: &vk::DebugUtilsObjectTagInfoEXT<'_>,
23    ) -> VkResult<()> {
24        unsafe { (self.fp.set_debug_utils_object_tag_ext)(self.handle, tag_info).result() }
25    }
26
27    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkCmdBeginDebugUtilsLabelEXT.html>
28    #[inline]
29    pub unsafe fn cmd_begin_debug_utils_label(
30        &self,
31        command_buffer: vk::CommandBuffer,
32        label: &vk::DebugUtilsLabelEXT<'_>,
33    ) {
34        unsafe {
35            (self.fp.cmd_begin_debug_utils_label_ext)(command_buffer, label);
36        }
37    }
38
39    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkCmdEndDebugUtilsLabelEXT.html>
40    #[inline]
41    pub unsafe fn cmd_end_debug_utils_label(&self, command_buffer: vk::CommandBuffer) {
42        unsafe {
43            (self.fp.cmd_end_debug_utils_label_ext)(command_buffer);
44        }
45    }
46
47    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkCmdInsertDebugUtilsLabelEXT.html>
48    #[inline]
49    pub unsafe fn cmd_insert_debug_utils_label(
50        &self,
51        command_buffer: vk::CommandBuffer,
52        label: &vk::DebugUtilsLabelEXT<'_>,
53    ) {
54        unsafe {
55            (self.fp.cmd_insert_debug_utils_label_ext)(command_buffer, label);
56        }
57    }
58
59    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkQueueBeginDebugUtilsLabelEXT.html>
60    #[inline]
61    pub unsafe fn queue_begin_debug_utils_label(
62        &self,
63        queue: vk::Queue,
64        label: &vk::DebugUtilsLabelEXT<'_>,
65    ) {
66        unsafe {
67            (self.fp.queue_begin_debug_utils_label_ext)(queue, label);
68        }
69    }
70
71    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkQueueEndDebugUtilsLabelEXT.html>
72    #[inline]
73    pub unsafe fn queue_end_debug_utils_label(&self, queue: vk::Queue) {
74        unsafe {
75            (self.fp.queue_end_debug_utils_label_ext)(queue);
76        }
77    }
78
79    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkQueueInsertDebugUtilsLabelEXT.html>
80    #[inline]
81    pub unsafe fn queue_insert_debug_utils_label(
82        &self,
83        queue: vk::Queue,
84        label: &vk::DebugUtilsLabelEXT<'_>,
85    ) {
86        unsafe {
87            (self.fp.queue_insert_debug_utils_label_ext)(queue, label);
88        }
89    }
90}
91
92impl crate::ext::debug_utils::Instance {
93    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkCreateDebugUtilsMessengerEXT.html>
94    #[inline]
95    pub unsafe fn create_debug_utils_messenger(
96        &self,
97        create_info: &vk::DebugUtilsMessengerCreateInfoEXT<'_>,
98        allocator: Option<&vk::AllocationCallbacks<'_>>,
99    ) -> VkResult<vk::DebugUtilsMessengerEXT> {
100        unsafe {
101            let mut messenger = mem::MaybeUninit::uninit();
102            (self.fp.create_debug_utils_messenger_ext)(
103                self.handle,
104                create_info,
105                allocator.as_raw_ptr(),
106                messenger.as_mut_ptr(),
107            )
108            .assume_init_on_success(messenger)
109        }
110    }
111
112    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkDestroyDebugUtilsMessengerEXT.html>
113    #[inline]
114    pub unsafe fn destroy_debug_utils_messenger(
115        &self,
116        messenger: vk::DebugUtilsMessengerEXT,
117        allocator: Option<&vk::AllocationCallbacks<'_>>,
118    ) {
119        unsafe {
120            (self.fp.destroy_debug_utils_messenger_ext)(
121                self.handle,
122                messenger,
123                allocator.as_raw_ptr(),
124            );
125        }
126    }
127
128    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkSubmitDebugUtilsMessageEXT.html>
129    #[inline]
130    pub unsafe fn submit_debug_utils_message(
131        &self,
132        message_severity: vk::DebugUtilsMessageSeverityFlagsEXT,
133        message_types: vk::DebugUtilsMessageTypeFlagsEXT,
134        callback_data: &vk::DebugUtilsMessengerCallbackDataEXT<'_>,
135    ) {
136        unsafe {
137            (self.fp.submit_debug_utils_message_ext)(
138                self.handle,
139                message_severity,
140                message_types,
141                callback_data,
142            );
143        }
144    }
145}