Begin add use_layers [not work]
This commit is contained in:
parent
56ad167b0f
commit
7c072d60e2
5 changed files with 199 additions and 3 deletions
|
@ -0,0 +1,51 @@
|
|||
use std::ffi::CStr;
|
||||
use ash::{vk, Entry};
|
||||
|
||||
pub fn use_layers(
|
||||
entry: &Entry,
|
||||
layers_to_select: Vec<&str>
|
||||
) -> Vec<*const std::ffi::c_char> {
|
||||
let layers_available = unsafe {
|
||||
entry
|
||||
.enumerate_instance_layer_properties()
|
||||
.unwrap_or_default()
|
||||
};
|
||||
|
||||
let mut selected_layers = Vec::<&CStr>::new();
|
||||
|
||||
log::info!("Available layers ({}):", layers_available.len());
|
||||
for l in layers_available {
|
||||
let layer_name = l.layer_name_as_c_str().unwrap_or_default();
|
||||
if layers_to_select.iter().any(|ln| (*ln).eq(layer_name)) {
|
||||
selected_layers.push(layer_name.clone());
|
||||
}
|
||||
|
||||
log::info!(
|
||||
"\t{:?}\tImplementation version: {}\tVulkan Version: {}\tDescription: {:?}",
|
||||
l.layer_name_as_c_str().unwrap_or_default(),
|
||||
l.implementation_version,
|
||||
print_version(l.spec_version),
|
||||
l.description_as_c_str().unwrap_or_default()
|
||||
);
|
||||
}
|
||||
log::info!(""); // Add blank line
|
||||
|
||||
log::info!("Layers to select ({}):", layers_to_select.len());
|
||||
for l in layers_to_select {
|
||||
let selected = selected_layers.contains(&l);
|
||||
log::info!("\t{:?}\tSelected: {}", l, selected);
|
||||
}
|
||||
log::info!(""); // Add blank line
|
||||
|
||||
selected_layers.iter().map(|sl| sl.as_ptr()).collect()
|
||||
}
|
||||
|
||||
pub fn print_version(version: u32) -> String {
|
||||
format!(
|
||||
"{}.{}.{}.{}",
|
||||
vk::api_version_major(version),
|
||||
vk::api_version_minor(version),
|
||||
vk::api_version_patch(version),
|
||||
vk::api_version_variant(version)
|
||||
)
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue