Begin add use_layers [not work]
Some checks failed
Build legacy Nix package on Ubuntu / build (push) Failing after 0s
Some checks failed
Build legacy Nix package on Ubuntu / build (push) Failing after 0s
This commit is contained in:
parent
56ad167b0f
commit
7c072d60e2
5 changed files with 199 additions and 3 deletions
|
@ -4,6 +4,8 @@ mod display;
|
|||
mod vulkan;
|
||||
|
||||
fn main() {
|
||||
env_logger::init();
|
||||
|
||||
let event_loop = EventLoop::new().unwrap();
|
||||
|
||||
let mut app = display::App::default();
|
||||
|
|
|
@ -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)
|
||||
)
|
||||
}
|
|
@ -1,6 +1,7 @@
|
|||
use std::ffi::CString;
|
||||
use ash::{Instance, vk, Entry};
|
||||
use winit::raw_window_handle::{HasDisplayHandle};
|
||||
use crate::vulkan::utils::use_layers;
|
||||
use crate::vulkan::VkPhysicalDevice;
|
||||
|
||||
pub struct VkInstance {
|
||||
|
@ -13,8 +14,10 @@ impl VkInstance {
|
|||
let entry = Entry::linked();
|
||||
|
||||
// Layers
|
||||
let layers_available = unsafe { entry.enumerate_instance_layer_properties().unwrap_or_default() };
|
||||
let layer_names = layers_available.iter().map(|layer| layer.layer_name.as_ptr()).collect::<Vec<_>>();
|
||||
let layers = use_layers(&entry, vec![
|
||||
"VK_LAYER_MANGOHUD_overlay_x86_64"
|
||||
]);
|
||||
let layer_names = Vec::<*const std::ffi::c_char>::new();
|
||||
|
||||
// Extensions
|
||||
let mut extension_names =
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue