• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# vulkan_ohos.h
2
3<!--Kit: ArkGraphics 2D-->
4<!--Subsystem: Graphic-->
5<!--Owner: @andrew1993-->
6<!--Designer: @ext4FAT1-->
7<!--Tester: @nobuggers-->
8<!--Adviser: @ge-yafang-->
9
10## 概述
11
12定义了OpenHarmony平台扩展的Vulkan接口。
13
14**引用文件:** <vulkan/vulkan_ohos.h>
15
16**库:** libvulkan.so
17
18**起始版本:** 10
19
20**相关模块:** [Vulkan](capi-vulkan.md)
21
22## 汇总
23
24### 结构体
25
26| 名称                                                                                      | typedef关键字                         | 描述                               |
27|-----------------------------------------------------------------------------------------|------------------------------------|----------------------------------|
28| [VkSurfaceCreateInfoOHOS](capi-vulkan-vksurfacecreateinfoohos.md)                       | VkSurfaceCreateInfoOHOS            | 包含创建Vulkan Surface时必要的参数。        |
29| [VkNativeBufferUsageOHOS](capi-vulkan-vknativebufferusageohos.md)                       | VkNativeBufferUsageOHOS            | 提供OpenHarmony NativeBuffer用途的说明。 |
30| [VkNativeBufferPropertiesOHOS](capi-vulkan-vknativebufferpropertiesohos.md)             | VkNativeBufferPropertiesOHOS       | 包含了NativeBuffer的属性。              |
31| [VkNativeBufferFormatPropertiesOHOS](capi-vulkan-vknativebufferformatpropertiesohos.md) | VkNativeBufferFormatPropertiesOHOS | 包含了NativeBuffer的一些格式属性。          |
32| [VkImportNativeBufferInfoOHOS](capi-vulkan-vkimportnativebufferinfoohos.md)             | VkImportNativeBufferInfoOHOS       | 包含了OH_NativeBuffer结构体的指针。        |
33| [VkMemoryGetNativeBufferInfoOHOS](capi-vulkan-vkmemorygetnativebufferinfoohos.md)       | VkMemoryGetNativeBufferInfoOHOS    | 用于从Vulkan内存中获取OH_NativeBuffer。   |
34| [VkExternalFormatOHOS](capi-vulkan-vkexternalformatohos.md)                             | VkExternalFormatOHOS               | 表示外部定义的格式标识符。                    |
35| [NativeWindow](capi-vulkan-nativewindow.md)                                             | OHNativeWindow                     | 本地窗口。                            |
36| [OH_NativeBuffer](capi-vulkan-oh-nativebuffer.md)                                   | -                                  | OH_NativeBuffer结构体声明。                                 |
37
38### 宏定义
39
40| 名称 | 描述 |
41| -- | -- |
42| VK_OHOS_surface 1 | OpenHarmony平台Surface扩展宏定义。<br>**起始版本:** 10 |
43| VK_OHOS_SURFACE_SPEC_VERSION      1 | OpenHarmony平台Surface扩展版本号。<br>**起始版本:** 10 |
44| VK_OHOS_SURFACE_EXTENSION_NAME    "VK_OHOS_surface" | OpenHarmony平台Surface扩展名。<br>**起始版本:** 10 |
45| VK_OHOS_external_memory 1 | OpenHarmony平台external_memory扩展宏定义。<br>**起始版本:** 10 |
46| VK_OHOS_EXTERNAL_MEMORY_SPEC_VERSION 1 | OpenHarmony平台external_memory扩展版本号。<br>**起始版本:** 10 |
47| VK_OHOS_EXTERNAL_MEMORY_EXTENSION_NAME "VK_OHOS_external_memory" | OpenHarmony平台external_memory扩展名。<br>**起始版本:** 10 |
48
49### 函数
50
51| 名称                                                                                                                                                                                                                     | typedef关键字              | 描述                          |
52|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------|-----------------------------|
53| [VkResult (VKAPI_PTR *PFN_vkCreateSurfaceOHOS)(VkInstance instance, const VkSurfaceCreateInfoOHOS* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface)](#pfn_vkcreatesurfaceohos)            | PFN_vkCreateSurfaceOHOS | 创建Vulkan Surface的函数指针定义。    |
54| [VKAPI_ATTR VkResult VKAPI_CALL vkCreateSurfaceOHOS(VkInstance instance, const VkSurfaceCreateInfoOHOS* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface)](#vkcreatesurfaceohos)           | -                       | 创建Vulkan Surface。           |
55| [VkResult (VKAPI_PTR *PFN_vkGetNativeBufferPropertiesOHOS)(VkDevice device, const struct OH_NativeBuffer* buffer, VkNativeBufferPropertiesOHOS* pProperties)](#pfn_vkgetnativebufferpropertiesohos)                    | PFN_vkGetNativeBufferPropertiesOHOS    |  获取OH_NativeBuffer属性的函数指针定义。 |
56| [VkResult (VKAPI_PTR *PFN_vkGetMemoryNativeBufferOHOS)(VkDevice device, const VkMemoryGetNativeBufferInfoOHOS* pInfo, struct OH_NativeBuffer** pBuffer)](#pfn_vkgetmemorynativebufferohos)                             | PFN_vkGetMemoryNativeBufferOHOS             |  获取OH_NativeBuffer的函数指针定义。 |
57| [VKAPI_ATTR VkResult VKAPI_CALL vkGetNativeBufferPropertiesOHOS(VkDevice device, const struct OH_NativeBuffer* buffer, VkNativeBufferPropertiesOHOS* pProperties)](#vkgetnativebufferpropertiesohos)                   | -                       | 获取OH_NativeBuffer属性。 |
58| [VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryNativeBufferOHOS(VkDevice device, const VkMemoryGetNativeBufferInfoOHOS* pInfo, struct OH_NativeBuffer** pBuffer)](#vkgetmemorynativebufferohos)                            | -                       | 获取OH_NativeBuffer。 |
59| [VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainGrallocUsageOHOS(VkDevice device, VkFormat format, VkImageUsageFlags imageUsage, uint64_t* grallocUsage)](#vkgetswapchaingrallocusageohos)                               | -                       | 根据给定的Vulkan设备、图像格式和图像使用标志, 返回适当的Gralloc(内存分配器)使用标志。 |
60| [VKAPI_ATTR VkResult VKAPI_CALL vkAcquireImageOHOS(VkDevice device, VkImage image, int32_t nativeFenceFd, VkSemaphore semaphore, VkFence fence)](#vkacquireimageohos)                                                  | -                       | 用于获取交换链图像的所有权, 并将外部信号的Fence导入到VkSemaphore对象和VkFence对象中。 |
61| [VKAPI_ATTR VkResult VKAPI_CALL vkQueueSignalReleaseImageOHOS(VkQueue queue, uint32_t waitSemaphoreCount, const VkSemaphore* pWaitSemaphores, VkImage image, int32_t* pNativeFenceFd)](#vkqueuesignalreleaseimageohos) | -                       | 当前图像使用完毕后,通过该函数向系统硬件缓冲区发出释放信号, 以便其他组件可以访问该图像。 |
62
63## 函数说明
64
65###  PFN_vkCreateSurfaceOHOS()
66
67```
68typedef VkResult (VKAPI_PTR *PFN_vkCreateSurfaceOHOS)(VkInstance instance, const VkSurfaceCreateInfoOHOS* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface)
69```
70
71**描述**
72
73创建Vulkan Surface的函数指针定义。
74
75**系统能力:** SystemCapability.Graphic.Vulkan
76
77**起始版本:** 10
78
79
80**参数:**
81
82| 参数项 | 描述 |
83| -- | -- |
84| VkInstance instance | Vulkan实例。 |
85| [const VkSurfaceCreateInfoOHOS](capi-vulkan-vksurfacecreateinfoohos.md)* pCreateInfo | 一个VkSurfaceCreateInfoOHOS结构体的指针,包含创建Vulkan Surface时必要的参数。 |
86| const VkAllocationCallbacks*   pAllocator | 用户自定义内存分配的回调函数,如果不需要可以传入NULL,接口会使用默认的内存分配函数。 |
87| VkSurfaceKHR* pSurface | 出参,用于接收创建的Vulkan Surface,类型为VkSurfaceKHR。 |
88
89**返回:**
90
91| 类型 | 说明 |
92| -- | -- |
93| VkResult  | 返回一个VkResult类型的错误码,返回值为VK_SUCCESS表示执行成功。 |
94
95### vkCreateSurfaceOHOS()
96
97```
98VKAPI_ATTR VkResult VKAPI_CALL vkCreateSurfaceOHOS(VkInstance instance, const VkSurfaceCreateInfoOHOS* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface)
99```
100
101**描述**
102
103创建Vulkan Surface。
104
105**系统能力:** SystemCapability.Graphic.Vulkan
106
107**起始版本:** 10
108
109
110**参数:**
111
112| 参数项 | 描述 |
113| -- | -- |
114| VkInstance instance | Vulkan实例。 |
115| [const VkSurfaceCreateInfoOHOS](capi-vulkan-vksurfacecreateinfoohos.md)* pCreateInfo | 一个VkSurfaceCreateInfoOHOS结构体的指针,包含创建Vulkan Surface时必要的参数。 |
116| const VkAllocationCallbacks* pAllocator | 用户自定义内存分配的回调函数,如果不需要可以传入NULL,接口会使用默认的内存分配函数。 |
117| VkSurfaceKHR* pSurface | 出参,用于接收创建的Vulkan Surface,类型为VkSurfaceKHR。 |
118
119**返回:**
120
121| 类型 | 说明 |
122| -- | -- |
123| VkResult  | 返回一个VkResult类型的错误码,具体返回类型如下:<br> 返回VK_SUCCESS,表示执行成功。<br> 返回VK_ERROR_OUT_OF_HOST_MEMORY,表示分配VkSurfaceKHR内存失败。<br> 返回VK_ERROR_SURFACE_LOST_KHR,表示操作NativeWindow失败。 |
124
125### PFN_vkGetNativeBufferPropertiesOHOS()
126
127```
128typedef VkResult (VKAPI_PTR *PFN_vkGetNativeBufferPropertiesOHOS)(VkDevice device, const struct OH_NativeBuffer* buffer, VkNativeBufferPropertiesOHOS* pProperties)
129```
130
131**描述**
132
133获取OH_NativeBuffer属性的函数指针定义。
134
135**系统能力:** SystemCapability.Graphic.Vulkan
136
137**起始版本:** 10
138
139
140**参数:**
141
142| 参数项                                                                    | 描述 |
143|------------------------------------------------------------------------| -- |
144| VkDevice device                                                        | VkDevice对象。 |
145| const [struct OH_NativeBuffer](capi-vulkan-oh-nativebuffer.md)* buffer | OH_NativeBuffer结构体指针。 |
146| [VkNativeBufferPropertiesOHOS](capi-vulkan-vknativebufferpropertiesohos.md)* pProperties                          | 用于接收OH_NativeBuffer属性的结构体。 |
147
148**返回:**
149
150| 类型 | 说明 |
151| -- | -- |
152| VkResult | 返回一个VkResult类型的错误码,返回值为VK_SUCCESS表示执行成功。 |
153
154### PFN_vkGetMemoryNativeBufferOHOS()
155
156```
157typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryNativeBufferOHOS)(VkDevice device, const VkMemoryGetNativeBufferInfoOHOS* pInfo, struct OH_NativeBuffer** pBuffer)
158```
159
160**描述**
161
162获取OH_NativeBuffer的函数指针定义。
163
164**系统能力:** SystemCapability.Graphic.Vulkan
165
166**起始版本:** 10
167
168
169**参数:**
170
171| 参数项 | 描述 |
172| -- | -- |
173| VkDevice device | VkDevice对象。 |
174| [const VkMemoryGetNativeBufferInfoOHOS](capi-vulkan-vkmemorygetnativebufferinfoohos.md)* pInfo | VkMemoryGetNativeBufferInfoOHOS结构体对象。 |
175| [struct OH_NativeBuffer](capi-vulkan-oh-nativebuffer.md)** pBuffer | 用于接收获取到的OH_NativeBuffer。 |
176
177**返回:**
178
179| 类型 | 说明 |
180| -- | -- |
181| VkResult | 返回一个VkResult类型的错误码,返回值为VK_SUCCESS表示执行成功。 |
182
183### vkGetNativeBufferPropertiesOHOS()
184
185```
186VKAPI_ATTR VkResult VKAPI_CALL vkGetNativeBufferPropertiesOHOS(VkDevice device, const struct OH_NativeBuffer* buffer, VkNativeBufferPropertiesOHOS* pProperties)
187```
188
189**描述**
190
191获取OH_NativeBuffer属性。
192
193**系统能力:** SystemCapability.Graphic.Vulkan
194
195**起始版本:** 10
196
197
198**参数:**
199
200| 参数项 | 描述 |
201| -- | -- |
202| VkDevice device | VkDevice对象。 |
203| const [struct OH_NativeBuffer](capi-vulkan-oh-nativebuffer.md)* buffer | OH_NativeBuffer结构体指针。 |
204| [VkNativeBufferPropertiesOHOS](capi-vulkan-vknativebufferpropertiesohos.md)* pProperties | 用于接收OH_NativeBuffer属性的结构体。 |
205
206**返回:**
207
208| 类型 | 说明 |
209| -- | -- |
210| VkResult | 返回一个VkResult类型的错误码,具体返回类型如下:<br> 返回VK_SUCCESS,表示执行成功。<br> 返回VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR,表示入参存在异常。<br> 返回VK_ERROR_OUT_OF_DEVICE_MEMORY,表示设备内存不足。 |
211
212### vkGetMemoryNativeBufferOHOS()
213
214```
215VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryNativeBufferOHOS(VkDevice device, const VkMemoryGetNativeBufferInfoOHOS* pInfo, struct OH_NativeBuffer** pBuffer)
216```
217
218**描述**
219
220获取OH_NativeBuffer。
221
222**系统能力:** SystemCapability.Graphic.Vulkan
223
224**起始版本:** 10
225
226
227**参数:**
228
229| 参数项 | 描述 |
230| -- | -- |
231| VkDevice device | VkDevice对象。 |
232| [const VkMemoryGetNativeBufferInfoOHOS](capi-vulkan-vkmemorygetnativebufferinfoohos.md)* pInfo | VkMemoryGetNativeBufferInfoOHOS结构体对象。 |
233| [struct OH_NativeBuffer](capi-vulkan-oh-nativebuffer.md)** pBuffer | 用于接收获取到的OH_NativeBuffer。 |
234
235**返回:**
236
237| 类型 | 说明 |
238| -- | -- |
239| VkResult | 返回一个VkResult类型的错误码,具体返回类型如下:<br> 返回VK_SUCCESS,表示执行成功。<br> 返回VK_ERROR_OUT_OF_HOST_MEMORY,表示pInfo入参异常,或获取的pBuffer异常。 |
240
241### vkGetSwapchainGrallocUsageOHOS()
242
243```
244VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainGrallocUsageOHOS(VkDevice device, VkFormat format, VkImageUsageFlags imageUsage, uint64_t* grallocUsage)
245```
246
247**描述**
248
249根据给定的Vulkan设备、图像格式和图像使用标志, 返回适当的Gralloc(内存分配器)使用标志。
250
251**系统能力:** SystemCapability.Graphic.Vulkan
252
253**起始版本:** 10
254
255
256**参数:**
257
258| 参数项 | 描述 |
259| -- | -- |
260| VkDevice device | VkDevice对象。 |
261| VkFormat format | 图像格式。 |
262| VkImageUsageFlags imageUsage | 图像使用标志。 |
263| uint64_t* grallocUsage | 出参, 返回Gralloc(内存分配器)使用标志。 |
264
265**返回:**
266
267| 类型 | 说明 |
268| -- | -- |
269| VkResult | 返回一个VkResult类型的错误码,具体返回类型如下:<br> 返回VK_SUCCESS,表示执行成功。<br> 返回VK_ERROR_INITIALIZATION_FAILED,表示入参异常。 |
270
271### vkAcquireImageOHOS()
272
273```
274VKAPI_ATTR VkResult VKAPI_CALL vkAcquireImageOHOS(VkDevice device, VkImage image, int32_t nativeFenceFd, VkSemaphore semaphore, VkFence fence)
275```
276
277**描述**
278
279用于获取交换链图像的所有权, 并将外部信号的Fence导入到VkSemaphore对象和VkFence对象中。
280
281**系统能力:** SystemCapability.Graphic.Vulkan
282
283**起始版本:** 10
284
285
286**参数:**
287
288| 参数项 | 描述 |
289| -- | -- |
290| VkDevice device | VkDevice对象。 |
291| VkImage image | 要获取的Vulkan图像。 |
292| int32_t nativeFenceFd | 原生Fence的文件描述符。 |
293| VkSemaphore semaphore | 表示图像可用状态的Vulkan Semaphore(信号量)。 |
294| VkFence fence | 用于在图像获取完成时进行同步的Vulkan Fence。 |
295
296**返回:**
297
298| 类型 | 说明 |
299| -- | -- |
300| VkResult | 返回一个VkResult类型的错误码,具体返回类型如下:<br> 返回VK_SUCCESS,表示执行成功。<br> 返回VK_ERROR_OUT_OF_HOST_MEMORY,表示主机内存不足。 |
301
302### vkQueueSignalReleaseImageOHOS()
303
304```
305VKAPI_ATTR VkResult VKAPI_CALL vkQueueSignalReleaseImageOHOS(VkQueue queue, uint32_t waitSemaphoreCount, const VkSemaphore* pWaitSemaphores, VkImage image, int32_t* pNativeFenceFd)
306```
307
308**描述**
309
310当前图像使用完毕后,通过该函数向系统硬件缓冲区发出释放信号, 以便其他组件可以访问该图像。
311
312**系统能力:** SystemCapability.Graphic.Vulkan
313
314**起始版本:** 10
315
316
317**参数:**
318
319| 参数项 | 描述 |
320| -- | -- |
321| VkQueue queue | Vulkan队列的句柄。 |
322| uint32_t waitSemaphoreCount | 等待Semaphore(信号量)的数量。 |
323| const VkSemaphore* pWaitSemaphores | 指向等待Semaphore(信号量)数组的指针。 |
324| VkImage image | 要释放的Vulkan图像句柄。 |
325| int32_t* pNativeFenceFd | 指向Fence的文件描述符的指针。 |
326
327**返回:**
328
329| 类型 | 说明 |
330| -- | -- |
331| VkResult | 返回一个VkResult类型的错误码,具体返回类型如下:<br> 返回VK_SUCCESS,表示执行成功。<br> 返回VK_ERROR_DEVICE_LOST,表示Vulkan设备链接丢失。<br> 返回VK_ERROR_OUT_OF_HOST_MEMORY,表示主机内存不足。 |
332
333
334