From 20066091ea0b8c2bbd73665103530c087b1eb0e9 Mon Sep 17 00:00:00 2001 From: Till Date: Tue, 23 Jul 2019 22:12:04 +0200 Subject: [PATCH] debug!!! --- src/vulkan.rs | 57 ++++++++++++++++++++++++++------------------------- 1 file changed, 29 insertions(+), 28 deletions(-) diff --git a/src/vulkan.rs b/src/vulkan.rs index cb40ad9..23c9489 100644 --- a/src/vulkan.rs +++ b/src/vulkan.rs @@ -3,7 +3,7 @@ use vulkano::command_buffer::{AutoCommandBufferBuilder, DynamicState}; use vulkano::device::{Device, DeviceExtensions}; use vulkano::framebuffer::{Framebuffer, FramebufferAbstract, Subpass, RenderPassAbstract}; use vulkano::image::SwapchainImage; -use vulkano::instance::{Instance, PhysicalDevice, ApplicationInfo, Version, RawInstanceExtensions}; +use vulkano::instance::{Instance, PhysicalDevice, ApplicationInfo, Version, InstanceExtensions}; use vulkano::pipeline::{GraphicsPipeline}; use vulkano::pipeline::shader::{GraphicsShaderType, ShaderModule}; use vulkano::pipeline::viewport::Viewport; @@ -21,7 +21,7 @@ use winit::{EventsLoop, Window, WindowBuilder, Event, WindowEvent}; use std::sync::Arc; use std::time::SystemTime; use std::path::PathBuf; -use std::ffi::{CStr, CString}; +use std::ffi::{CStr}; use shade_runner; use shade_runner::{CompiledShaders, Entry}; @@ -58,8 +58,10 @@ pub fn init(mut game: GameData) { } let instance = { -// let mut extensions = RawInstanceExtensions::from(&vulkano_win::required_extensions()); - let mut extensions = vulkano_win::required_extensions(); + let extensions = InstanceExtensions { + ext_debug_report: true, + ..vulkano_win::required_extensions() + }; let app_info = ApplicationInfo { application_name: Some("Asuro Editor".into()), @@ -77,19 +79,36 @@ pub fn init(mut game: GameData) { } }); - extensions.ext_debug_report = true; -// extensions.insert(CString::new("VK_EXT_debug_utils").unwrap()); - Instance::new(Some(&app_info), &extensions, VALIDATION_LAYERS.iter().cloned()).expect("failed to create Vulkan instance") } else { Instance::new(Some(&app_info), &extensions, None).expect("failed to create Vulkan instance") } }; + // lifetime of this is important, even tho it isn't used! + let mut _debug_callback = None; if ENABLE_VALIDATION_LAYERS { - let debug_callback = setup_debug_callback(&instance); - assert!(debug_callback.is_some()); - println!("Debug callback created."); + let msg_types = MessageTypes { + error: true, + warning: true, + performance_warning: true, + information: true, + debug: true, + }; + + _debug_callback = DebugCallback::new(&instance, msg_types, |msg| { + let type_str = match (msg.ty.error, msg.ty.warning, msg.ty.performance_warning, msg.ty.information, msg.ty.debug) { + (true, _, _, _, _) => "!!", + (_, true, _, _, _) => "!", + (_, _, true, _, _) => "p", + (_, _, _, true, _) => "i", + _ => " " + }; + + let layer_str = msg.layer_prefix; + + println!("[{}][{}]: {}", type_str, layer_str, msg.description); + }).ok(); } let physical = PhysicalDevice::enumerate(&instance).next().unwrap(); @@ -514,21 +533,3 @@ fn read_shader(vert_path_relative: &str, frag_path_relative: &str) -> (CompiledS Err(error) => panic!("Shader compilation error: {:?}", error) } } - -fn setup_debug_callback(instance: &Arc) -> Option { - if !ENABLE_VALIDATION_LAYERS { - return None; - } - - let msg_types = MessageTypes { - error: true, - warning: true, - performance_warning: true, - information: true, - debug: true, - }; - - DebugCallback::new(&instance, msg_types, |msg| { - println!("validation layer: {:?}", msg.description); - }).ok() -}