Generates Rust source code from vk.xml
First download vk.xml from the official Vulkan repository (https://github.com/KhronosGroup/Vulkan-Headers/blob/master/registry/vk.xml).
$ vkgen <input file> <output file>
input file
should be the Vulkan registry (vk.xml)output file
will be created if it does not existTo use the generated file one has to add libloading to cargo.toml:
[dependencies]
libloading = "0.5.0"
This is required to load vkGetInstanceProcAddr from the Vulkan shared library.
All other functions are loaded dynamically per instance/device via vkGetInstanceProcAddr
and vkGetDeviceProcAddr to avoid additional dispatch overhead.
This simple example demonstrates how to load libvulkan on linux and output the instance version (1.1.0). vk.rs is a file containing the generated Rust source code. The location of libvulkan.so/vulkan.dll may vary depending on the OS. ```rust mod vk;
use self::vk::*;
fn main() { unsafe { vkLoad("/usr/lib/x86_64-linux-gnu/libvulkan.so.1.1.92"); }
let mut v: u32 = 0;
vkEnumerateInstanceVersion(&mut v as *mut u32);
println!("vulkan instance version is {}.{}.{}", VK_VERSION_MAJOR(v), VK_VERSION_MINOR(v), VK_VERSION_PATCH(v));
}
```