Ape Vulkan ICD

For I feel as an ape, smiting sticks together in the vain hope of forging a driver.
Here lies the source code of a rather calamitous attempt at the Vulkan specification, shaped into an Installable Client Driver all written in Zig.
It was forged for my own learning and amusement alone. Pray, do not wield it in any earnest project, lest thy hopes and frame rates both find themselves entombed.
Purpose
To understand Vulkan - not as a humble API mere mortals call upon, but as a labyrinthine system where one may craft a driver by hand.
It does not seek to produce a performant or production-worthy driver.
The gods are merciful, but not that merciful.
Soft [software]
Soft be a software implementation of the Vulkan specification, abiding within this driver's own codebase.
It maketh use of a bespoke SPIR-V interpreter and renderer, by whose workings its labours are carried forth.
Build
If thou art truly determined:
zig build soft --release=[fast|safe|small]
And should thou seek additional build options with:
zig build --help
Then ensure thy Vulkan loader is pointed toward the ICD manifest. The precise ritual varies by system - consult the tomes of your operating system, or wander the web's endless mausoleum of documentation.
Use at your own risk. If thy machine shudders, weeps, or attempts to flee - know that it was warned.
Vulkan 1.0 specification
The present standing of thy Vulkan 1.0 specification's implementation
⚠️ Implemented, yet perchance not fully tested nor proven conformant, but rather working in a manner most general to thee and thine.
Assume thou that functions lacking in this array are, for now, not intended to be wrought.
| Name | Status |
|---|---|
| vkAcquireNextImage2KHR | ✅ Implemented |
| vkAcquireNextImageKHR | ✅ Implemented |
| vkAllocateCommandBuffers | ✅ Implemented |
| vkAllocateDescriptorSets | ✅ Implemented |
| vkAllocateMemory | ✅ Implemented |
| vkBeginCommandBuffer | ✅ Implemented |
| vkBindBufferMemory | ✅ Implemented |
| vkBindImageMemory | ✅ Implemented |
| vkCmdBeginQuery | ✅ Implemented |
| vkCmdBeginRenderPass | ✅ Implemented |
| vkCmdBindDescriptorSets | ✅ Implemented |
| vkCmdBindIndexBuffer | ✅ Implemented |
| vkCmdBindPipeline | ✅ Implemented |
| vkCmdBindVertexBuffers | ✅ Implemented |
| vkCmdBlitImage | ✅ Implemented |
| vkCmdClearAttachments | ✅ Implemented |
| vkCmdClearColorImage | ✅ Implemented |
| vkCmdClearDepthStencilImage | ✅ Implemented |
| vkCmdCopyBuffer | ✅ Implemented |
| vkCmdCopyBufferToImage | ✅ Implemented |
| vkCmdCopyImage | ✅ Implemented |
| vkCmdCopyImageToBuffer | ✅ Implemented |
| vkCmdCopyQueryPoolResults | ✅ Implemented |
| vkCmdDispatch | ✅ Implemented |
| vkCmdDispatchBaseKHR | ✅ Implemented |
| vkCmdDispatchIndirect | ✅ Implemented |
| vkCmdDraw | ✅ Implemented |
| vkCmdDrawIndexed | ✅ Implemented |
| vkCmdDrawIndexedIndirect | ✅ Implemented |
| vkCmdDrawIndirect | ✅ Implemented |
| vkCmdEndQuery | ✅ Implemented |
| vkCmdEndRenderPass | ✅ Implemented |
| vkCmdExecuteCommands | ✅ Implemented |
| vkCmdFillBuffer | ✅ Implemented |
| vkCmdNextSubpass | ✅ Implemented |
| vkCmdPipelineBarrier | ✅ Implemented |
| vkCmdPushConstants | ✅ Implemented |
| vkCmdResetEvent | ✅ Implemented |
| vkCmdResetQueryPool | ✅ Implemented |
| vkCmdResolveImage | ✅ Implemented |
| vkCmdSetBlendConstants | ✅ Implemented |
| vkCmdSetDepthBias | ✅ Implemented |
| vkCmdSetDepthBounds | ✅ Implemented |
| vkCmdSetDeviceMaskKHR | ✅ Implemented |
| vkCmdSetEvent | ✅ Implemented |
| vkCmdSetLineWidth | ✅ Implemented |
| vkCmdSetScissor | ✅ Implemented |
| vkCmdSetStencilCompareMask | ✅ Implemented |
| vkCmdSetStencilReference | ✅ Implemented |
| vkCmdSetStencilWriteMask | ✅ Implemented |
| vkCmdSetViewport | ✅ Implemented |
| vkCmdUpdateBuffer | ✅ Implemented |
| vkCmdWaitEvents | ✅ Implemented |
| vkCmdWriteTimestamp | ✅ Implemented |
| vkCreateBuffer | ✅ Implemented |
| vkCreateBufferView | ✅ Implemented |
| vkCreateCommandPool | ✅ Implemented |
| vkCreateComputePipelines | ✅ Implemented |
| vkCreateDescriptorPool | ✅ Implemented |
| vkCreateDescriptorSetLayout | ✅ Implemented |
| vkCreateDevice | ✅ Implemented |
| vkCreateEvent | ✅ Implemented |
| vkCreateFence | ✅ Implemented |
| vkCreateFramebuffer | ✅ Implemented |
| vkCreateGraphicsPipelines | ✅ Implemented |
| vkCreateImage | ✅ Implemented |
| vkCreateImageView | ✅ Implemented |
| vkCreateInstance | ✅ Implemented |
| vkCreatePipelineCache | ✅ Implemented |
| vkCreatePipelineLayout | ✅ Implemented |
| vkCreateQueryPool | ✅ Implemented |
| vkCreateRenderPass | ✅ Implemented |
| vkCreateSampler | ✅ Implemented |
| vkCreateSemaphore | ✅ Implemented |
| vkCreateShaderModule | ✅ Implemented |
| vkCreateSwapchainKHR | ✅ Implemented |
| vkCreateWaylandSurfaceKHR | ✅ Implemented |
| vkCreateWin32SurfaceKHR | ⚙️ WIP |
| vkCreateXcbSurfaceKHR | ⚙️ WIP |
| vkCreateXlibSurfaceKHR | ⚙️ WIP |
| vkDestroyBuffer | ✅ Implemented |
| vkDestroyBufferView | ✅ Implemented |
| vkDestroyCommandPool | ✅ Implemented |
| vkDestroyDescriptorPool | ✅ Implemented |
| vkDestroyDescriptorSetLayout | ✅ Implemented |
| vkDestroyDevice | ✅ Implemented |
| vkDestroyEvent | ✅ Implemented |
| vkDestroyFence | ✅ Implemented |
| vkDestroyFramebuffer | ✅ Implemented |
| vkDestroyImage | ✅ Implemented |
| vkDestroyImageView | ✅ Implemented |
| vkDestroyInstance | ✅ Implemented |
| vkDestroyPipeline | ✅ Implemented |
| vkDestroyPipelineCache | ✅ Implemented |
| vkDestroyPipelineLayout | ✅ Implemented |
| vkDestroyQueryPool | ✅ Implemented |
| vkDestroyRenderPass | ✅ Implemented |
| vkDestroySampler | ✅ Implemented |
| vkDestroySemaphore | ✅ Implemented |
| vkDestroyShaderModule | ✅ Implemented |
| vkDestroySurfaceKHR | ✅ Implemented |
| vkDestroySwapchainKHR | ✅ Implemented |
| vkDeviceWaitIdle | ✅ Implemented |
| vkEndCommandBuffer | ✅ Implemented |
| vkEnumerateDeviceExtensionProperties | ✅ Implemented |
| vkEnumerateDeviceLayerProperties | ✅ Implemented |
| vkEnumerateInstanceExtensionProperties | ✅ Implemented |
| vkEnumerateInstanceLayerProperties | ✅ Implemented |
| vkEnumeratePhysicalDeviceGroupsKHR | ✅ Implemented |
| vkEnumeratePhysicalDevices | ✅ Implemented |
| vkFlushMappedMemoryRanges | ✅ Implemented |
| vkFreeCommandBuffers | ✅ Implemented |
| vkFreeDescriptorSets | ✅ Implemented |
| vkFreeMemory | ✅ Implemented |
| vkGetBufferDeviceAddress | ✅ Implemented |
| vkGetBufferDeviceAddressEXT | ✅ Implemented |
| vkGetBufferDeviceAddressKHR | ✅ Implemented |
| vkGetBufferMemoryRequirements | ✅ Implemented |
| vkGetDeviceGroupPeerMemoryFeaturesKHR | ✅ Implemented |
| vkGetDeviceGroupPresentCapabilitiesKHR | ✅ Implemented |
| vkGetDeviceGroupSurfacePresentModesKHR | ✅ Implemented |
| vkGetDeviceMemoryCommitment | ✅ Implemented |
| vkGetDeviceProcAddr | ✅ Implemented |
| vkGetDeviceQueue | ✅ Implemented |
| vkGetEventStatus | ✅ Implemented |
| vkGetFenceStatus | ✅ Implemented |
| vkGetImageMemoryRequirements | ✅ Implemented |
| vkGetImageSparseMemoryRequirements | ❎ Unsupported |
| vkGetImageSubresourceLayout | ✅ Implemented |
| vkGetInstanceProcAddr | ✅ Implemented |
| vkGetPhysicalDeviceFeatures | ✅ Implemented |
| vkGetPhysicalDeviceFormatProperties | ✅ Implemented |
| vkGetPhysicalDeviceImageFormatProperties | ✅ Implemented |
| vkGetPhysicalDeviceMemoryProperties | ✅ Implemented |
| vkGetPhysicalDeviceProperties | ✅ Implemented |
| vkGetPhysicalDeviceQueueFamilyProperties | ✅ Implemented |
| vkGetPhysicalDeviceSparseImageFormatProperties | ❎ Unsupported |
| vkGetPhysicalDeviceSurfaceCapabilitiesKHR | ✅ Implemented |
| vkGetPhysicalDeviceSurfaceFormatsKHR | ✅ Implemented |
| vkGetPhysicalDeviceSurfacePresentModesKHR | ✅ Implemented |
| vkGetPhysicalDeviceSurfaceSupportKHR | ✅ Implemented |
| vkGetPhysicalDeviceWaylandPresentationSupportKHR | ✅ Implemented |
| vkGetPhysicalDeviceWin32PresentationSupportKHR | ⚙️ WIP |
| vkGetPhysicalDeviceXcbPresentationSupportKHR | ⚙️ WIP |
| vkGetPhysicalDeviceXlibPresentationSupportKHR | ⚙️ WIP |
| vkGetPipelineCacheData | ✅ Implemented |
| vkGetQueryPoolResults | ✅ Implemented |
| vkGetRenderAreaGranularity | ✅ Implemented |
| vkGetSwapchainImagesKHR | ✅ Implemented |
| vkInvalidateMappedMemoryRanges | ✅ Implemented |
| vkMapMemory | ✅ Implemented |
| vkMergePipelineCaches | ✅ Implemented |
| vkQueueBindSparse | ❎ Unsupported |
| vkQueuePresentKHR | ✅ Implemented |
| vkQueueSubmit | ✅ Implemented |
| vkQueueWaitIdle | ✅ Implemented |
| vkResetCommandBuffer | ✅ Implemented |
| vkResetCommandPool | ✅ Implemented |
| vkResetDescriptorPool | ✅ Implemented |
| vkResetEvent | ✅ Implemented |
| vkResetFences | ✅ Implemented |
| vkResetQueryPool | ✅ Implemented |
| vkSetEvent | ✅ Implemented |
| vkUnmapMemory | ✅ Implemented |
| vkUpdateDescriptorSets | ✅ Implemented |
| vkWaitForFences | ✅ Implemented |
Here shalt thou find a most meticulous account of the Vulkan 1.0 conformance trials, set forth for thy scrutiny.
Phi [Xeon Phi KNC]
Phi be an implementation of the Vulkan specification, wrought for the Xeon Phi Knights Corner cards. Whether the Knights Landing cards shall one day receive the same providence remaineth to be seen.
Build
To bring forth the driver:
zig build phi --release=[fast|safe|small]
And for those who seek another manner of building:
zig build --help
The same rites apply as for the Soft build.
Vulkan 1.0 specification
Here standeth the present reckoning of thy Vulkan 1.0 implementation
⚠️ Implemented, yet perchance not fully tested nor proven conformant, but rather working in a manner most general to thee and thine.
Assume thou that functions lacking in this array are, for now, not intended to be wrought.
| Name | Status |
|---|---|
| vkAcquireNextImage2KHR | ⚙️ WIP |
| vkAcquireNextImageKHR | ⚙️ WIP |
| vkAllocateCommandBuffers | ✅ Implemented |
| vkAllocateDescriptorSets | ⚙️ WIP |
| vkAllocateMemory | ✅ Implemented |
| vkBeginCommandBuffer | ✅ Implemented |
| vkBindBufferMemory | ⚙️ WIP |
| vkBindImageMemory | ✅ Implemented |
| vkCmdBeginQuery | ⚙️ WIP |
| vkCmdBeginRenderPass | ⚙️ WIP |
| vkCmdBindDescriptorSets | ⚙️ WIP |
| vkCmdBindIndexBuffer | ⚙️ WIP |
| vkCmdBindPipeline | ⚙️ WIP |
| vkCmdBindVertexBuffers | ⚙️ WIP |
| vkCmdBlitImage | ✅ Implemented |
| vkCmdClearAttachments | ⚙️ WIP |
| vkCmdClearColorImage | ⚙️ WIP |
| vkCmdClearDepthStencilImage | ⚙️ WIP |
| vkCmdCopyBuffer | ✅ Implemented |
| vkCmdCopyBufferToImage | ✅ Implemented |
| vkCmdCopyImage | ⚙️ WIP |
| vkCmdCopyImageToBuffer | ✅ Implemented |
| vkCmdCopyQueryPoolResults | ⚙️ WIP |
| vkCmdDispatch | ⚙️ WIP |
| vkCmdDispatchBaseKHR | ⚙️ WIP |
| vkCmdDispatchIndirect | ⚙️ WIP |
| vkCmdDraw | ⚙️ WIP |
| vkCmdDrawIndexed | ⚙️ WIP |
| vkCmdDrawIndexedIndirect | ⚙️ WIP |
| vkCmdDrawIndirect | ⚙️ WIP |
| vkCmdEndQuery | ⚙️ WIP |
| vkCmdEndRenderPass | ⚙️ WIP |
| vkCmdExecuteCommands | ⚙️ WIP |
| vkCmdFillBuffer | ✅ Implemented |
| vkCmdNextSubpass | ⚙️ WIP |
| vkCmdPipelineBarrier | ⚙️ WIP |
| vkCmdPushConstants | ⚙️ WIP |
| vkCmdResetEvent | ⚙️ WIP |
| vkCmdResetQueryPool | ⚙️ WIP |
| vkCmdResolveImage | ⚙️ WIP |
| vkCmdSetBlendConstants | ⚙️ WIP |
| vkCmdSetDepthBias | ⚙️ WIP |
| vkCmdSetDepthBounds | ⚙️ WIP |
| vkCmdSetDeviceMaskKHR | ⚙️ WIP |
| vkCmdSetEvent | ⚙️ WIP |
| vkCmdSetLineWidth | ⚙️ WIP |
| vkCmdSetScissor | ⚙️ WIP |
| vkCmdSetStencilCompareMask | ⚙️ WIP |
| vkCmdSetStencilReference | ⚙️ WIP |
| vkCmdSetStencilWriteMask | ⚙️ WIP |
| vkCmdSetViewport | ⚙️ WIP |
| vkCmdUpdateBuffer | ⚙️ WIP |
| vkCmdWaitEvents | ⚙️ WIP |
| vkCmdWriteTimestamp | ⚙️ WIP |
| vkCreateBuffer | ⚙️ WIP |
| vkCreateBufferView | ⚙️ WIP |
| vkCreateCommandPool | ✅ Implemented |
| vkCreateComputePipelines | ⚙️ WIP |
| vkCreateDescriptorPool | ⚙️ WIP |
| vkCreateDescriptorSetLayout | ⚙️ WIP |
| vkCreateDevice | ✅ Implemented |
| vkCreateEvent | ⚙️ WIP |
| vkCreateFence | ⚙️ WIP |
| vkCreateFramebuffer | ⚙️ WIP |
| vkCreateGraphicsPipelines | ⚙️ WIP |
| vkCreateImage | ✅ Implemented |
| vkCreateImageView | ⚙️ WIP |
| vkCreateInstance | ✅ Implemented |
| vkCreatePipelineCache | ⚙️ WIP |
| vkCreatePipelineLayout | ⚙️ WIP |
| vkCreateQueryPool | ⚙️ WIP |
| vkCreateRenderPass | ⚙️ WIP |
| vkCreateSampler | ⚙️ WIP |
| vkCreateSemaphore | ⚙️ WIP |
| vkCreateShaderModule | ⚙️ WIP |
| vkCreateSwapchainKHR | ⚙️ WIP |
| vkCreateWaylandSurfaceKHR | ⚙️ WIP |
| vkCreateWin32SurfaceKHR | ⚙️ WIP |
| vkCreateXcbSurfaceKHR | ⚙️ WIP |
| vkCreateXlibSurfaceKHR | ⚙️ WIP |
| vkDestroyBuffer | ⚙️ WIP |
| vkDestroyBufferView | ⚙️ WIP |
| vkDestroyCommandPool | ✅ Implemented |
| vkDestroyDescriptorPool | ⚙️ WIP |
| vkDestroyDescriptorSetLayout | ⚙️ WIP |
| vkDestroyDevice | ✅ Implemented |
| vkDestroyEvent | ⚙️ WIP |
| vkDestroyFence | ⚙️ WIP |
| vkDestroyFramebuffer | ⚙️ WIP |
| vkDestroyImage | ✅ Implemented |
| vkDestroyImageView | ⚙️ WIP |
| vkDestroyInstance | ✅ Implemented |
| vkDestroyPipeline | ⚙️ WIP |
| vkDestroyPipelineCache | ⚙️ WIP |
| vkDestroyPipelineLayout | ⚙️ WIP |
| vkDestroyQueryPool | ⚙️ WIP |
| vkDestroyRenderPass | ⚙️ WIP |
| vkDestroySampler | ⚙️ WIP |
| vkDestroySemaphore | ⚙️ WIP |
| vkDestroyShaderModule | ⚙️ WIP |
| vkDestroySurfaceKHR | ⚙️ WIP |
| vkDestroySwapchainKHR | ⚙️ WIP |
| vkDeviceWaitIdle | ⚙️ WIP |
| vkEndCommandBuffer | ✅ Implemented |
| vkEnumerateDeviceExtensionProperties | ⚙️ WIP |
| vkEnumerateDeviceLayerProperties | ⚙️ WIP |
| vkEnumerateInstanceExtensionProperties | ⚙️ WIP |
| vkEnumerateInstanceLayerProperties | ⚙️ WIP |
| vkEnumeratePhysicalDeviceGroupsKHR | ⚙️ WIP |
| vkEnumeratePhysicalDevices | ✅ Implemented |
| vkFlushMappedMemoryRanges | ⚙️ WIP |
| vkFreeCommandBuffers | ⚙️ WIP |
| vkFreeDescriptorSets | ⚙️ WIP |
| vkFreeMemory | ✅ Implemented |
| vkGetBufferDeviceAddress | ⚙️ WIP |
| vkGetBufferDeviceAddressEXT | ⚙️ WIP |
| vkGetBufferDeviceAddressKHR | ⚙️ WIP |
| vkGetBufferMemoryRequirements | ⚙️ WIP |
| vkGetDeviceGroupPeerMemoryFeaturesKHR | ⚙️ WIP |
| vkGetDeviceGroupPresentCapabilitiesKHR | ⚙️ WIP |
| vkGetDeviceGroupSurfacePresentModesKHR | ⚙️ WIP |
| vkGetDeviceMemoryCommitment | ⚙️ WIP |
| vkGetDeviceProcAddr | ⚙️ WIP |
| vkGetDeviceQueue | ⚙️ WIP |
| vkGetEventStatus | ⚙️ WIP |
| vkGetFenceStatus | ⚙️ WIP |
| vkGetImageMemoryRequirements | ✅ Implemented |
| vkGetImageSparseMemoryRequirements | ⚙️ WIP |
| vkGetImageSubresourceLayout | ✅ Implemented |
| vkGetInstanceProcAddr | ⚙️ WIP |
| vkGetPhysicalDeviceFeatures | ✅ Implemented |
| vkGetPhysicalDeviceFormatProperties | ⚙️ WIP |
| vkGetPhysicalDeviceImageFormatProperties | ✅ Implemented |
| vkGetPhysicalDeviceMemoryProperties | ✅ Implemented |
| vkGetPhysicalDeviceProperties | ✅ Implemented |
| vkGetPhysicalDeviceQueueFamilyProperties | ⚙️ WIP |
| vkGetPhysicalDeviceSparseImageFormatProperties | ⚙️ WIP |
| vkGetPhysicalDeviceSurfaceCapabilitiesKHR | ⚙️ WIP |
| vkGetPhysicalDeviceSurfaceFormatsKHR | ⚙️ WIP |
| vkGetPhysicalDeviceSurfacePresentModesKHR | ⚙️ WIP |
| vkGetPhysicalDeviceSurfaceSupportKHR | ⚙️ WIP |
| vkGetPhysicalDeviceWaylandPresentationSupportKHR | ⚙️ WIP |
| vkGetPhysicalDeviceWin32PresentationSupportKHR | ⚙️ WIP |
| vkGetPhysicalDeviceXcbPresentationSupportKHR | ⚙️ WIP |
| vkGetPhysicalDeviceXlibPresentationSupportKHR | ⚙️ WIP |
| vkGetPipelineCacheData | ⚙️ WIP |
| vkGetQueryPoolResults | ⚙️ WIP |
| vkGetRenderAreaGranularity | ⚙️ WIP |
| vkGetSwapchainImagesKHR | ⚙️ WIP |
| vkInvalidateMappedMemoryRanges | ⚙️ WIP |
| vkMapMemory | ⚙️ WIP |
| vkMergePipelineCaches | ⚙️ WIP |
| vkQueueBindSparse | ⚙️ WIP |
| vkQueuePresentKHR | ⚙️ WIP |
| vkQueueSubmit | ✅ Implemented |
| vkQueueWaitIdle | ⚙️ WIP |
| vkResetCommandBuffer | ⚙️ WIP |
| vkResetCommandPool | ✅ Implemented |
| vkResetDescriptorPool | ⚙️ WIP |
| vkResetEvent | ⚙️ WIP |
| vkResetFences | ⚙️ WIP |
| vkResetQueryPool | ⚙️ WIP |
| vkSetEvent | ⚙️ WIP |
| vkUnmapMemory | ⚙️ WIP |
| vkUpdateDescriptorSets | ⚙️ WIP |
| vkWaitForFences | ⚙️ WIP |
Flint [Intel]
Flint be an implementation of the Vulkan specification, fashioned for the elder Intel iGPUs of generations 9 through 11. Whether Haswell and those that followed-even the Xe kindred-shall one day partake of its workings remaineth unwritten.
Build
The rite of forging the driver:
zig build flint --release=[fast|safe|small]
Should the foregoing not suffice, further build options await thee:
zig build --help
The same rites apply as for the Soft and Phi build.
Vulkan 1.0 specification
Behold the present state of thy Vulkan 1.0 implementation
⚠️ Implemented, yet perchance not fully tested nor proven conformant, but rather working in a manner most general to thee and thine.
Assume thou that functions lacking in this array are, for now, not intended to be wrought.
| Name | Status |
|---|---|
| vkAcquireNextImage2KHR | ⚙️ WIP |
| vkAcquireNextImageKHR | ⚙️ WIP |
| vkAllocateCommandBuffers | ✅ Implemented |
| vkAllocateDescriptorSets | ⚙️ WIP |
| vkAllocateMemory | ✅ Implemented |
| vkBeginCommandBuffer | ✅ Implemented |
| vkBindBufferMemory | ✅ Implemented |
| vkBindImageMemory | ✅ Implemented |
| vkCmdBeginQuery | ⚙️ WIP |
| vkCmdBeginRenderPass | ⚙️ WIP |
| vkCmdBindDescriptorSets | ⚙️ WIP |
| vkCmdBindIndexBuffer | ⚙️ WIP |
| vkCmdBindPipeline | ⚙️ WIP |
| vkCmdBindVertexBuffers | ⚙️ WIP |
| vkCmdBlitImage | ⚙️ WIP |
| vkCmdClearAttachments | ⚙️ WIP |
| vkCmdClearColorImage | ⚙️ WIP |
| vkCmdClearDepthStencilImage | ⚙️ WIP |
| vkCmdCopyBuffer | ✅ Implemented |
| vkCmdCopyBufferToImage | ✅ Implemented |
| vkCmdCopyImage | ✅ Implemented |
| vkCmdCopyImageToBuffer | ✅ Implemented |
| vkCmdCopyQueryPoolResults | ⚙️ WIP |
| vkCmdDispatch | ⚙️ WIP |
| vkCmdDispatchBaseKHR | ⚙️ WIP |
| vkCmdDispatchIndirect | ⚙️ WIP |
| vkCmdDraw | ⚙️ WIP |
| vkCmdDrawIndexed | ⚙️ WIP |
| vkCmdDrawIndexedIndirect | ⚙️ WIP |
| vkCmdDrawIndirect | ⚙️ WIP |
| vkCmdEndQuery | ⚙️ WIP |
| vkCmdEndRenderPass | ⚙️ WIP |
| vkCmdExecuteCommands | ✅ Implemented |
| vkCmdFillBuffer | ✅ Implemented |
| vkCmdNextSubpass | ⚙️ WIP |
| vkCmdPipelineBarrier | ⚙️ WIP |
| vkCmdPushConstants | ⚙️ WIP |
| vkCmdResetEvent | ⚙️ WIP |
| vkCmdResetQueryPool | ⚙️ WIP |
| vkCmdResolveImage | ⚙️ WIP |
| vkCmdSetBlendConstants | ⚙️ WIP |
| vkCmdSetDepthBias | ⚙️ WIP |
| vkCmdSetDepthBounds | ⚙️ WIP |
| vkCmdSetDeviceMaskKHR | ⚙️ WIP |
| vkCmdSetEvent | ⚙️ WIP |
| vkCmdSetLineWidth | ⚙️ WIP |
| vkCmdSetScissor | ⚙️ WIP |
| vkCmdSetStencilCompareMask | ⚙️ WIP |
| vkCmdSetStencilReference | ⚙️ WIP |
| vkCmdSetStencilWriteMask | ⚙️ WIP |
| vkCmdSetViewport | ⚙️ WIP |
| vkCmdUpdateBuffer | ⚙️ WIP |
| vkCmdWaitEvents | ⚙️ WIP |
| vkCmdWriteTimestamp | ⚙️ WIP |
| vkCreateBuffer | ✅ Implemented |
| vkCreateBufferView | ⚙️ WIP |
| vkCreateCommandPool | ✅ Implemented |
| vkCreateComputePipelines | ⚙️ WIP |
| vkCreateDescriptorPool | ⚙️ WIP |
| vkCreateDescriptorSetLayout | ⚙️ WIP |
| vkCreateDevice | ✅ Implemented |
| vkCreateEvent | ⚙️ WIP |
| vkCreateFence | ✅ Implemented |
| vkCreateFramebuffer | ⚙️ WIP |
| vkCreateGraphicsPipelines | ⚙️ WIP |
| vkCreateImage | ✅ Implemented |
| vkCreateImageView | ⚙️ WIP |
| vkCreateInstance | ✅ Implemented |
| vkCreatePipelineCache | ⚙️ WIP |
| vkCreatePipelineLayout | ⚙️ WIP |
| vkCreateQueryPool | ⚙️ WIP |
| vkCreateRenderPass | ⚙️ WIP |
| vkCreateSampler | ⚙️ WIP |
| vkCreateSemaphore | ✅ Implemented |
| vkCreateShaderModule | ⚙️ WIP |
| vkCreateSwapchainKHR | ⚙️ WIP |
| vkCreateWaylandSurfaceKHR | ⚙️ WIP |
| vkCreateWin32SurfaceKHR | ⚙️ WIP |
| vkCreateXcbSurfaceKHR | ⚙️ WIP |
| vkCreateXlibSurfaceKHR | ⚙️ WIP |
| vkDestroyBuffer | ✅ Implemented |
| vkDestroyBufferView | ⚙️ WIP |
| vkDestroyCommandPool | ✅ Implemented |
| vkDestroyDescriptorPool | ⚙️ WIP |
| vkDestroyDescriptorSetLayout | ⚙️ WIP |
| vkDestroyDevice | ✅ Implemented |
| vkDestroyEvent | ⚙️ WIP |
| vkDestroyFence | ✅ Implemented |
| vkDestroyFramebuffer | ⚙️ WIP |
| vkDestroyImage | ✅ Implemented |
| vkDestroyImageView | ⚙️ WIP |
| vkDestroyInstance | ✅ Implemented |
| vkDestroyPipeline | ⚙️ WIP |
| vkDestroyPipelineCache | ⚙️ WIP |
| vkDestroyPipelineLayout | ⚙️ WIP |
| vkDestroyQueryPool | ⚙️ WIP |
| vkDestroyRenderPass | ⚙️ WIP |
| vkDestroySampler | ⚙️ WIP |
| vkDestroySemaphore | ✅ Implemented |
| vkDestroyShaderModule | ⚙️ WIP |
| vkDestroySurfaceKHR | ⚙️ WIP |
| vkDestroySwapchainKHR | ⚙️ WIP |
| vkDeviceWaitIdle | ✅ Implemented |
| vkEndCommandBuffer | ✅ Implemented |
| vkEnumerateDeviceExtensionProperties | ✅ Implemented |
| vkEnumerateDeviceLayerProperties | ⚙️ WIP |
| vkEnumerateInstanceExtensionProperties | ⚙️ WIP |
| vkEnumerateInstanceLayerProperties | ⚙️ WIP |
| vkEnumeratePhysicalDeviceGroupsKHR | ⚙️ WIP |
| vkEnumeratePhysicalDevices | ✅ Implemented |
| vkFlushMappedMemoryRanges | ✅ Implemented |
| vkFreeCommandBuffers | ✅ Implemented |
| vkFreeDescriptorSets | ⚙️ WIP |
| vkFreeMemory | ✅ Implemented |
| vkGetBufferDeviceAddress | ⚙️ WIP |
| vkGetBufferDeviceAddressEXT | ⚙️ WIP |
| vkGetBufferDeviceAddressKHR | ⚙️ WIP |
| vkGetBufferMemoryRequirements | ⚙️ WIP |
| vkGetDeviceGroupPeerMemoryFeaturesKHR | ⚙️ WIP |
| vkGetDeviceGroupPresentCapabilitiesKHR | ⚙️ WIP |
| vkGetDeviceGroupSurfacePresentModesKHR | ⚙️ WIP |
| vkGetDeviceMemoryCommitment | ⚙️ WIP |
| vkGetDeviceProcAddr | ✅ Implemented |
| vkGetDeviceQueue | ✅ Implemented |
| vkGetEventStatus | ⚙️ WIP |
| vkGetFenceStatus | ✅ Implemented |
| vkGetImageMemoryRequirements | ⚙️ WIP |
| vkGetImageSparseMemoryRequirements | ⚙️ WIP |
| vkGetImageSubresourceLayout | ⚙️ WIP |
| vkGetInstanceProcAddr | ⚙️ WIP |
| vkGetPhysicalDeviceFeatures | ✅ Implemented |
| vkGetPhysicalDeviceFormatProperties | ⚙️ WIP |
| vkGetPhysicalDeviceImageFormatProperties | ⚙️ WIP |
| vkGetPhysicalDeviceMemoryProperties | ✅ Implemented |
| vkGetPhysicalDeviceProperties | ✅ Implemented |
| vkGetPhysicalDeviceQueueFamilyProperties | ⚙️ WIP |
| vkGetPhysicalDeviceSparseImageFormatProperties | ⚙️ WIP |
| vkGetPhysicalDeviceSurfaceCapabilitiesKHR | ⚙️ WIP |
| vkGetPhysicalDeviceSurfaceFormatsKHR | ⚙️ WIP |
| vkGetPhysicalDeviceSurfacePresentModesKHR | ⚙️ WIP |
| vkGetPhysicalDeviceSurfaceSupportKHR | ⚙️ WIP |
| vkGetPhysicalDeviceWaylandPresentationSupportKHR | ⚙️ WIP |
| vkGetPhysicalDeviceWin32PresentationSupportKHR | ⚙️ WIP |
| vkGetPhysicalDeviceXcbPresentationSupportKHR | ⚙️ WIP |
| vkGetPhysicalDeviceXlibPresentationSupportKHR | ⚙️ WIP |
| vkGetPipelineCacheData | ⚙️ WIP |
| vkGetQueryPoolResults | ⚙️ WIP |
| vkGetRenderAreaGranularity | ⚙️ WIP |
| vkGetSwapchainImagesKHR | ⚙️ WIP |
| vkInvalidateMappedMemoryRanges | ✅ Implemented |
| vkMapMemory | ✅ Implemented |
| vkMergePipelineCaches | ⚙️ WIP |
| vkQueueBindSparse | ⚙️ WIP |
| vkQueuePresentKHR | ⚙️ WIP |
| vkQueueSubmit | ✅ Implemented |
| vkQueueWaitIdle | ✅ Implemented |
| vkResetCommandBuffer | ✅ Implemented |
| vkResetCommandPool | ✅ Implemented |
| vkResetDescriptorPool | ⚙️ WIP |
| vkResetEvent | ⚙️ WIP |
| vkResetFences | ✅ Implemented |
| vkResetQueryPool | ⚙️ WIP |
| vkSetEvent | ⚙️ WIP |
| vkUnmapMemory | ✅ Implemented |
| vkUpdateDescriptorSets | ⚙️ WIP |
| vkWaitForFences | ✅ Implemented |
Herein is the reckoning of the Vulkan 1.0 conformance trials laid bare. Judge it as thou wilt.
License
Released unto the world as MIT for study, experimentation, and the occasional horrified whisper. Do with it as thou wilt, but accept the consequences as thine own.
Mirrors
This codebase is maintained chiefly upon mine own Git forge, though thou may also find an active mirror upon GitHub.