debug!!!
This commit is contained in:
@@ -3,7 +3,7 @@ use vulkano::command_buffer::{AutoCommandBufferBuilder, DynamicState};
|
|||||||
use vulkano::device::{Device, DeviceExtensions};
|
use vulkano::device::{Device, DeviceExtensions};
|
||||||
use vulkano::framebuffer::{Framebuffer, FramebufferAbstract, Subpass, RenderPassAbstract};
|
use vulkano::framebuffer::{Framebuffer, FramebufferAbstract, Subpass, RenderPassAbstract};
|
||||||
use vulkano::image::SwapchainImage;
|
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::{GraphicsPipeline};
|
||||||
use vulkano::pipeline::shader::{GraphicsShaderType, ShaderModule};
|
use vulkano::pipeline::shader::{GraphicsShaderType, ShaderModule};
|
||||||
use vulkano::pipeline::viewport::Viewport;
|
use vulkano::pipeline::viewport::Viewport;
|
||||||
@@ -21,7 +21,7 @@ use winit::{EventsLoop, Window, WindowBuilder, Event, WindowEvent};
|
|||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use std::time::SystemTime;
|
use std::time::SystemTime;
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
use std::ffi::{CStr, CString};
|
use std::ffi::{CStr};
|
||||||
|
|
||||||
use shade_runner;
|
use shade_runner;
|
||||||
use shade_runner::{CompiledShaders, Entry};
|
use shade_runner::{CompiledShaders, Entry};
|
||||||
@@ -58,8 +58,10 @@ pub fn init(mut game: GameData) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let instance = {
|
let instance = {
|
||||||
// let mut extensions = RawInstanceExtensions::from(&vulkano_win::required_extensions());
|
let extensions = InstanceExtensions {
|
||||||
let mut extensions = vulkano_win::required_extensions();
|
ext_debug_report: true,
|
||||||
|
..vulkano_win::required_extensions()
|
||||||
|
};
|
||||||
|
|
||||||
let app_info = ApplicationInfo {
|
let app_info = ApplicationInfo {
|
||||||
application_name: Some("Asuro Editor".into()),
|
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")
|
Instance::new(Some(&app_info), &extensions, VALIDATION_LAYERS.iter().cloned()).expect("failed to create Vulkan instance")
|
||||||
} else {
|
} else {
|
||||||
Instance::new(Some(&app_info), &extensions, None).expect("failed to create Vulkan instance")
|
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 {
|
if ENABLE_VALIDATION_LAYERS {
|
||||||
let debug_callback = setup_debug_callback(&instance);
|
let msg_types = MessageTypes {
|
||||||
assert!(debug_callback.is_some());
|
error: true,
|
||||||
println!("Debug callback created.");
|
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();
|
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)
|
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