librashader/librashader-runtime-vk/src/hello_triangle/debug.rs

52 lines
1.5 KiB
Rust
Raw Normal View History

use ash::extensions::ext::DebugUtils;
use ash::prelude::VkResult;
use ash::vk;
use ash::vk::{DebugUtilsMessengerEXT, PFN_vkDebugUtilsMessengerCallbackEXT};
pub struct VulkanDebug {
loader: DebugUtils,
2023-01-10 14:54:54 +11:00
messenger: DebugUtilsMessengerEXT,
}
impl VulkanDebug {
2023-01-10 14:54:54 +11:00
pub fn new(
entry: &ash::Entry,
instance: &ash::Instance,
callback: PFN_vkDebugUtilsMessengerCallbackEXT,
) -> VkResult<VulkanDebug> {
let debug_info = vk::DebugUtilsMessengerCreateInfoEXT::builder()
.message_severity(
vk::DebugUtilsMessageSeverityFlagsEXT::ERROR
| vk::DebugUtilsMessageSeverityFlagsEXT::WARNING
| vk::DebugUtilsMessageSeverityFlagsEXT::INFO,
)
.message_type(
vk::DebugUtilsMessageTypeFlagsEXT::GENERAL
| vk::DebugUtilsMessageTypeFlagsEXT::VALIDATION
| vk::DebugUtilsMessageTypeFlagsEXT::PERFORMANCE,
)
.pfn_user_callback(callback);
let debug_utils_loader = DebugUtils::new(entry, instance);
unsafe {
2023-01-10 14:54:54 +11:00
let debug_call_back =
debug_utils_loader.create_debug_utils_messenger(&debug_info, None)?;
Ok(VulkanDebug {
loader: debug_utils_loader,
2023-01-10 14:54:54 +11:00
messenger: debug_call_back,
})
}
}
}
impl Drop for VulkanDebug {
fn drop(&mut self) {
unsafe {
2023-01-10 14:54:54 +11:00
self.loader
.destroy_debug_utils_messenger(self.messenger, None);
}
}
2023-01-10 14:54:54 +11:00
}