Home

Awesome

vk-generator

A generator for low-level Common Lisp/CFFI bindings for the Vulkan API.

The generated bindings are available on quicklisp.

Installation & Usage

vk-generator is not on quicklisp, but if you download it to one of your ql:*local-project-directories* you can load it and its dependencies by running

(ql:quickload :vk-generator)

You'll probably want only one function:

(vk-generator:generate :version "v1.2.182")

This will generate the system vk from the Vulkan API XML registry of the given version into the first entry in your ql:*local-project-directories*. If you want vk to be generated within a specific directory, you can specify it via the :package-dir argument of vk-generator:generate.

By default, the Vulkan API XML registry will be downloaded to (uiop:temporary-directory), but you can specify a different directory using the :vk-xml-dir argument. If the XML is already in this location it will be used directly, otherwise an internet connection is required, since it has to be downloaded from the Vulkan-Docs GitHub repository. If the XML is already present at the :vk-xml-dir, but you want it to be downloaded anyway, you can force it by passing some truthy thing to vk-generator:generate as the :force-download argument.

Supported Vulkan Versions

The system vk can be generated by vk-generator and is loadable for (at least) the following versions of the Vulkan specification:

Versions above 1.2.148 which are not mentioned here might also work, but only versions which make it to an Vulkan SDK release are tested.

Version 1.2.164 is not supported, because of an error in the Vulkan API XML registry (missing len attribute in VkDescriptorSetAllocateInfo).

Acknowledgements

The project has been forked from cl-vulkan.

The code responsible for parsing and representing the Vulkan API registry has been ported from Vulkan-Hpp.