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::prelude::*;
4use crate::vk;
5use crate::RawPtr;
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        (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        (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        (self.fp.cmd_begin_debug_utils_label_ext)(command_buffer, label);
35    }
36
37    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkCmdEndDebugUtilsLabelEXT.html>
38    #[inline]
39    pub unsafe fn cmd_end_debug_utils_label(&self, command_buffer: vk::CommandBuffer) {
40        (self.fp.cmd_end_debug_utils_label_ext)(command_buffer);
41    }
42
43    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkCmdInsertDebugUtilsLabelEXT.html>
44    #[inline]
45    pub unsafe fn cmd_insert_debug_utils_label(
46        &self,
47        command_buffer: vk::CommandBuffer,
48        label: &vk::DebugUtilsLabelEXT<'_>,
49    ) {
50        (self.fp.cmd_insert_debug_utils_label_ext)(command_buffer, label);
51    }
52
53    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkQueueBeginDebugUtilsLabelEXT.html>
54    #[inline]
55    pub unsafe fn queue_begin_debug_utils_label(
56        &self,
57        queue: vk::Queue,
58        label: &vk::DebugUtilsLabelEXT<'_>,
59    ) {
60        (self.fp.queue_begin_debug_utils_label_ext)(queue, label);
61    }
62
63    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkQueueEndDebugUtilsLabelEXT.html>
64    #[inline]
65    pub unsafe fn queue_end_debug_utils_label(&self, queue: vk::Queue) {
66        (self.fp.queue_end_debug_utils_label_ext)(queue);
67    }
68
69    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkQueueInsertDebugUtilsLabelEXT.html>
70    #[inline]
71    pub unsafe fn queue_insert_debug_utils_label(
72        &self,
73        queue: vk::Queue,
74        label: &vk::DebugUtilsLabelEXT<'_>,
75    ) {
76        (self.fp.queue_insert_debug_utils_label_ext)(queue, label);
77    }
78}
79
80impl crate::ext::debug_utils::Instance {
81    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkCreateDebugUtilsMessengerEXT.html>
82    #[inline]
83    pub unsafe fn create_debug_utils_messenger(
84        &self,
85        create_info: &vk::DebugUtilsMessengerCreateInfoEXT<'_>,
86        allocator: Option<&vk::AllocationCallbacks<'_>>,
87    ) -> VkResult<vk::DebugUtilsMessengerEXT> {
88        let mut messenger = mem::MaybeUninit::uninit();
89        (self.fp.create_debug_utils_messenger_ext)(
90            self.handle,
91            create_info,
92            allocator.as_raw_ptr(),
93            messenger.as_mut_ptr(),
94        )
95        .assume_init_on_success(messenger)
96    }
97
98    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkDestroyDebugUtilsMessengerEXT.html>
99    #[inline]
100    pub unsafe fn destroy_debug_utils_messenger(
101        &self,
102        messenger: vk::DebugUtilsMessengerEXT,
103        allocator: Option<&vk::AllocationCallbacks<'_>>,
104    ) {
105        (self.fp.destroy_debug_utils_messenger_ext)(self.handle, messenger, allocator.as_raw_ptr());
106    }
107
108    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkSubmitDebugUtilsMessageEXT.html>
109    #[inline]
110    pub unsafe fn submit_debug_utils_message(
111        &self,
112        message_severity: vk::DebugUtilsMessageSeverityFlagsEXT,
113        message_types: vk::DebugUtilsMessageTypeFlagsEXT,
114        callback_data: &vk::DebugUtilsMessengerCallbackDataEXT<'_>,
115    ) {
116        (self.fp.submit_debug_utils_message_ext)(
117            self.handle,
118            message_severity,
119            message_types,
120            callback_data,
121        );
122    }
123}