Generated Mojo bindings for the Vulkan graphics API
- Generated from vk.xml
- More or less 1:1 mapping to original API
- Unsafe. Use validation layers to catch mistakes
- Linux only currently
vulkan mojo is available through the modular community channel! Just run
pixi project channel add https://repo.prefix.dev/modular-community && \
pixi add vulkan-mojo# load global functions any time
var vkg = vk.GlobalFunctionsV1_3()
...
# load instance and device level functions once you've initialized that instance or device
var vki = vk.InstanceFunctionsV1_3(vkg, instance)
...
var vkd = vk.DeviceFunctionsV1_3(vkg, device)var queue_priorities = InlineArray[Float32, 1](1.0)
var queue_create_info = vk.DeviceQueueCreateInfo(
queue_family_index = queue_family_index,
queue_count = len(queue_priorities),
p_queue_priorities = queue_priorities.unsafe_ptr(),
)
...
_ = queue_priorities # necessary to make sure pointer in queue_create_info remains validvar extension_properties_result = vkg.enumerate_instance_extension_properties(UnsafePointer[UInt8]())instead of
# and this leaves out proper error handling
var count: UInt32 = 0
var result = vki.enumerate_foo(UnsafePointer[UInt8](), count, UnsafePointer[vk.ExtensionProperties]())
var extension_properties = UnsafePointer[vk.ExtensionProperties].alloc(count * size_of[vk.ExtensionProperties]())
result = vki.enumerate_foo(UnsafePointer[UInt8](), count, extension_properties)Check examples for more detail
