- Zig 95%
- C 5%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
Some checks failed
Mirror GitGud refs to GitHub / mirror (push) Failing after 6s
[Soft] Build and Test / build (push) Successful in 4m51s
[Phi] Build and Test / build (push) Successful in 4m52s
Docs and IR / build (push) Successful in 23m45s
[Flint] Build and Test / build (push) Successful in 24m39s
|
||
| .forgejo/workflows | ||
| .github/workflows | ||
| src | ||
| test | ||
| .clang-format | ||
| .gitignore | ||
| build.zig | ||
| build.zig.zon | ||
| compile_flags.txt | ||
| LICENSE | ||
| logo.png | ||
| README.md | ||
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 | ✅ 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 [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]
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.
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 | ✅ 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 |
| 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 [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 | ✅ 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 |
| 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 (PlayStation Vita)
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.
Build
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]
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.