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