vkgen

Generates Rust source code from vk.xml

This crate offers

General information

Usage

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>

To 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.

Examples

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));

}

```

Known Issues