#vulkan #gpu #gpgpu #graphics


An intuitive, idiomatic, unopinionated, zero-overhead Vulkan API

8 unstable releases (3 breaking)

Uses old Rust 2015

0.3.1 Mar 12, 2018
0.3.0 Jan 24, 2018
0.2.1 Oct 16, 2017
0.1.2 Oct 14, 2017
0.0.1 Sep 17, 2017

#337 in Graphics APIs

38 downloads per month
Used in 2 crates (via voodoo_winit)


36K SLoC

Voodoo - A high-performance Vulkan® API for Rust

Documentation | Change Log

Supported platforms


  • An intuitive and idiomatic interface
  • Zero additional overhead
    • No unnecessary allocations
    • No intermediate structs or extra copying
    • Builders compile to direct assignment
  • Thread-safe allocation / destruction
    • Safety escape hatches available everywhere
  • A minimum of boilerplate
  • Non-opinionated and nothing hidden
  • Complete API coverage

Getting Started

Ensure that Vulkan drivers are installed for your device. Add the following to your project's Cargo.toml:

voodoo = "0.3.1"

And add the following to your crate root (lib.rs or main.rs):

extern crate voodoo;


Create an instance:

extern crate voodoo;

use voodoo::{Result as VdResult, Instance, ApplicationInfo, Loader};
use std::ffi::CString;

/// Initializes and returns a new loader and instance with all available
/// extension function pointers loaded.
fn init_instance() -> VdResult<Instance> {
    let app_name = CString::new("Hello!")?;

    let app_info = ApplicationInfo::builder()
        .application_version((1, 0, 0))
        .api_version((1, 0, 0))

    let loader = Loader::new()?;


fn main() {
    let _instance = init_instance().unwrap();

See hello.rs for a complete, working example adapted from https://vulkan-tutorial.com/.

hello.rs screenshot:



  • API coverage:
    • Core: 100%
    • Extensions: 70%
  • Documentation: 30%
  • Stability: 97%

Other Vulkan libraries in Rust

For a higher level, more opinionated, easier to use Vulkan API that does more for you see the Vulkano project.

Other low-ish level Rust libraries include dacite and ash. See vks for a direct ffi interface.

*“Vulkan and the Vulkan logo are registered trademarks of the Khronos Group Inc.”*


~57K SLoC