From 53b65fcdd718dd047293d4e6e734d6d4b983780e Mon Sep 17 00:00:00 2001 From: Josh Simmons Date: Sat, 11 May 2024 20:41:50 +0200 Subject: [PATCH] narcissus-gpu: Re-enable validation layers by default --- .../narcissus-gpu/src/backend/vulkan/mod.rs | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/engine/narcissus-gpu/src/backend/vulkan/mod.rs b/engine/narcissus-gpu/src/backend/vulkan/mod.rs index 7f0185c..905ce33 100644 --- a/engine/narcissus-gpu/src/backend/vulkan/mod.rs +++ b/engine/narcissus-gpu/src/backend/vulkan/mod.rs @@ -398,10 +398,26 @@ impl VulkanDevice { panic!("instance does not support vulkan 1.2") } - // #[cfg(debug_assertions)] - // let enabled_layers = &[(c"VK_LAYER_KHRONOS_validation").as_ptr()]; - // #[cfg(not(debug_assertions))] - let enabled_layers = &[]; + let layer_properties = vk_vec(|count, ptr| unsafe { + global_fn.enumerate_instance_layer_properties(count, ptr) + }); + + let mut enabled_layers = vec![]; + + if cfg!(debug_assertions) { + for layer in &layer_properties { + let layer_name = CStr::from_bytes_until_nul(&layer.layer_name).unwrap(); + if layer_name == c"VK_LAYER_KHRONOS_validation" { + enabled_layers.push(layer_name); + break; + } + } + } + + let enabled_layers = enabled_layers + .iter() + .map(|x| x.as_ptr()) + .collect::>(); let extension_properties = vk_vec(|count, ptr| unsafe { global_fn.enumerate_instance_extension_properties(std::ptr::null(), count, ptr) @@ -443,7 +459,7 @@ impl VulkanDevice { ..default() }; let create_info = vk::InstanceCreateInfo { - enabled_layers: enabled_layers.into(), + enabled_layers: enabled_layers.as_slice().into(), enabled_extension_names: enabled_extensions.as_slice().into(), application_info: Some(&application_info), ..default() -- 2.49.0