debug!!!
This commit is contained in:
@@ -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<Instance>) -> Option<DebugCallback> {
|
||||
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()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user