• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef VULKAN_OHOS_H_
2 #define VULKAN_OHOS_H_ 1
3 
4 /*
5 ** Copyright 2015-2022 The Khronos Group Inc.
6 **
7 ** SPDX-License-Identifier: Apache-2.0
8 */
9 
10 /*
11 ** This header is generated from the Khronos Vulkan XML API Registry.
12 **
13 */
14 
15 
16 #ifdef __cplusplus
17 extern "C" {
18 #endif
19 
20 
21 
22 #define VK_OHOS_surface 1
23 typedef struct NativeWindow OHNativeWindow;
24 #define VK_OHOS_SURFACE_SPEC_VERSION      1
25 #define VK_OHOS_SURFACE_EXTENSION_NAME    "VK_OHOS_surface"
26 typedef VkFlags VkSurfaceCreateFlagsOHOS;
27 typedef struct VkSurfaceCreateInfoOHOS {
28     VkStructureType             sType;
29     const void*                 pNext;
30     VkSurfaceCreateFlagsOHOS    flags;
31     OHNativeWindow*             window;
32 } VkSurfaceCreateInfoOHOS;
33 
34 typedef VkResult (VKAPI_PTR *PFN_vkCreateSurfaceOHOS)(VkInstance instance, const VkSurfaceCreateInfoOHOS* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
35 
36 #ifndef VK_NO_PROTOTYPES
37 VKAPI_ATTR VkResult VKAPI_CALL vkCreateSurfaceOHOS(
38     VkInstance                                  instance,
39     const VkSurfaceCreateInfoOHOS*              pCreateInfo,
40     const VkAllocationCallbacks*                pAllocator,
41     VkSurfaceKHR*                               pSurface);
42 #endif
43 
44 
45 #define VK_OHOS_native_buffer 1
46 struct OHBufferHandle;
47 #define VK_OHOS_NATIVE_BUFFER_SPEC_VERSION 1
48 #define VK_OHOS_NATIVE_BUFFER_EXTENSION_NAME "VK_OHOS_native_buffer"
49 
50 typedef enum VkSwapchainImageUsageFlagBitsOHOS {
51     VK_SWAPCHAIN_IMAGE_USAGE_SHARED_BIT_OHOS = 0x00000001,
52     VK_SWAPCHAIN_IMAGE_USAGE_FLAG_BITS_MAX_ENUM_OHOS = 0x7FFFFFFF
53 } VkSwapchainImageUsageFlagBitsOHOS;
54 typedef VkFlags VkSwapchainImageUsageFlagsOHOS;
55 typedef struct VkNativeBufferOHOS {
56     VkStructureType    sType;
57     const void*        pNext;
58     struct OHBufferHandle*      handle;
59 } VkNativeBufferOHOS;
60 
61 typedef struct VkSwapchainImageCreateInfoOHOS {
62     VkStructureType                   sType;
63     const void*                       pNext;
64     VkSwapchainImageUsageFlagsOHOS    usage;
65 } VkSwapchainImageCreateInfoOHOS;
66 
67 typedef struct VkPhysicalDevicePresentationPropertiesOHOS {
68     VkStructureType    sType;
69     const void*        pNext;
70     VkBool32           sharedImage;
71 } VkPhysicalDevicePresentationPropertiesOHOS;
72 
73 /**
74  * @brief this type is deprecated, please use PFN_vkAcquireImageOHOS instead
75  * @deprecated
76  */
77 typedef VkResult (VKAPI_PTR *PFN_vkSetNativeFenceFdOpenHarmony)(VkDevice device, int32_t nativeFenceFd, VkSemaphore semaphore, VkFence fence);
78 
79 /**
80  * @brief this type is deprecated, please use PFN_vkQueueSignalReleaseImageOHOS instead
81  * @deprecated
82  */
83 typedef VkResult (VKAPI_PTR *PFN_vkGetNativeFenceFdOpenHarmony)(VkQueue queue, uint32_t waitSemaphoreCount, const VkSemaphore* pWaitSemaphores, VkImage image, int32_t* pNativeFenceFd);
84 typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainGrallocUsageOHOS)(VkDevice device, VkFormat format, VkImageUsageFlags imageUsage, uint64_t* grallocUsage);
85 typedef VkResult (VKAPI_PTR *PFN_vkAcquireImageOHOS)(VkDevice device, VkImage image, int32_t nativeFenceFd, VkSemaphore semaphore, VkFence fence);
86 typedef VkResult (VKAPI_PTR *PFN_vkQueueSignalReleaseImageOHOS)(VkQueue queue, uint32_t waitSemaphoreCount, const VkSemaphore* pWaitSemaphores, VkImage image, int32_t* pNativeFenceFd);
87 
88 #ifndef VK_NO_PROTOTYPES
89 /**
90  * @brief this interface is deprecated, please use vkAcquireImageOHOS instead
91  * @deprecated
92  */
93 VKAPI_ATTR VkResult VKAPI_CALL vkSetNativeFenceFdOpenHarmony(
94     VkDevice                                    device,
95     int32_t                                     nativeFenceFd,
96     VkSemaphore                                 semaphore,
97     VkFence                                     fence);
98 
99 /**
100  * @brief this interface is deprecated, please use vkQueueSignalReleaseImageOHOS instead
101  * @deprecated
102  */
103 VKAPI_ATTR VkResult VKAPI_CALL vkGetNativeFenceFdOpenHarmony(
104     VkQueue                                     queue,
105     uint32_t                                    waitSemaphoreCount,
106     const VkSemaphore*                          pWaitSemaphores,
107     VkImage                                     image,
108     int32_t*                                    pNativeFenceFd);
109 
110 VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainGrallocUsageOHOS(
111     VkDevice                                    device,
112     VkFormat                                    format,
113     VkImageUsageFlags                           imageUsage,
114     uint64_t*                                   grallocUsage);
115 
116 VKAPI_ATTR VkResult VKAPI_CALL vkAcquireImageOHOS(
117     VkDevice                                    device,
118     VkImage                                     image,
119     int32_t                                     nativeFenceFd,
120     VkSemaphore                                 semaphore,
121     VkFence                                     fence);
122 
123 VKAPI_ATTR VkResult VKAPI_CALL vkQueueSignalReleaseImageOHOS(
124     VkQueue                                     queue,
125     uint32_t                                    waitSemaphoreCount,
126     const VkSemaphore*                          pWaitSemaphores,
127     VkImage                                     image,
128     int32_t*                                    pNativeFenceFd);
129 #endif
130 
131 
132 #define VK_OHOS_external_memory 1
133 struct OH_NativeBuffer;
134 #define VK_OHOS_EXTERNAL_MEMORY_SPEC_VERSION 1
135 #define VK_OHOS_EXTERNAL_MEMORY_EXTENSION_NAME "VK_OHOS_external_memory"
136 typedef struct VkNativeBufferUsageOHOS {
137     VkStructureType    sType;
138     void*              pNext;
139     uint64_t           OHOSNativeBufferUsage;
140 } VkNativeBufferUsageOHOS;
141 
142 typedef struct VkNativeBufferPropertiesOHOS {
143     VkStructureType    sType;
144     void*              pNext;
145     VkDeviceSize       allocationSize;
146     uint32_t           memoryTypeBits;
147 } VkNativeBufferPropertiesOHOS;
148 
149 typedef struct VkNativeBufferFormatPropertiesOHOS {
150     VkStructureType                  sType;
151     void*                            pNext;
152     VkFormat                         format;
153     uint64_t                         externalFormat;
154     VkFormatFeatureFlags             formatFeatures;
155     VkComponentMapping               samplerYcbcrConversionComponents;
156     VkSamplerYcbcrModelConversion    suggestedYcbcrModel;
157     VkSamplerYcbcrRange              suggestedYcbcrRange;
158     VkChromaLocation                 suggestedXChromaOffset;
159     VkChromaLocation                 suggestedYChromaOffset;
160 } VkNativeBufferFormatPropertiesOHOS;
161 
162 typedef struct VkImportNativeBufferInfoOHOS {
163     VkStructureType            sType;
164     const void*                pNext;
165     struct OH_NativeBuffer*    buffer;
166 } VkImportNativeBufferInfoOHOS;
167 
168 typedef struct VkMemoryGetNativeBufferInfoOHOS {
169     VkStructureType    sType;
170     const void*        pNext;
171     VkDeviceMemory     memory;
172 } VkMemoryGetNativeBufferInfoOHOS;
173 
174 typedef struct VkExternalFormatOHOS {
175     VkStructureType    sType;
176     void*              pNext;
177     uint64_t           externalFormat;
178 } VkExternalFormatOHOS;
179 
180 typedef VkResult (VKAPI_PTR *PFN_vkGetNativeBufferPropertiesOHOS)(VkDevice device, const struct OH_NativeBuffer* buffer, VkNativeBufferPropertiesOHOS* pProperties);
181 typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryNativeBufferOHOS)(VkDevice device, const VkMemoryGetNativeBufferInfoOHOS* pInfo, struct OH_NativeBuffer** pBuffer);
182 
183 #ifndef VK_NO_PROTOTYPES
184 VKAPI_ATTR VkResult VKAPI_CALL vkGetNativeBufferPropertiesOHOS(
185     VkDevice                                    device,
186     const struct OH_NativeBuffer*               buffer,
187     VkNativeBufferPropertiesOHOS*               pProperties);
188 
189 VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryNativeBufferOHOS(
190     VkDevice                                    device,
191     const VkMemoryGetNativeBufferInfoOHOS*      pInfo,
192     struct OH_NativeBuffer**                    pBuffer);
193 #endif
194 
195 #ifdef __cplusplus
196 }
197 #endif
198 
199 #endif
200