JuliaCon 2025

Vulkan.jl: cross-platform graphics on the GPU
2025-07-25 , Main Room 5

We present an idiomatic Julia interface to Vulkan, a high-performance cross-platform graphics API for GPUs. As an extremely large and complex specification, Vulkan is hard to interface with by hand while guaranteeing correctness of execution. Fortunately, clear patterns and a structured specification format enable various automations that allowed us to lift the C API to a much more convenient high-level API. We will present this process in detail, and provide example applications.


Vulkan.jl is a lightweight wrapper around the Vulkan graphics and compute library. It exposes abstractions over the underlying C interface, primarily geared towards developers looking for a more natural way to work with Vulkan with minimal overhead. It builds upon the core API provided by VulkanCore.jl, but because Vulkan is originally a C specification, interfacing with it requires some knowledge to be used correctly from Julia. This package acts as an abstraction layer, so that one doesn't need to deal with C interoperability details, while still retaining full functionality and maximum performance.

After detailing the motivations to provide such a wrapper, this talk will present the various challenges encountered while interfacing with the Vulkan API, in the hope that it may help other developers deal with complex C interfacing concerns. Many of the patterns encountered in this API are very common; we will show how we abstracted them away using features available in the Julia language, to provide a more convenient API without sacrificing functionality. We will then proceed to show how productive it is in enabling access to the Vulkan API, and demonstrate a few applications to get a feel for the capabilities unlocked by combining Vulkan with an idiomatic Julia interface.

Cédric is an applied mathematician and a programmer, enjoying developing tools for graphics applications on his free time.