Skip to content

Latest commit

 

History

History
205 lines (195 loc) · 26.5 KB

README.md

File metadata and controls

205 lines (195 loc) · 26.5 KB

Vulkan Status

Trace and Replay

Vulkan is currently WIP. Many samples, and applications work correctly, but some bugs may still be present.

Mid-Execution Capture

Mid-Execution capture allows an application to be traced starting at an arbitrary point in time.

If tracing from the command line this can be done with

gapit trace -start-defer

When using the GUI, this can be acheived by unchecking Trace from Beginning

Subcommands

When visualizing the tree of Commands, every VkQueueSubmit is expanded into a list of the commands that are run during that submission. From there you can query information about any call in the program.

Performance

We are still tuning performance for Vulkan in GAPID. For Posix based platforms we handle persistently mapped coherent memory efficiently, but for Windows this is currently in progress. Large blocks of mapped coherent memory can greatly reduce replay performance and increase trace size.

Test applications

We use a set of Test Applications to validate whether or not Vulkan support is functioning. This repository contains applications that use most parts of the API, and will be expanded as more interesting and tricky uses of the API are found.

Current Support

The current status of support for the Vulkan API on a method by method basis are as follows.

Command Name Capture Mid-Execution Subcommands
vkAllocateCommandBuffers
vkCreateDevice
vkCreateInstance
vkDestroyDevice
vkDestroyInstance
vkEnumerateDeviceExtensionProperties
vkEnumerateDeviceLayerProperties
vkEnumerateInstanceExtensionProperties
vkEnumerateInstanceLayerProperties
vkEnumeratePhysicalDevices
vkFreeCommandBuffers
vkGetDeviceProcAddr
vkGetDeviceQueue
vkGetInstanceProcAddr
vkGetPhysicalDeviceSparseImageFormatProperties
vkGetPhysicalDeviceFeatures
vkGetPhysicalDeviceFormatProperties
vkGetPhysicalDeviceImageFormatProperties
vkGetPhysicalDeviceMemoryProperties
vkGetPhysicalDeviceProperties
vkGetPhysicalDeviceQueueFamilyProperties
vkAcquireNextImageKHR
vkAllocateDescriptorSets
vkAllocateMemory
vkBeginCommandBuffer
vkBindBufferMemory
vkBindImageMemory
vkCmdBeginQuery
vkCmdBeginRenderPass
vkCmdBindDescriptorSets
vkCmdBindIndexBuffer
vkCmdBindPipeline
vkCmdBindVertexBuffers
vkCmdBlitImage
vkCmdClearAttachments
vkCmdClearColorImage
vkCmdClearDepthStencilImage
vkCmdCopyBuffer
vkCmdCopyBufferToImage
vkCmdCopyImage
vkCmdCopyImageToBuffer
vkCmdCopyQueryPoolResults
vkCmdDispatch
vkCmdDispatchIndirect
vkCmdDraw
vkCmdDrawIndexed
vkCmdDrawIndexedIndirect
vkCmdDrawIndirect
vkCmdEndQuery
vkCmdEndRenderPass
vkCmdExecuteCommands ◻️
vkCmdFillBuffer
vkCmdNextSubpass
vkCmdPipelineBarrier
vkCmdPushConstants
vkCmdResetEvent
vkCmdResetQueryPool
vkCmdResolveImage
vkCmdSetBlendConstants
vkCmdSetDepthBias
vkCmdSetDepthBounds
vkCmdSetEvent
vkCmdSetLineWidth
vkCmdSetScissor
vkCmdSetStencilCompareMask
vkCmdSetStencilReference
vkCmdSetStencilWriteMask
vkCmdSetViewport
vkCmdUpdateBuffer
vkCmdWaitEvents
vkCmdWriteTimestamp
vkCreateAndroidSurfaceKHR
vkCreateBuffer
vkCreateBufferView
vkCreateCommandPool
vkCreateComputePipelines
vkCreateDescriptorPool
vkCreateDescriptorSetLayout
vkCreateDisplayModeKHR ◻️ ◻️
vkCreateDisplayPlaneSurfaceKHR ◻️ ◻️
vkCreateEvent
vkCreateFramebuffer
vkCreateGraphicsPipelines
vkCreateImage
vkCreateImageView
vkCreateMirSurfaceKHR
vkCreatePipelineCache
vkCreatePipelineLayout
vkCreateQueryPool
vkCreateRenderPass
vkCreateSampler
vkCreateSemaphore
vkCreateShaderModule
vkCreateSharedSwapchainsKHR ◻️ ◻️
vkCreateSwapchainKHR
vkCreateWaylandSurfaceKHR
vkCreateWin32SurfaceKHR
vkCreateXcbSurfaceKHR
vkCreateXlibSurfaceKHR
vkDestroyBuffer
vkDestroyBufferView
vkDestroyCommandPool
vkDestroyDescriptorPool
vkDestroyDescriptorSetLayout
vkDestroyEvent
vkDestroyFramebuffer
vkDestroyImage
vkDestroyImageView
vkDestroyPipeline
vkDestroyPipelineCache
vkDestroyPipelineLayout
vkDestroyQueryPool
vkDestroyRenderPass
vkDestroySampler
vkDestroySemaphore
vkDestroyShaderModule
vkDestroySwapchainKHR
vkDeviceWaitIdle
vkEndCommandBuffer
vkFlushMappedMemoryRanges
vkFreeDescriptorSets
vkFreeMemory
vkGetBufferMemoryRequirements
vkGetDeviceMemoryCommitment ◻️
vkGetDisplayModePropertiesKHR ◻️
vkGetDisplayPlaneCapabilitiesKHR ◻️
vkGetDisplayPlaneSupportedDisplaysKHR ◻️
vkGetEventStatus
vkGetFenceStatus
vkGetImageMemoryRequirements
vkGetImageSparseMemoryRequirements
vkGetImageSubresourceLayout
vkGetPhysicalDeviceDisplayPlanePropertiesKHR ◻️
vkGetPhysicalDeviceDisplayPropertiesKHR ◻️
vkGetPhysicalDeviceMirPresentationSupportKHR
vkGetPhysicalDeviceSurfaceCapabilitiesKHR
vkGetPhysicalDeviceSurfaceFormatsKHR
vkGetPhysicalDeviceSurfacePresentModesKHR
vkGetPhysicalDeviceSurfaceSupportKHR
vkGetPhysicalDeviceWaylandPresentationSupportKHR
vkGetPhysicalDeviceWin32PresentationSupportKHR
vkGetPhysicalDeviceXcbPresentationSupportKHR
vkGetPhysicalDeviceXlibPresentationSupportKHR
vkGetPipelineCacheData
vkGetQueryPoolResults
vkGetRenderAreaGranularity
vkGetSwapchainImagesKHR
vkInvalidateMappedMemoryRanges
vkMapMemory
vkMergePipelineCaches
vkQueueBindSparse ◻️ ◻️
vkQueuePresentKHR
vkQueueSubmit
vkQueueWaitIdle
vkResetCommandBuffer
vkResetCommandPool
vkResetDescriptorPool
vkResetEvent
vkResetFences
vkSetEvent
vkUnmapMemory
vkUpdateDescriptorSets
vkWaitForFences
vkCreateFence
vkDestroyFence
vkDestroySurfaceKHR