ash/extensions/ext/
debug_marker.rs1use crate::prelude::*;
2use crate::vk;
3use crate::{Device, Instance};
4use std::ffi::CStr;
5use std::mem;
6
7#[derive(Clone)]
8pub struct DebugMarker {
9 handle: vk::Device,
10 fp: vk::ExtDebugMarkerFn,
11}
12
13impl DebugMarker {
14 pub fn new(instance: &Instance, device: &Device) -> Self {
15 let handle = device.handle();
16 let fp = vk::ExtDebugMarkerFn::load(|name| unsafe {
17 mem::transmute(instance.get_device_proc_addr(handle, name.as_ptr()))
18 });
19 Self { handle, fp }
20 }
21
22 #[inline]
24 pub unsafe fn debug_marker_set_object_name(
25 &self,
26 name_info: &vk::DebugMarkerObjectNameInfoEXT,
27 ) -> VkResult<()> {
28 (self.fp.debug_marker_set_object_name_ext)(self.handle, name_info).result()
29 }
30
31 #[inline]
33 pub unsafe fn cmd_debug_marker_begin(
34 &self,
35 command_buffer: vk::CommandBuffer,
36 marker_info: &vk::DebugMarkerMarkerInfoEXT,
37 ) {
38 (self.fp.cmd_debug_marker_begin_ext)(command_buffer, marker_info);
39 }
40
41 #[inline]
43 pub unsafe fn cmd_debug_marker_end(&self, command_buffer: vk::CommandBuffer) {
44 (self.fp.cmd_debug_marker_end_ext)(command_buffer);
45 }
46
47 #[inline]
49 pub unsafe fn cmd_debug_marker_insert(
50 &self,
51 command_buffer: vk::CommandBuffer,
52 marker_info: &vk::DebugMarkerMarkerInfoEXT,
53 ) {
54 (self.fp.cmd_debug_marker_insert_ext)(command_buffer, marker_info);
55 }
56
57 #[inline]
58 pub const fn name() -> &'static CStr {
59 vk::ExtDebugMarkerFn::name()
60 }
61
62 #[inline]
63 pub fn fp(&self) -> &vk::ExtDebugMarkerFn {
64 &self.fp
65 }
66
67 #[inline]
68 pub fn device(&self) -> vk::Device {
69 self.handle
70 }
71}