src | ||
.gitignore | ||
.gitmodules | ||
build.rs | ||
build_molten.sh | ||
Cargo.toml | ||
LICENSE-APACHE | ||
LICENSE-MIT | ||
README.md |
ash-molten
ash-molten
is built on top of ash and exposes a new entry point to statically link with MoltenVK.
Why?
-
You want to compile down to a single binary that doesn't need any enviroment variables to bet set.
-
You just want to try out MoltenVK without needing to setup the SDK.
Why not?
-
ash already supports MoltenVK via runtime linking. Runtime linking is the prefered way of using Vulkan because the loader can be updated at anytime without needing to recompile.
-
ash-molten
doesn't have access to the validation layers and thefore can not output any debug information.
How?
let entry = ash_molten::MoltenEntry::load().expect("Unable to load Molten");
let app_name = CString::new("Hello Static Molten").unwrap();
let appinfo = vk::ApplicationInfo::builder()
.application_name(&app_name)
.application_version(0)
.engine_name(&app_name)
.engine_version(0)
.api_version(vk_make_version!(1, 0, 0));
let create_info = vk::InstanceCreateInfo::builder().application_info(&appinfo);
let instance = entry.create_instance(&create_info, None).expect("Instance");
let devices = instance.enumerate_physical_devices();
println!("{:?}", devices);
You can run the example with cargo run
.
How does it work?
ash-molten
links statically with MoltenVK, it then uses vkGetInstanceProcAddr
to resolve all the function pointers at runtime.
Features
cargo build
will clone the newest master of MoltenVK compile and statically link it with your application.
If you want to compile MoltenVK yourself, you can use the external
feature. cargo build --features external
requires libMoltenVK
to be visible (LD_LIBRARY_PATH
).
License
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.