2025-10-02 –, Jean-Baptiste Say Amphitheater
Language: English
We present an idiomatic Julia interface to Vulkan, a high-performance cross-platform graphics API for GPUs. We will briefly introduce Vulkan and outline reasons for using it and situations where it is a solid choice, then present Vulkan.jl as the most convenient way known to date to use Vulkan from Julia. We will quickly go through its main features, all about automating everything you would do by hand and in a better way. As an extremely large and complex specification, Vulkan is hard to manually interface with while guaranteeing correctness of execution, which is precisely what Vulkan.jl aims to solve. We will end with a few example applications that make use of this package.
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 and available via C interop, 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.
Many of the patterns encountered in the Vulkan specification are very common; thus, we were able to understand and automate most of them with advanced implementations that attempt to provide the most robust and performant way to lift a C API to a more idiomatic Julia API, making use of convenience features available in the Julia language.
Cédric is an applied mathematician and a programmer, enjoying developing tools for graphics applications on his free time.
He currently works at JuliaHub as part of the Compiler team.