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