20 breaking releases

0.22.0 Sep 15, 2023
0.21.0 May 28, 2023
0.20.0 May 27, 2023
0.17.0 Dec 15, 2022
0.2.3 Nov 24, 2020

#77 in Graphics APIs

Download history 49/week @ 2023-06-09 152/week @ 2023-06-16 119/week @ 2023-06-23 159/week @ 2023-06-30 126/week @ 2023-07-07 83/week @ 2023-07-14 141/week @ 2023-07-21 99/week @ 2023-07-28 134/week @ 2023-08-04 147/week @ 2023-08-11 320/week @ 2023-08-18 395/week @ 2023-08-25 124/week @ 2023-09-01 182/week @ 2023-09-08 272/week @ 2023-09-15 122/week @ 2023-09-22

717 downloads per month
Used in vulkanalia


37K SLoC


Crate Documentation CI MSRV

Vulkan bindings for Rust.

Released under the Apache License 2.0.

Heavily inspired by the ash crate.

Vulkan Tutorial

For users new to Vulkan, there is a complete adaptation of https://vulkan-tutorial.com by Alexander Overvoorde to use Rust and vulkanalia instead of C++. The published version of this tutorial can be found here and the sources for the tutorial (including standalone working code examples for each chapter) are in this repository in the tutorial directory.


vulkanalia-sys consists of the Vulkan types and command signatures generated from the Vulkan API Registry. If you want to use the raw Vulkan API and are willing to handle function loading yourself you can use this crate.

vulkanalia offers a fairly thin wrapper around vulkanalia-sys that handles function loading for you and makes the Vulkan API somewhat less error prone and more idiomatic to use from Rust. For a detailed overview of how vulkanalia wraps the Vulkan API, see the API Concepts section of the Overview chapter of the Vulkan tutorial which can be found here.

Cargo Features

The vulkanalia crate has the following notable Cargo features:

  • libloading (non-default) – enables integration with libloading (adds the LibloadingLoader struct which can be used to load the initial Vulkan commands from a Vulkan shared library)
  • window (non-default) – enables integration with raw-window-handle (adds the window module which can be used to create surfaces for windows from libraries that support raw-window-handle (e.g., winit)
  • provisional (non-default) – enables access to provisional Vulkan extensions (WARNING: these extensions are not guaranteed to be backwards compatible and are not intended to be used in production applications)


See the examples directory for an implementation of the classic triangle example using vulkanalia.