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.
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 be a software implementation of the Vulkan specification, abiding within this driver's own codebase.
It translateth SPIR-V into common IR, then maketh use of its own IR interpreter and renderer, by whose workings its labours are carried forth.
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.
The present standing of thy Vulkan 1.0 specification's implementation
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 |
| vkCreateMetalSurfaceEXT | ✅ Implemented |
| vkCreatePipelineCache | ✅ Implemented |
| vkCreatePipelineLayout | ✅ Implemented |
| vkCreateQueryPool | ✅ Implemented |
| vkCreateRenderPass | ✅ Implemented |
| vkCreateSampler | ✅ Implemented |
| vkCreateSemaphore | ✅ Implemented |
| vkCreateShaderModule | ✅ Implemented |
| vkCreateSwapchainKHR | ✅ Implemented |
| vkCreateWaylandSurfaceKHR | ✅ Implemented |
| vkCreateWin32SurfaceKHR | ⚙️ WIP |
| vkCreateXcbSurfaceKHR | ✅ Implemented |
| vkCreateXlibSurfaceKHR | ✅ Implemented |
| 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 | ✅ Implemented |
| vkGetPhysicalDeviceXlibPresentationSupportKHR | ✅ Implemented |
| 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 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.
To bring forth the driver:
zig build phi --release=[fast|safe|small]
In this manner, the daemon is cross-compiled by way of k1om-mpss-linux-gcc, delivered unto its destination via SSH, and speaketh through the SCIF.
For those who seek a different method of creation:
zig build --help
The same rites apply as for the Soft build.
Here standeth the present reckoning of thy Vulkan 1.0 implementation
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 | ⚙️ 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 | ✅ 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 |
| vkCreateMetalSurfaceEXT | ✅ Implemented |
| vkCreatePipelineCache | ⚙️ WIP |
| vkCreatePipelineLayout | ⚙️ WIP |
| vkCreateQueryPool | ⚙️ WIP |
| vkCreateRenderPass | ⚙️ WIP |
| vkCreateSampler | ⚙️ WIP |
| vkCreateSemaphore | ⚙️ WIP |
| vkCreateShaderModule | ✅ Implemented |
| vkCreateSwapchainKHR | ✅ Implemented |
| vkCreateWaylandSurfaceKHR | ✅ Implemented |
| vkCreateWin32SurfaceKHR | ⚙️ WIP |
| vkCreateXcbSurfaceKHR | ✅ Implemented |
| vkCreateXlibSurfaceKHR | ✅ Implemented |
| 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 | ✅ Implemented |
| vkDeviceWaitIdle | ✅ Implemented |
| vkEndCommandBuffer | ✅ Implemented |
| vkEnumerateDeviceExtensionProperties | ⚙️ WIP |
| vkEnumerateDeviceLayerProperties | ⚙️ WIP |
| vkEnumerateInstanceExtensionProperties | ⚙️ WIP |
| vkEnumerateInstanceLayerProperties | ⚙️ WIP |
| vkEnumeratePhysicalDeviceGroupsKHR | ⚙️ WIP |
| vkEnumeratePhysicalDevices | ✅ Implemented |
| vkFlushMappedMemoryRanges | ⚙️ WIP |
| 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 | ✅ Implemented |
| vkGetFenceStatus | ✅ Implemented |
| vkGetImageMemoryRequirements | ✅ Implemented |
| vkGetImageSparseMemoryRequirements | ⚙️ WIP |
| vkGetImageSubresourceLayout | ✅ Implemented |
| vkGetInstanceProcAddr | ✅ Implemented |
| 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 | ✅ 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 |
The present reckoning of thy Vulkan 1.0 implementation standeth thus.
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.
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.
Behold the present state of thy Vulkan 1.0 implementation
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 | ✅ Implemented |
| vkCmdBindIndexBuffer | ⚙️ WIP |
| vkCmdBindPipeline | ✅ Implemented |
| vkCmdBindVertexBuffers | ⚙️ WIP |
| vkCmdBlitImage | ⚙️ WIP |
| vkCmdClearAttachments | ⚙️ WIP |
| vkCmdClearColorImage | ⚙️ WIP |
| vkCmdClearDepthStencilImage | ⚙️ WIP |
| vkCmdCopyBuffer | ✅ Implemented |
| vkCmdCopyBufferToImage | ✅ Implemented |
| vkCmdCopyImage | ✅ Implemented |
| vkCmdCopyImageToBuffer | ✅ Implemented |
| vkCmdCopyQueryPoolResults | ⚙️ WIP |
| vkCmdDispatch | ✅ Implemented |
| vkCmdDispatchBaseKHR | ✅ Implemented |
| 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 | ✅ Implemented |
| vkCreateDescriptorPool | ✅ Implemented |
| vkCreateDescriptorSetLayout | ✅ Implemented |
| vkCreateDevice | ✅ Implemented |
| vkCreateEvent | ⚙️ WIP |
| vkCreateFence | ✅ Implemented |
| vkCreateFramebuffer | ⚙️ WIP |
| vkCreateGraphicsPipelines | ⚙️ WIP |
| vkCreateImage | ✅ Implemented |
| vkCreateImageView | ⚙️ WIP |
| vkCreateInstance | ✅ Implemented |
| vkCreateMetalSurfaceEXT | ✅ Implemented |
| vkCreatePipelineCache | ⚙️ WIP |
| vkCreatePipelineLayout | ⚙️ WIP |
| vkCreateQueryPool | ⚙️ WIP |
| vkCreateRenderPass | ⚙️ WIP |
| vkCreateSampler | ⚙️ WIP |
| vkCreateSemaphore | ✅ Implemented |
| vkCreateShaderModule | ✅ Implemented |
| vkCreateSwapchainKHR | ✅ Implemented |
| vkCreateWaylandSurfaceKHR | ✅ Implemented |
| vkCreateWin32SurfaceKHR | ⚙️ WIP |
| vkCreateXcbSurfaceKHR | ✅ Implemented |
| vkCreateXlibSurfaceKHR | ✅ Implemented |
| vkDestroyBuffer | ✅ Implemented |
| vkDestroyBufferView | ⚙️ WIP |
| vkDestroyCommandPool | ✅ Implemented |
| vkDestroyDescriptorPool | ✅ Implemented |
| vkDestroyDescriptorSetLayout | ✅ Implemented |
| vkDestroyDevice | ✅ Implemented |
| vkDestroyEvent | ⚙️ WIP |
| vkDestroyFence | ✅ Implemented |
| vkDestroyFramebuffer | ⚙️ WIP |
| vkDestroyImage | ✅ Implemented |
| vkDestroyImageView | ⚙️ WIP |
| vkDestroyInstance | ✅ Implemented |
| vkDestroyPipeline | ✅ Implemented |
| vkDestroyPipelineCache | ⚙️ WIP |
| vkDestroyPipelineLayout | ⚙️ WIP |
| vkDestroyQueryPool | ⚙️ WIP |
| vkDestroyRenderPass | ⚙️ WIP |
| vkDestroySampler | ⚙️ WIP |
| vkDestroySemaphore | ✅ Implemented |
| vkDestroyShaderModule | ✅ Implemented |
| vkDestroySurfaceKHR | ✅ Implemented |
| vkDestroySwapchainKHR | ✅ Implemented |
| vkDeviceWaitIdle | ✅ Implemented |
| vkEndCommandBuffer | ✅ Implemented |
| vkEnumerateDeviceExtensionProperties | ✅ Implemented |
| vkEnumerateDeviceLayerProperties | ⚙️ WIP |
| vkEnumerateInstanceExtensionProperties | ⚙️ WIP |
| vkEnumerateInstanceLayerProperties | ⚙️ WIP |
| vkEnumeratePhysicalDeviceGroupsKHR | ⚙️ WIP |
| vkEnumeratePhysicalDevices | ✅ Implemented |
| vkFlushMappedMemoryRanges | ✅ Implemented |
| vkFreeCommandBuffers | ✅ Implemented |
| vkFreeDescriptorSets | ✅ Implemented |
| 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 | ✅ Implemented |
| 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 | ✅ Implemented |
| 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.
Psvk is an implementation of Vulkan wrought for the PS Vita. Beneath its guise doth lie the SceGxm graphics API, bound and wrapped that Vulkan's ways might yet be imitated upon this ancient machine.
Much shall it strive to bring forth, though not all things may be summoned so easily. Certain features may prove beyond mortal effort, their making too arduous, or their nature ill-suited to the vessel.
From its forging cometh a .suprx file, fit to be taken up and used by homebrew creations.
Yet heed this: ere thou wouldst build it, the Vita SDK must first be installed, and the path unto it made known through the VITASDK environment variable.
zig build psvk --release=[fast|safe|small] -Duse-llvm=true
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.
This codebase is maintained chiefly upon mine own Git forge, though thou may also find an active mirror upon GitHub.


