1# Vulkan Capabilities 2 3[Vulkan](https://www.vulkan.org/) is a set of 2D and 3D rendering APIs that feature cross-platform and high-performance. OpenHarmony SDK now supports Vulkan v1.4.309, and the available version depends on the GPU driver implementation. 4 5## Supported Standard APIs 6 7The table below lists the supported APIs of Vulkan v1.4.309. 8 9|Type|Symbol| 10| --- | --- | 11|FUNC|vkAcquireNextImage2KHR| 12|FUNC|vkAcquireNextImageKHR| 13|FUNC|vkAllocateCommandBuffers| 14|FUNC|vkAllocateDescriptorSets| 15|FUNC|vkAllocateMemory| 16|FUNC|vkBeginCommandBuffer| 17|FUNC|vkBindBufferMemory| 18|FUNC|vkBindBufferMemory2| 19|FUNC|vkBindImageMemory| 20|FUNC|vkBindImageMemory2| 21|FUNC|vkCmdBeginQuery| 22|FUNC|vkCmdBeginRendering| 23|FUNC|vkCmdBeginRenderPass| 24|FUNC|vkCmdBeginRenderPass2| 25|FUNC|vkCmdBindDescriptorSets| 26|FUNC|vkCmdBindDescriptorSets2| 27|FUNC|vkCmdBindIndexBuffer| 28|FUNC|vkCmdBindIndexBuffer2| 29|FUNC|vkCmdBindPipeline| 30|FUNC|vkCmdBindVertexBuffers| 31|FUNC|vkCmdBindVertexBuffers2| 32|FUNC|vkCmdBlitImage| 33|FUNC|vkCmdBlitImage2| 34|FUNC|vkCmdClearAttachments| 35|FUNC|vkCmdClearColorImage| 36|FUNC|vkCmdClearDepthStencilImage| 37|FUNC|vkCmdCopyBuffer| 38|FUNC|vkCmdCopyBuffer2| 39|FUNC|vkCmdCopyBufferToImage| 40|FUNC|vkCmdCopyBufferToImage2| 41|FUNC|vkCmdCopyImage| 42|FUNC|vkCmdCopyImage2| 43|FUNC|vkCmdCopyImageToBuffer| 44|FUNC|vkCmdCopyImageToBuffer2| 45|FUNC|vkCmdCopyQueryPoolResults| 46|FUNC|vkCmdDispatch| 47|FUNC|vkCmdDispatchBase| 48|FUNC|vkCmdDispatchIndirect| 49|FUNC|vkCmdDraw| 50|FUNC|vkCmdDrawIndexed| 51|FUNC|vkCmdDrawIndexedIndirect| 52|FUNC|vkCmdDrawIndexedIndirectCount| 53|FUNC|vkCmdDrawIndirect| 54|FUNC|vkCmdDrawIndirectCount| 55|FUNC|vkCmdEndQuery| 56|FUNC|vkCmdEndRendering| 57|FUNC|vkCmdEndRenderPass| 58|FUNC|vkCmdEndRenderPass2| 59|FUNC|vkCmdExecuteCommands| 60|FUNC|vkCmdFillBuffer| 61|FUNC|vkCmdNextSubpass| 62|FUNC|vkCmdNextSubpass2| 63|FUNC|vkCmdPipelineBarrier| 64|FUNC|vkCmdPipelineBarrier2| 65|FUNC|vkCmdPushConstants| 66|FUNC|vkCmdPushConstants2| 67|FUNC|vkCmdPushDescriptorSet| 68|FUNC|vkCmdPushDescriptorSet2| 69|FUNC|vkCmdPushDescriptorSetWithTemplate| 70|FUNC|vkCmdPushDescriptorSetWithTemplate2| 71|FUNC|vkCmdResetEvent| 72|FUNC|vkCmdResetEvent2| 73|FUNC|vkCmdResetQueryPool| 74|FUNC|vkCmdResolveImage| 75|FUNC|vkCmdResolveImage2| 76|FUNC|vkCmdSetBlendConstants| 77|FUNC|vkCmdSetCullMode| 78|FUNC|vkCmdSetDepthBias| 79|FUNC|vkCmdSetDepthBiasEnable| 80|FUNC|vkCmdSetDepthBounds| 81|FUNC|vkCmdSetDepthBoundsTestEnable| 82|FUNC|vkCmdSetDepthCompareOp| 83|FUNC|vkCmdSetDepthTestEnable| 84|FUNC|vkCmdSetDepthWriteEnable| 85|FUNC|vkCmdSetDeviceMask| 86|FUNC|vkCmdSetEvent| 87|FUNC|vkCmdSetEvent2| 88|FUNC|vkCmdSetFrontFace| 89|FUNC|vkCmdSetLineStipple| 90|FUNC|vkCmdSetLineWidth| 91|FUNC|vkCmdSetPrimitiveRestartEnable| 92|FUNC|vkCmdSetPrimitiveTopology| 93|FUNC|vkCmdSetRasterizerDiscardEnable| 94|FUNC|vkCmdSetRenderingAttachmentLocations| 95|FUNC|vkCmdSetRenderingInputAttachmentIndices| 96|FUNC|vkCmdSetScissor| 97|FUNC|vkCmdSetScissorWithCount| 98|FUNC|vkCmdSetStencilCompareMask| 99|FUNC|vkCmdSetStencilOp| 100|FUNC|vkCmdSetStencilReference| 101|FUNC|vkCmdSetStencilTestEnable| 102|FUNC|vkCmdSetStencilWriteMask| 103|FUNC|vkCmdSetViewport| 104|FUNC|vkCmdSetViewportWithCount| 105|FUNC|vkCmdUpdateBuffer| 106|FUNC|vkCmdWaitEvents| 107|FUNC|vkCmdWaitEvents2| 108|FUNC|vkCmdWriteTimestamp| 109|FUNC|vkCmdWriteTimestamp2| 110|FUNC|vkCopyImageToImage| 111|FUNC|vkCopyImageToMemory| 112|FUNC|vkCopyMemoryToImage| 113|FUNC|vkCreateBuffer| 114|FUNC|vkCreateBufferView| 115|FUNC|vkCreateCommandPool| 116|FUNC|vkCreateComputePipelines| 117|FUNC|vkCreateDescriptorPool| 118|FUNC|vkCreateDescriptorSetLayout| 119|FUNC|vkCreateDescriptorUpdateTemplate| 120|FUNC|vkCreateDevice| 121|FUNC|vkCreateDisplayModeKHR| 122|FUNC|vkCreateDisplayPlaneSurfaceKHR| 123|FUNC|vkCreateEvent| 124|FUNC|vkCreateFence| 125|FUNC|vkCreateFramebuffer| 126|FUNC|vkCreateGraphicsPipelines| 127|FUNC|vkCreateHeadlessSurfaceEXT| 128|FUNC|vkCreateImage| 129|FUNC|vkCreateImageView| 130|FUNC|vkCreateInstance| 131|FUNC|vkCreatePipelineCache| 132|FUNC|vkCreatePipelineLayout| 133|FUNC|vkCreatePrivateDataSlot| 134|FUNC|vkCreateQueryPool| 135|FUNC|vkCreateRenderPass| 136|FUNC|vkCreateRenderPass2| 137|FUNC|vkCreateSampler| 138|FUNC|vkCreateSamplerYcbcrConversion| 139|FUNC|vkCreateSemaphore| 140|FUNC|vkCreateShaderModule| 141|FUNC|vkCreateSharedSwapchainsKHR| 142|FUNC|vkCreateSwapchainKHR| 143|FUNC|vkCreateWin32SurfaceKHR| 144|FUNC|vkDestroyBuffer| 145|FUNC|vkDestroyBufferView| 146|FUNC|vkDestroyCommandPool| 147|FUNC|vkDestroyDescriptorPool| 148|FUNC|vkDestroyDescriptorSetLayout| 149|FUNC|vkDestroyDescriptorUpdateTemplate| 150|FUNC|vkDestroyDevice| 151|FUNC|vkDestroyEvent| 152|FUNC|vkDestroyFence| 153|FUNC|vkDestroyFramebuffer| 154|FUNC|vkDestroyImage| 155|FUNC|vkDestroyImageView| 156|FUNC|vkDestroyInstance| 157|FUNC|vkDestroyPipeline| 158|FUNC|vkDestroyPipelineCache| 159|FUNC|vkDestroyPipelineLayout| 160|FUNC|vkDestroyPrivateDataSlot| 161|FUNC|vkDestroyQueryPool| 162|FUNC|vkDestroyRenderPass| 163|FUNC|vkDestroySampler| 164|FUNC|vkDestroySamplerYcbcrConversion| 165|FUNC|vkDestroySemaphore| 166|FUNC|vkDestroyShaderModule| 167|FUNC|vkDestroySurfaceKHR| 168|FUNC|vkDestroySwapchainKHR| 169|FUNC|vkDeviceWaitIdle| 170|FUNC|vkEndCommandBuffer| 171|FUNC|vkEnumerateDeviceExtensionProperties| 172|FUNC|vkEnumerateDeviceLayerProperties| 173|FUNC|vkEnumerateInstanceExtensionProperties| 174|FUNC|vkEnumerateInstanceLayerProperties| 175|FUNC|vkEnumerateInstanceVersion| 176|FUNC|vkEnumeratePhysicalDeviceGroups| 177|FUNC|vkEnumeratePhysicalDevices| 178|FUNC|vkFlushMappedMemoryRanges| 179|FUNC|vkFreeCommandBuffers| 180|FUNC|vkFreeDescriptorSets| 181|FUNC|vkFreeMemory| 182|FUNC|vkGetBufferDeviceAddress| 183|FUNC|vkGetBufferMemoryRequirements| 184|FUNC|vkGetBufferMemoryRequirements2| 185|FUNC|vkGetBufferOpaqueCaptureAddress| 186|FUNC|vkGetDescriptorSetLayoutSupport| 187|FUNC|vkGetDeviceBufferMemoryRequirements| 188|FUNC|vkGetDeviceGroupPeerMemoryFeatures| 189|FUNC|vkGetDeviceGroupPresentCapabilitiesKHR| 190|FUNC|vkGetDeviceGroupSurfacePresentModesKHR| 191|FUNC|vkGetDeviceImageMemoryRequirements| 192|FUNC|vkGetDeviceImageSparseMemoryRequirements| 193|FUNC|vkGetDeviceImageSubresourceLayout| 194|FUNC|vkGetDeviceMemoryCommitment| 195|FUNC|vkGetDeviceMemoryOpaqueCaptureAddress| 196|FUNC|vkGetDeviceProcAddr| 197|FUNC|vkGetDeviceQueue| 198|FUNC|vkGetDeviceQueue2| 199|FUNC|vkGetDisplayModeProperties2KHR| 200|FUNC|vkGetDisplayModePropertiesKHR| 201|FUNC|vkGetDisplayPlaneCapabilities2KHR| 202|FUNC|vkGetDisplayPlaneCapabilitiesKHR| 203|FUNC|vkGetDisplayPlaneSupportedDisplaysKHR| 204|FUNC|vkGetEventStatus| 205|FUNC|vkGetFenceStatus| 206|FUNC|vkGetImageMemoryRequirements| 207|FUNC|vkGetImageMemoryRequirements2| 208|FUNC|vkGetImageSparseMemoryRequirements| 209|FUNC|vkGetImageSparseMemoryRequirements2| 210|FUNC|vkGetImageSubresourceLayout| 211|FUNC|vkGetImageSubresourceLayout2| 212|FUNC|vkGetInstanceProcAddr| 213|FUNC|vkGetPhysicalDeviceDisplayPlaneProperties2KHR| 214|FUNC|vkGetPhysicalDeviceDisplayPlanePropertiesKHR| 215|FUNC|vkGetPhysicalDeviceDisplayProperties2KHR| 216|FUNC|vkGetPhysicalDeviceDisplayPropertiesKHR| 217|FUNC|vkGetPhysicalDeviceExternalBufferProperties| 218|FUNC|vkGetPhysicalDeviceExternalFenceProperties| 219|FUNC|vkGetPhysicalDeviceExternalSemaphoreProperties| 220|FUNC|vkGetPhysicalDeviceFeatures| 221|FUNC|vkGetPhysicalDeviceFeatures2| 222|FUNC|vkGetPhysicalDeviceFormatProperties| 223|FUNC|vkGetPhysicalDeviceFormatProperties2| 224|FUNC|vkGetPhysicalDeviceImageFormatProperties| 225|FUNC|vkGetPhysicalDeviceImageFormatProperties2| 226|FUNC|vkGetPhysicalDeviceMemoryProperties| 227|FUNC|vkGetPhysicalDeviceMemoryProperties2| 228|FUNC|vkGetPhysicalDevicePresentRectanglesKHR| 229|FUNC|vkGetPhysicalDeviceProperties| 230|FUNC|vkGetPhysicalDeviceProperties2| 231|FUNC|vkGetPhysicalDeviceQueueFamilyProperties| 232|FUNC|vkGetPhysicalDeviceQueueFamilyProperties2| 233|FUNC|vkGetPhysicalDeviceSparseImageFormatProperties| 234|FUNC|vkGetPhysicalDeviceSparseImageFormatProperties2| 235|FUNC|vkGetPhysicalDeviceSurfaceCapabilities2KHR| 236|FUNC|vkGetPhysicalDeviceSurfaceCapabilitiesKHR| 237|FUNC|vkGetPhysicalDeviceSurfaceFormats2KHR| 238|FUNC|vkGetPhysicalDeviceSurfaceFormatsKHR| 239|FUNC|vkGetPhysicalDeviceSurfacePresentModesKHR| 240|FUNC|vkGetPhysicalDeviceSurfaceSupportKHR| 241|FUNC|vkGetPhysicalDeviceToolProperties| 242|FUNC|vkGetPhysicalDeviceWin32PresentationSupportKHR| 243|FUNC|vkGetPipelineCacheData| 244|FUNC|vkGetPrivateData| 245|FUNC|vkGetQueryPoolResults| 246|FUNC|vkGetRenderAreaGranularity| 247|FUNC|vkGetRenderingAreaGranularity| 248|FUNC|vkGetSemaphoreCounterValue| 249|FUNC|vkGetSwapchainImagesKHR| 250|FUNC|vkInvalidateMappedMemoryRanges| 251|FUNC|vkMapMemory| 252|FUNC|vkMapMemory2| 253|FUNC|vkMergePipelineCaches| 254|FUNC|vkQueueBindSparse| 255|FUNC|vkQueuePresentKHR| 256|FUNC|vkQueueSubmit| 257|FUNC|vkQueueSubmit2| 258|FUNC|vkQueueWaitIdle| 259|FUNC|vkResetCommandBuffer| 260|FUNC|vkResetCommandPool| 261|FUNC|vkResetDescriptorPool| 262|FUNC|vkResetEvent| 263|FUNC|vkResetFences| 264|FUNC|vkResetQueryPool| 265|FUNC|vkSetEvent| 266|FUNC|vkSetPrivateData| 267|FUNC|vkSignalSemaphore| 268|FUNC|vkTransitionImageLayout| 269|FUNC|vkTrimCommandPool| 270|FUNC|vkUnmapMemory| 271|FUNC|vkUnmapMemory2| 272|FUNC|vkUpdateDescriptorSets| 273|FUNC|vkUpdateDescriptorSetWithTemplate| 274|FUNC|vkWaitForFences| 275|FUNC|vkWaitSemaphores| 276 277## Extended APIs in OpenHarmony 278 279In addition to the standard APIs, OpenHarmony provides extended APIs for creating a Vulkan surface using **OHNativeWindow** and obtaining **OH_NativeBuffer** and **OH_NativeBuffer** properties. 280 281|Type|Symbol| 282| --- | --- | 283|FUNC|vkCreateSurfaceOHOS| 284|FUNC|vkGetNativeBufferPropertiesOHOS| 285|FUNC|vkGetMemoryNativeBufferOHOS| 286|FUNC|vkGetSwapchainGrallocUsageOHOS| 287|FUNC|vkAcquireImageOHOS| 288|FUNC|vkQueueSignalReleaseImageOHOS| 289 290For details about the extended APIs, see [Vulkan Module](_vulkan.md). 291