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:
- 1.2.198
- 1.2.189
- 1.2.182
- 1.2.176
- 1.2.170
- 1.2.162
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.