standardize OH extension api

Signed-off-by: shegangbin <shegangbin1@huawei.com>
Change-Id: I3ab59ea53b407620ad35de18048ffd30693c76a6
This commit is contained in:
shegangbin 2023-05-30 02:58:59 +00:00
parent 54c01b623e
commit 3684f76713
14 changed files with 334 additions and 349 deletions

View File

@ -27,7 +27,7 @@ config("vulkan_headers_config") {
defines = []
if (is_ohos) {
defines += [ "VK_USE_PLATFORM_OHOS_OPENHARMONY" ]
defines += [ "VK_USE_PLATFORM_OHOS" ]
}
if (is_win) {

View File

@ -22,23 +22,23 @@ Vulkan Loader 会提供标准 Vulkan API 函数符号、OpenHarmony WSI扩展的
Vulkan-Loader成功加载Vulkan驱动程序的必要条件
1.要参考[LoaderDriverInterface](https://gitee.com/openharmony/third_party_vulkan-loader/blob/master/docs/LoaderDriverInterface.md)实现对应的接口;
2.提供驱动程序描述json文件参考[加载GPU驱动](https://gitee.com/openharmony/third_party_vulkan-loader/blob/master/README_OpenHarmony.md#%E5%8A%A0%E8%BD%BDgpu%E9%A9%B1%E5%8A%A8);
3.实现OpenHarmony平台的扩展包括`VK_OHOS_native_buffer`和`VK_OpenHarmony_external_memory_OHOS_native_buffer`扩展。
3.实现OpenHarmony平台的扩展包括`VK_OHOS_native_buffer`和`VK_OHOS_external_memory`扩展。
## 北向应用开发者
### VK_OpenHarmony_OHOS_surface 扩展
### VK_OHOS_surface 扩展
接口vkCreateOHOSSurfaceOpenHarmony
VkResult vkCreateOHOSSurfaceOpenHarmony(
接口vkCreateSurfaceOHOS
VkResult vkCreateSurfaceOHOS(
VkInstance instance,
const VkOHOSSurfaceCreateInfoOpenHarmony pCreateInfo,
const VkSurfaceCreateInfoOHOS pCreateInfo,
const VkAllocationCallbacks pAllocator,
VkSurfaceKHR pSurface)
参数:
instance是要关联Surface的实例。
pCreateInfo是一个指向结构的指针该VkOHOSSurfaceCreateInfoOpenHarmony 结构包含影响表面对象创建的参数。
pCreateInfo是一个指向结构的指针该VkSurfaceCreateInfoOHOS 结构包含影响表面对象创建的参数。
pAllocator是用于在没有更多特定内存分配器可用时做为Surface对象分配的分配器。
pSurface是一个指向VkSurfaceKHR句柄的指针在该句柄中返回创建的Surface对象。

View File

@ -123,7 +123,7 @@ typedef enum {
VK_ICD_WSI_PLATFORM_VI,
VK_ICD_WSI_PLATFORM_GGP,
VK_ICD_WSI_PLATFORM_SCREEN,
VK_ICD_WSI_PLATFORM_OPENHARMONY,
VK_ICD_WSI_PLATFORM_OHOS,
} VkIcdWsiPlatform;
typedef struct {
@ -243,10 +243,10 @@ typedef struct {
} VkIcdSurfaceScreen;
#endif // VK_USE_PLATFORM_SCREEN_QNX
#ifdef VK_USE_PLATFORM_OHOS_OPENHARMONY
#ifdef VK_USE_PLATFORM_OHOS
typedef struct {
VkIcdSurfaceBase base;
struct NativeWindow *window;
} VkIcdSurfaceOpenHarmony;
#endif // VK_USE_PLATFORM_OHOS_OPENHARMONY
} VkIcdSurfaceOHOS;
#endif // VK_USE_PLATFORM_OHOS
#endif // VKICD_H

View File

@ -84,13 +84,12 @@
#include "vulkan_screen.h"
#endif
#ifdef VK_USE_PLATFORM_OHOS_OPENHARMONY
#include "buffer_handle.h"
#include "vulkan_ohos.h"
#endif
#ifdef VK_ENABLE_BETA_EXTENSIONS
#include "vulkan_beta.h"
#endif
#ifdef VK_USE_PLATFORM_OHOS
#include "vulkan_ohos.h"
#endif
#endif // VULKAN_H_

View File

@ -2991,17 +2991,17 @@ namespace VULKAN_HPP_NAMESPACE
}
# endif /*VK_USE_PLATFORM_WIN32_KHR*/
# if defined( VK_USE_PLATFORM_OHOS_OPENHARMONY )
//=== VK_OpenHarmony_OHOS_surface ===
# if defined( VK_USE_PLATFORM_OHOS )
//=== VK_OHOS_surface ===
VkResult vkCreateOHOSSurfaceOpenHarmony(VkInstance instance,
const VkOHOSSurfaceCreateInfoOpenHarmony * pCreateInfo,
VkResult vkCreateSurfaceOHOS(VkInstance instance,
const VkSurfaceCreateInfoOHOS * pCreateInfo,
const VkAllocationCallbacks * pAllocator,
VkSurfaceKHR * pSurface ) const VULKAN_HPP_NOEXCEPT
{
return ::vkCreateOHOSSurfaceOpenHarmony( instance, pCreateInfo, pAllocator, pSurface );
return ::vkCreateSurfaceOHOS( instance, pCreateInfo, pAllocator, pSurface );
}
# endif /*VK_USE_PLATFORM_OHOS_OPENHARMONY*/
# endif /*VK_USE_PLATFORM_OHOS*/
//=== VK_EXT_debug_report ===
@ -12413,12 +12413,12 @@ namespace VULKAN_HPP_NAMESPACE
PFN_dummy vkGetPhysicalDeviceWin32PresentationSupportKHR_placeholder = 0;
#endif /*VK_USE_PLATFORM_WIN32_KHR*/
#if defined( VK_USE_PLATFORM_OHOS_OPENHARMONY )
//=== VK_OpenHarmony_OHOS_surface ===
PFN_vkCreateOHOSSurfaceOpenHarmony vkCreateOHOSSurfaceOpenHarmony = 0;
#if defined( VK_USE_PLATFORM_OHOS )
//=== VK_OHOS_surface ===
PFN_vkCreateSurfaceOHOS vkCreateSurfaceOHOS = 0;
#else
PFN_dummy vkCreateOHOSSurfaceOpenHarmony_placeholder = 0;
#endif /*VK_USE_PLATFORM_OHOS_OPENHARMONY*/
PFN_dummy vkCreateSurfaceOHOS_placeholder = 0;
#endif /*VK_USE_PLATFORM_OHOS*/
//=== VK_EXT_debug_report ===
PFN_vkCreateDebugReportCallbackEXT vkCreateDebugReportCallbackEXT = 0;
@ -13518,11 +13518,11 @@ namespace VULKAN_HPP_NAMESPACE
PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceWin32PresentationSupportKHR" ) );
#endif /*VK_USE_PLATFORM_WIN32_KHR*/
#if defined( VK_USE_PLATFORM_OHOS_OPENHARMONY )
//=== VK_OpenHarmony_OHOS_surface ===
vkCreateOHOSSurfaceOpenHarmony =
PFN_vkCreateOHOSSurfaceOpenHarmony( vkGetInstanceProcAddr( instance, "vkCreateOHOSSurfaceOpenHarmony" ) );
#endif /*VK_USE_PLATFORM_OHOS_OPENHARMONY*/
#if defined( VK_USE_PLATFORM_OHOS )
//=== VK_OHOS_surface ===
vkCreateSurfaceOHOS =
PFN_vkCreateSurfaceOHOS( vkGetInstanceProcAddr( instance, "vkCreateSurfaceOHOS" ) );
#endif /*VK_USE_PLATFORM_OHOS*/
//=== VK_EXT_debug_report ===
vkCreateDebugReportCallbackEXT = PFN_vkCreateDebugReportCallbackEXT( vkGetInstanceProcAddr( instance, "vkCreateDebugReportCallbackEXT" ) );

View File

@ -422,16 +422,6 @@ typedef enum VkStructureType {
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES = 1000413001,
VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS = 1000413002,
VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS = 1000413003,
VK_STRUCTURE_TYPE_OHOS_SURFACE_CREATE_INFO_OPENHARMONY = 1000451000,
VK_STRUCTURE_TYPE_OHOS_NATIVE_BUFFER_USAGE_OPENHARMONY = 1000452000,
VK_STRUCTURE_TYPE_OHOS_NATIVE_BUFFER_PROPERTIES_OPENHARMONY = 1000452001,
VK_STRUCTURE_TYPE_OHOS_NATIVE_BUFFER_FORMAT_PROPERTIES_OPENHARMONY = 1000452002,
VK_STRUCTURE_TYPE_IMPORT_OHOS_NATIVE_BUFFER_INFO_OPENHARMONY = 1000452003,
VK_STRUCTURE_TYPE_MEMORY_GET_OHOS_NATIVE_BUFFER_INFO_OPENHARMONY = 1000452004,
VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_OPENHARMONY = 1000452005,
VK_STRUCTURE_TYPE_NATIVE_BUFFER_OPENHARMONY = 1000453001,
VK_STRUCTURE_TYPE_SWAPCHAIN_IMAGE_CREATE_INFO_OPENHARMONY = 1000453002,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENTATION_PROPERTIES_OPENHARMONY = 1000453003,
VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000,
VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001,
VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007,
@ -1054,6 +1044,16 @@ typedef enum VkStructureType {
VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT = 1000351002,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM = 1000497000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM = 1000497001,
VK_STRUCTURE_TYPE_SURFACE_CREATE_INFO_OHOS = 1000451000,
VK_STRUCTURE_TYPE_NATIVE_BUFFER_OHOS = 1000453001,
VK_STRUCTURE_TYPE_SWAPCHAIN_IMAGE_CREATE_INFO_OHOS = 1000453002,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENTATION_PROPERTIES_OHOS = 1000453003,
VK_STRUCTURE_TYPE_NATIVE_BUFFER_USAGE_OHOS = 1000452000,
VK_STRUCTURE_TYPE_NATIVE_BUFFER_PROPERTIES_OHOS = 1000452001,
VK_STRUCTURE_TYPE_NATIVE_BUFFER_FORMAT_PROPERTIES_OHOS = 1000452002,
VK_STRUCTURE_TYPE_IMPORT_NATIVE_BUFFER_INFO_OHOS = 1000452003,
VK_STRUCTURE_TYPE_MEMORY_GET_NATIVE_BUFFER_INFO_OHOS = 1000452004,
VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_OHOS = 1000452005,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES,
VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
@ -4936,7 +4936,7 @@ typedef enum VkExternalMemoryHandleTypeFlagBits {
VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = 0x00000100,
VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA = 0x00000800,
VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV = 0x00001000,
VK_EXTERNAL_MEMORY_HANDLE_TYPE_OHOS_NATIVE_BUFFER_BIT_OPENHARMONY = 0x00002000,
VK_EXTERNAL_MEMORY_HANDLE_TYPE_OHOS_NATIVE_BUFFER_BIT_OHOS = 0x00002000,
VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT,
VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT,
VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,

View File

@ -3078,10 +3078,10 @@ namespace VULKAN_HPP_NAMESPACE
};
#endif /*VK_USE_PLATFORM_WIN32_KHR*/
#if defined( VK_USE_PLATFORM_OHOS_OPENHARMONY )
//=== VK_OpenHarmony_ohos_surface ===
#if defined( VK_USE_PLATFORM_OHOS )
//=== VK_OHOS_surface ===
enum class OHOSSurfaceCreateFlagsBitsOpenHarmony : VkOHOSSurfaceCreateFlagsOpenHarmony
enum class OHOSSurfaceCreateFlagsBitsOpenHarmony : VkSurfaceCreateFlagsOHOS
{
};
@ -3089,7 +3089,7 @@ namespace VULKAN_HPP_NAMESPACE
{
return "(void)";
}
#endif /*VK_USE_PLATFORM_OHOS_OPENHARMONY*/
#endif /*VK_USE_PLATFORM_OHOS*/
//=== VK_EXT_debug_report ===
@ -5915,16 +5915,16 @@ namespace VULKAN_HPP_NAMESPACE
using Win32SurfaceCreateFlagsKHR = Flags<Win32SurfaceCreateFlagBitsKHR>;
#endif /*VK_USE_PLATFORM_WIN32_KHR*/
#if defined( VK_USE_PLATFORM_OHOS_OPENHARMONY )
//=== VK_OpenHarmony_OHOS_surface ===
#if defined( VK_USE_PLATFORM_OHOS )
//=== VK_OHOS_surface ===
using OHOSSurfaceCreateFlagsOpenHarmony = Flags<OHOSSurfaceCreateFlagsBitsOpenHarmony>;
using SurfaceCreateFlagsOHOS = Flags<OHOSSurfaceCreateFlagsBitsOpenHarmony>;
VULKAN_HPP_INLINE std::string to_string( OHOSSurfaceCreateFlagsOpenHarmony )
VULKAN_HPP_INLINE std::string to_string( SurfaceCreateFlagsOHOS )
{
return "{}";
}
#endif /*VK_USE_PLATFORM_OHOS_OPENHARMONY*/
#endif /*VK_USE_PLATFORM_OHOS*/
//=== VK_EXT_debug_report ===

View File

@ -9042,20 +9042,20 @@ namespace VULKAN_HPP_NAMESPACE
}
#endif /*VK_USE_PLATFORM_WIN32_KHR*/
#if defined( VK_USE_PLATFORM_OHOS_OPENHARMONY )
//=== VK_OpenHarmony_OHOS_surface ===
#if defined( VK_USE_PLATFORM_OHOS )
//=== VK_OHOS_surface ===
template <typename Dispatch>
VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result
Instance::createOHOSSurfaceOpenHarmony( const VULKAN_HPP_NAMESPACE::OHOSSurfaceCreateInfoOpenHarmony * pCreateInfo,
Instance::createSurfaceOHOS( const VULKAN_HPP_NAMESPACE::SurfaceCreateInfoOHOS * pCreateInfo,
const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator,
VULKAN_HPP_NAMESPACE::SurfaceKHR * pSurface,
Dispatch const & d ) const VULKAN_HPP_NOEXCEPT
{
VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION );
return static_cast<Result>(
d.vkCreateOHOSSurfaceOpenHarmony( m_instance,
reinterpret_cast<const VkOHOSSurfaceCreateInfoOpenHarmony *>( pCreateInfo ),
d.vkCreateSurfaceOHOS( m_instance,
reinterpret_cast<const VkSurfaceCreateInfoOHOS *>( pCreateInfo ),
reinterpret_cast<const VkAllocationCallbacks *>( pAllocator ),
reinterpret_cast<VkSurfaceKHR *>( pSurface ) ) );
}
@ -9064,44 +9064,44 @@ namespace VULKAN_HPP_NAMESPACE
template <typename Dispatch>
VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE
typename ResultValueType<VULKAN_HPP_NAMESPACE::SurfaceKHR>::type
Instance::createOHOSSurfaceOpenHarmony( const VULKAN_HPP_NAMESPACE::OHOSSurfaceCreateInfoOpenHarmony & createInfo,
Instance::createSurfaceOHOS( const VULKAN_HPP_NAMESPACE::SurfaceCreateInfoOHOS & createInfo,
Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator,
Dispatch const & d ) const
{
VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION );
VULKAN_HPP_NAMESPACE::SurfaceKHR surface;
Result result = static_cast<Result>(
d.vkCreateOHOSSurfaceOpenHarmony( m_instance,
reinterpret_cast<const VkOHOSSurfaceCreateInfoOpenHarmony *>( &createInfo ),
d.vkCreateSurfaceOHOS( m_instance,
reinterpret_cast<const VkSurfaceCreateInfoOHOS *>( &createInfo ),
reinterpret_cast<const VkAllocationCallbacks *>(
static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
reinterpret_cast<VkSurfaceKHR *>( &surface ) ) );
return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createOHOSSurfaceOpenHarmony" );
return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createSurfaceOHOS" );
}
# ifndef VULKAN_HPP_NO_SMART_HANDLE
template <typename Dispatch>
VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE
typename ResultValueType<UniqueHandle<VULKAN_HPP_NAMESPACE::SurfaceKHR, Dispatch>>::type
Instance::createOHOSSurfaceOpenHarmonyUnique( const VULKAN_HPP_NAMESPACE::OHOSSurfaceCreateInfoOpenHarmony & createInfo,
Instance::createSurfaceOHOSUnique( const VULKAN_HPP_NAMESPACE::SurfaceCreateInfoOHOS & createInfo,
Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator,
Dispatch const & d ) const
{
VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION );
VULKAN_HPP_NAMESPACE::SurfaceKHR surface;
Result result = static_cast<Result>(
d.vkCreateOHOSSurfaceOpenHarmony( m_instance,
reinterpret_cast<const VkOHOSSurfaceCreateInfoOpenHarmony *>( &createInfo ),
d.vkCreateSurfaceOHOS( m_instance,
reinterpret_cast<const VkSurfaceCreateInfoOHOS *>( &createInfo ),
reinterpret_cast<const VkAllocationCallbacks *>(
static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
reinterpret_cast<VkSurfaceKHR *>( &surface ) ) );
ObjectDestroy<Instance, Dispatch> deleter( *this, allocator, d );
return createResultValue<VULKAN_HPP_NAMESPACE::SurfaceKHR, Dispatch>(
result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createOHOSSurfaceOpenHarmonyUnique", deleter );
result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createSurfaceOHOSUnique", deleter );
}
# endif /*VULKAN_HPP_NO_SMART_HANDLE*/
# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
#endif /*VK_USE_PLATFORM_OHOS_OPENHARMONY*/
#endif /*VK_USE_PLATFORM_OHOS*/
//=== VK_EXT_debug_report ===

View File

@ -520,10 +520,10 @@ namespace VULKAN_HPP_NAMESPACE
struct Win32SurfaceCreateInfoKHR;
#endif /*VK_USE_PLATFORM_WIN32_KHR*/
#if defined( VK_USE_PLATFORM_OHOS_OPENHARMONY )
//=== VK_OpenHarmony_OHOS_surface ===
struct OHOSSurfaceCreateInfoOpenHarmony;
#endif /*VK_USE_PLATFORM_OHOS_OPENHARMONY*/
#if defined( VK_USE_PLATFORM_OHOS )
//=== VK_OHOS_surface ===
struct SurfaceCreateInfoOHOS;
#endif /*VK_USE_PLATFORM_OHOS*/
//=== VK_EXT_debug_report ===
struct DebugReportCallbackCreateInfoEXT;
@ -13836,19 +13836,19 @@ namespace VULKAN_HPP_NAMESPACE
# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
#endif /*VK_USE_PLATFORM_WIN32_KHR*/
#if defined( VK_USE_PLATFORM_OHOS_OPENHARMONY )
//=== VK_OpenHarmony_OHOS_surface ===
#if defined( VK_USE_PLATFORM_OHOS )
//=== VK_OHOS_surface ===
template <typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE>
VULKAN_HPP_NODISCARD Result
createOHOSSurfaceOpenHarmony( const VULKAN_HPP_NAMESPACE::OHOSSurfaceCreateInfoOpenHarmony * pCreateInfo,
createSurfaceOHOS( const VULKAN_HPP_NAMESPACE::SurfaceCreateInfoOHOS * pCreateInfo,
const VULKAN_HPP_NAMESPACE::AllocationCallbacks * pAllocator,
VULKAN_HPP_NAMESPACE::SurfaceKHR * pSurface,
Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT;
# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
template <typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE>
VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType<VULKAN_HPP_NAMESPACE::SurfaceKHR>::type
createOHOSSurfaceOpenHarmony( const VULKAN_HPP_NAMESPACE::OHOSSurfaceCreateInfoOpenHarmony & createInfo,
createSurfaceOHOS( const VULKAN_HPP_NAMESPACE::SurfaceCreateInfoOHOS & createInfo,
Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator
VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT,
Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const;
@ -13856,13 +13856,13 @@ namespace VULKAN_HPP_NAMESPACE
template <typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE>
VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE
typename ResultValueType<UniqueHandle<VULKAN_HPP_NAMESPACE::SurfaceKHR, Dispatch>>::type
createOHOSSurfaceOpenHarmonyUnique( const VULKAN_HPP_NAMESPACE::OHOSSurfaceCreateInfoOpenHarmony & createInfo,
createSurfaceOHOSUnique( const VULKAN_HPP_NAMESPACE::SurfaceCreateInfoOHOS & createInfo,
Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator
VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT,
Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const;
# endif /*VULKAN_HPP_NO_SMART_HANDLE*/
# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
#endif /*VK_USE_PLATFORM_OHOS_OPENHARMONY*/
#endif /*VK_USE_PLATFORM_OHOS*/
//=== VK_EXT_debug_report ===

View File

@ -2,7 +2,7 @@
#define VULKAN_OHOS_H_ 1
/*
** Copyright 2015-2021 The Khronos Group Inc.
** Copyright 2015-2022 The Khronos Group Inc.
**
** SPDX-License-Identifier: Apache-2.0
*/
@ -17,121 +17,104 @@
extern "C" {
#endif
#define VK_OpenHarmony_OHOS_surface 1
typedef struct NativeWindow OHNativeWindow;
#define VK_OPENHARMONY_OHOS_SURFACE_SPEC_VERSION 1
#define VK_OPENHARMONY_OHOS_SURFACE_EXTENSION_NAME "VK_OpenHarmony_OHOS_surface"
// VK_STRUCTURE_TYPE_OHOS_SURFACE_CREATE_INFO_OPENHARMONY
typedef VkFlags VkOHOSSurfaceCreateFlagsOpenHarmony;
typedef struct VkOHOSSurfaceCreateInfoOpenHarmony {
VkStructureType sType;
const void* pNext;
VkOHOSSurfaceCreateFlagsOpenHarmony flags;
OHNativeWindow* window;
} VkOHOSSurfaceCreateInfoOpenHarmony;
typedef VkResult (VKAPI_PTR *PFN_vkCreateOHOSSurfaceOpenHarmony)(VkInstance instance, const VkOHOSSurfaceCreateInfoOpenHarmony* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
#define VK_OHOS_surface 1
typedef struct NativeWindow OHNativeWindow;
#define VK_OHOS_SURFACE_SPEC_VERSION 1
#define VK_OHOS_SURFACE_EXTENSION_NAME "VK_OHOS_surface"
typedef VkFlags VkSurfaceCreateFlagsOHOS;
typedef struct VkSurfaceCreateInfoOHOS {
VkStructureType sType;
const void* pNext;
VkSurfaceCreateFlagsOHOS flags;
OHNativeWindow* window;
} VkSurfaceCreateInfoOHOS;
typedef VkResult (VKAPI_PTR *PFN_vkCreateSurfaceOHOS)(VkInstance instance, const VkSurfaceCreateInfoOHOS* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
#ifndef VK_NO_PROTOTYPES
VKAPI_ATTR VkResult VKAPI_CALL vkCreateOHOSSurfaceOpenHarmony(
VKAPI_ATTR VkResult VKAPI_CALL vkCreateSurfaceOHOS(
VkInstance instance,
const VkOHOSSurfaceCreateInfoOpenHarmony* pCreateInfo,
const VkSurfaceCreateInfoOHOS* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkSurfaceKHR* pSurface);
#endif
#define VK_OHOS_native_buffer 1
#define VK_OHOS_native_buffer 1
struct OHBufferHandle;
#define VK_OHOS_NATIVE_BUFFER_SPEC_VERSION 1
#define VK_OHOS_NATIVE_BUFFER_EXTENSION_NAME "VK_OHOS_native_buffer"
typedef VkFlags VkSwapchainImageUsageFlagsOpenHarmony;
typedef enum VkSwapchainImageUsageFlagBitsOpenHarmony {
VK_SWAPCHAIN_IMAGE_USAGE_SHARED_BIT_OPENHARMONY = 0x00000001,
VK_SWAPCHAIN_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
} VkSwapchainImageUsageFlagBitsOpenHarmony;
typedef enum VkSwapchainImageUsageFlagBitsOHOS {
VK_SWAPCHAIN_IMAGE_USAGE_SHARED_BIT_OHOS = 0x00000001,
VK_SWAPCHAIN_IMAGE_USAGE_FLAG_BITS_MAX_ENUM_OHOS = 0x7FFFFFFF
} VkSwapchainImageUsageFlagBitsOHOS;
typedef VkFlags VkSwapchainImageUsageFlagsOHOS;
typedef struct VkNativeBufferOHOS {
VkStructureType sType;
const void* pNext;
struct OHBufferHandle* handle;
} VkNativeBufferOHOS;
typedef struct {
typedef struct VkSwapchainImageCreateInfoOHOS {
VkStructureType sType;
const void* pNext;
BufferHandle* handle;
} VkNativeBufferOpenHarmony;
VkSwapchainImageUsageFlagsOHOS usage;
} VkSwapchainImageCreateInfoOHOS;
typedef struct {
VkStructureType sType;
const void* pNext;
VkSwapchainImageUsageFlagsOpenHarmony usage;
} VkSwapchainImageCreateInfoOpenHarmony;
typedef struct VkPhysicalDevicePresentationPropertiesOHOS {
VkStructureType sType;
const void* pNext;
VkBool32 sharedImage;
} VkPhysicalDevicePresentationPropertiesOHOS;
typedef struct {
VkStructureType sType;
const void* pNext;
VkBool32 sharedImage;
} VkPhysicalDevicePresentationPropertiesOpenHarmony;
typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainGrallocUsageOpenHarmony)(
VkDevice device,
VkFormat format,
VkImageUsageFlags imageUsage,
uint64_t* grallocUsage);
typedef VkResult (VKAPI_PTR *PFN_vkSetNativeFenceFdOpenHarmony)(
VkDevice device,
int32_t nativeFenceFd,
VkSemaphore semaphore,
VkFence fence);
typedef VkResult (VKAPI_PTR *PFN_vkGetNativeFenceFdOpenHarmony)(
VkQueue queue,
uint32_t waitSemaphoreCount,
const VkSemaphore* pWaitSemaphores,
VkImage image,
int32_t* pNativeFenceFd);
typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainGrallocUsageOHOS)(VkDevice device, VkFormat format, VkImageUsageFlags imageUsage, uint64_t* grallocUsage);
typedef VkResult (VKAPI_PTR *PFN_vkAcquireImageOHOS)(VkDevice device, VkImage image, int32_t nativeFenceFd, VkSemaphore semaphore, VkFence fence);
typedef VkResult (VKAPI_PTR *PFN_vkQueueSignalReleaseImageOHOS)(VkQueue queue, uint32_t waitSemaphoreCount, const VkSemaphore* pWaitSemaphores, VkImage image, int32_t* pNativeFenceFd);
#ifndef VK_NO_PROTOTYPES
VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainGrallocUsageOHOS(
VkDevice device,
VkFormat format,
VkImageUsageFlags imageUsage,
uint64_t* grallocUsage);
VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainGrallocUsageOpenHarmony(
VkDevice device,
VkFormat format,
VkImageUsageFlags imageUsage,
uint64_t* grallocUsage
);
VKAPI_ATTR VkResult VKAPI_CALL vkSetNativeFenceFdOpenHarmony(
VkDevice device,
int32_t nativeFenceFd,
VkSemaphore semaphore,
VkFence fence
);
VKAPI_ATTR VkResult VKAPI_CALL vkGetNativeFenceFdOpenHarmony(
VkQueue queue,
uint32_t waitSemaphoreCount,
const VkSemaphore* pWaitSemaphores,
VkImage image,
int32_t* pNativeFenceFd
);
VKAPI_ATTR VkResult VKAPI_CALL vkAcquireImageOHOS(
VkDevice device,
VkImage image,
int32_t nativeFenceFd,
VkSemaphore semaphore,
VkFence fence);
VKAPI_ATTR VkResult VKAPI_CALL vkQueueSignalReleaseImageOHOS(
VkQueue queue,
uint32_t waitSemaphoreCount,
const VkSemaphore* pWaitSemaphores,
VkImage image,
int32_t* pNativeFenceFd);
#endif
#define VK_OpenHarmony_external_memory_OHOS_native_buffer 1
#define VK_OHOS_external_memory 1
struct OH_NativeBuffer;
#define VK_OPENHARMONY_EXTERNAL_MEMORY_OHOS_NATIVE_BUFFER_SPEC_VERSION 1
#define VK_OPENHARMONY_EXTERNAL_MEMORY_OHOS_NATIVE_BUFFER_EXTENSION_NAME "VK_OpenHarmony_external_memory_OHOS_native_buffer"
typedef struct VkOHOSNativeBufferUsageOpenHarmony {
#define VK_OHOS_EXTERNAL_MEMORY_SPEC_VERSION 1
#define VK_OHOS_EXTERNAL_MEMORY_EXTENSION_NAME "VK_OHOS_external_memory"
typedef struct VkNativeBufferUsageOHOS {
VkStructureType sType;
void* pNext;
uint64_t OHOSNativeBufferUsage;
} VkOHOSNativeBufferUsageOpenHarmony;
} VkNativeBufferUsageOHOS;
typedef struct VkOHOSNativeBufferPropertiesOpenHarmony {
typedef struct VkNativeBufferPropertiesOHOS {
VkStructureType sType;
void* pNext;
VkDeviceSize allocationSize;
uint32_t memoryTypeBits;
} VkOHOSNativeBufferPropertiesOpenHarmony;
} VkNativeBufferPropertiesOHOS;
typedef struct VkOHOSNativeBufferFormatPropertiesOpenHarmony {
typedef struct VkNativeBufferFormatPropertiesOHOS {
VkStructureType sType;
void* pNext;
VkFormat format;
@ -142,42 +125,41 @@ typedef struct VkOHOSNativeBufferFormatPropertiesOpenHarmony {
VkSamplerYcbcrRange suggestedYcbcrRange;
VkChromaLocation suggestedXChromaOffset;
VkChromaLocation suggestedYChromaOffset;
} VkOHOSNativeBufferFormatPropertiesOpenHarmony;
} VkNativeBufferFormatPropertiesOHOS;
typedef struct VkImportOHOSNativeBufferInfoOpenHarmony {
typedef struct VkImportNativeBufferInfoOHOS {
VkStructureType sType;
const void* pNext;
struct OH_NativeBuffer* buffer;
} VkImportOHOSNativeBufferInfoOpenHarmony;
} VkImportNativeBufferInfoOHOS;
typedef struct VkMemoryGetOHOSNativeBufferInfoOpenHarmony {
typedef struct VkMemoryGetNativeBufferInfoOHOS {
VkStructureType sType;
const void* pNext;
VkDeviceMemory memory;
} VkMemoryGetOHOSNativeBufferInfoOpenHarmony;
} VkMemoryGetNativeBufferInfoOHOS;
typedef struct VkExternalFormatOpenHarmony {
typedef struct VkExternalFormatOHOS {
VkStructureType sType;
void* pNext;
uint64_t externalFormat;
} VkExternalFormatOpenHarmony;
} VkExternalFormatOHOS;
typedef VkResult (VKAPI_PTR *PFN_vkGetOHOSNativeBufferPropertiesOpenHarmony)(VkDevice device, const struct OH_NativeBuffer* buffer, VkOHOSNativeBufferPropertiesOpenHarmony* pProperties);
typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryOHOSNativeBufferOpenHarmony)(VkDevice device, const VkMemoryGetOHOSNativeBufferInfoOpenHarmony* pInfo, struct OH_NativeBuffer** pBuffer);
typedef VkResult (VKAPI_PTR *PFN_vkGetNativeBufferPropertiesOHOS)(VkDevice device, const struct OH_NativeBuffer* buffer, VkNativeBufferPropertiesOHOS* pProperties);
typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryNativeBufferOHOS)(VkDevice device, const VkMemoryGetNativeBufferInfoOHOS* pInfo, struct OH_NativeBuffer** pBuffer);
#ifndef VK_NO_PROTOTYPES
VKAPI_ATTR VkResult VKAPI_CALL vkGetOHOSNativeBufferPropertiesOpenHarmony(
VKAPI_ATTR VkResult VKAPI_CALL vkGetNativeBufferPropertiesOHOS(
VkDevice device,
const struct OH_NativeBuffer* buffer,
VkOHOSNativeBufferPropertiesOpenHarmony* pProperties);
VkNativeBufferPropertiesOHOS* pProperties);
VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryOHOSNativeBufferOpenHarmony(
VkDevice device,
const VkMemoryGetOHOSNativeBufferInfoOpenHarmony* pInfo,
struct OH_NativeBuffer** pBuffer);
VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryNativeBufferOHOS(
VkDevice device,
const VkMemoryGetNativeBufferInfoOHOS* pInfo,
struct OH_NativeBuffer** pBuffer);
#endif
#ifdef __cplusplus
}
#endif

View File

@ -186,11 +186,11 @@ namespace VULKAN_HPP_NAMESPACE
vkCreateAndroidSurfaceKHR = PFN_vkCreateAndroidSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateAndroidSurfaceKHR" ) );
# endif /*VK_USE_PLATFORM_ANDROID_KHR*/
# if defined( VK_USE_PLATFORM_OHOS_OPENHARMONY )
//=== VK_OpenHarmony_OHOS_surface ===
vkCreateOHOSSurfaceOpenHarmony =
PFN_vkCreateOHOSSurfaceOpenHarmony( vkGetInstanceProcAddr( instance, "vkCreateOHOSSurfaceOpenHarmony" ) );
# endif /*VK_USE_PLATFORM_OHOS_OPENHARMONY*/
# if defined( VK_USE_PLATFORM_OHOS )
//=== VK_OHOS_surface ===
vkCreateSurfaceOHOS =
PFN_vkCreateSurfaceOHOS( vkGetInstanceProcAddr( instance, "vkCreateSurfaceOHOS" ) );
# endif /*VK_USE_PLATFORM_OHOS*/
//=== VK_KHR_device_group ===
vkGetPhysicalDevicePresentRectanglesKHR =
@ -494,12 +494,12 @@ namespace VULKAN_HPP_NAMESPACE
PFN_dummy vkCreateAndroidSurfaceKHR_placeholder = 0;
# endif /*VK_USE_PLATFORM_ANDROID_KHR*/
# if defined( VK_USE_PLATFORM_OHOS_OPENHARMONY )
//=== VK_OpenHarmony_OHOS_surface ===
PFN_vkCreateOHOSSurfaceOpenHarmony vkCreateOHOSSurfaceOpenHarmony = 0;
# if defined( VK_USE_PLATFORM_OHOS )
//=== VK_OHOS_surface ===
PFN_vkCreateSurfaceOHOS vkCreateSurfaceOHOS = 0;
# else
PFN_dummy vkCreateOHOSSurfaceOpenHarmony_placeholder = 0;
# endif /*VK_USE_PLATFORM_OHOS_OPENHARMONY*/
PFN_dummy vkCreateSurfaceOHOS_placeholder = 0;
# endif /*VK_USE_PLATFORM_OHOS*/
//=== VK_KHR_device_group ===
PFN_vkGetPhysicalDevicePresentRectanglesKHR vkGetPhysicalDevicePresentRectanglesKHR = 0;
@ -2674,13 +2674,13 @@ namespace VULKAN_HPP_NAMESPACE
VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const;
# endif /*VK_USE_PLATFORM_WIN32_KHR*/
# if defined( VK_USE_PLATFORM_OHOS_OPENHARMONY )
//=== VK_OpenHarmony_OHOS_surface ===
# if defined( VK_USE_PLATFORM_OHOS )
//=== VK_OHOS_surface ===
VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR createOHOSSurfaceOpenHarmony(
VULKAN_HPP_NAMESPACE::OHOSSurfaceCreateInfoOpenHarmony const & createInfo,
VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR createSurfaceOHOS(
VULKAN_HPP_NAMESPACE::SurfaceCreateInfoOHOS const & createInfo,
VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const;
# endif /*VK_USE_PLATFORM_OHOS_OPENHARMONY*/
# endif /*VK_USE_PLATFORM_OHOS*/
//=== VK_EXT_debug_report ===
@ -13303,16 +13303,16 @@ namespace VULKAN_HPP_NAMESPACE
}
# endif /*VK_USE_PLATFORM_WIN32_KHR*/
# if defined( VK_USE_PLATFORM_OHOS_OPENHARMONY )
//=== VK_OpenHarmony_OHOS_surface ===
# if defined( VK_USE_PLATFORM_OHOS )
//=== VK_OHOS_surface ===
VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR Instance::createOHOSSurfaceOpenHarmony(
VULKAN_HPP_NAMESPACE::OHOSSurfaceCreateInfoOpenHarmony const & createInfo,
VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR Instance::createSurfaceOHOS(
VULKAN_HPP_NAMESPACE::SurfaceCreateInfoOHOS const & createInfo,
VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
{
return VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR( *this, createInfo, allocator );
}
# endif /*VK_USE_PLATFORM_OHOS_OPENHARMONY*/
# endif /*VK_USE_PLATFORM_OHOS*/
//=== VK_EXT_debug_report ===

View File

@ -401,11 +401,12 @@ def makeGenOpts(args):
'VK_EXT_metal_objects' ], commonSuppressExtensions ],
[ 'vulkan_screen.h', [ 'VK_QNX_screen_surface' ], commonSuppressExtensions ],
[ 'vulkan_beta.h', betaRequireExtensions, betaSuppressExtensions ],
[ 'vulkan_ohos.h', [ 'VK_OpenHarmony_OHOS_surface',
'VK_OpenHarmony_external_memory_ohos_native_buffer'
[ 'vulkan_ohos.h', [ 'VK_OHOS_surface',
'VK_OHOS_external_memory',
'VK_OHOS_native_buffer'
], commonSuppressExtensions +
[ 'VK_KHR_format_feature_flags2',
] ],
[ 'VK_KHR_format_feature_flags2',
] ],
]
for platform in platforms:

View File

@ -49220,42 +49220,42 @@
}
]
},
"vkCreateOHOSSurfaceOpenHarmony": {
"(VK_KHR_surface)+(VK_OpenHarmony_OHOS_surface)": [
"vkCreateSurfaceOHOS": {
"(VK_KHR_surface)+(VK_OHOS_surface)": [
{
"vuid": "VUID-vkCreateOHOSSurfaceOpenHarmony-instance-parameter",
"vuid": "VUID-vkCreateSurfaceOHOS-instance-parameter",
"text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
},
{
"vuid": "VUID-vkCreateOHOSSurfaceOpenHarmony-pCreateInfo-parameter",
"text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkOHOSSurfaceCreateInfoOpenHarmony\">VkOHOSSurfaceCreateInfoOpenHarmony</a> structure"
"vuid": "VUID-vkCreateSurfaceOHOS-pCreateInfo-parameter",
"text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSurfaceCreateInfoOHOS\">VkSurfaceCreateInfoOHOS</a> structure"
},
{
"vuid": "VUID-vkCreateOHOSSurfaceOpenHarmony-pAllocator-parameter",
"vuid": "VUID-vkCreateSurfaceOHOS-pAllocator-parameter",
"text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure"
},
{
"vuid": "VUID-vkCreateOHOSSurfaceOpenHarmony-pSurface-parameter",
"vuid": "VUID-vkCreateSurfaceOHOS-pSurface-parameter",
"text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle"
}
]
},
"VkOHOSSurfaceCreateInfoOpenHarmony": {
"(VK_KHR_surface)+(VK_OpenHarmony_OHOS_surface)": [
"VkSurfaceCreateInfoOHOS": {
"(VK_KHR_surface)+(VK_OHOS_surface)": [
{
"vuid": "VUID-VkOHOSSurfaceCreateInfoOpenHarmony-window-01248",
"vuid": "VUID-VkSurfaceCreateInfoOHOS-window-01248",
"text": " <code>window</code> <strong class=\"purple\">must</strong> point to a valid OHOS <code>ANativeWindow</code>"
},
{
"vuid": "VUID-VkOHOSSurfaceCreateInfoOpenHarmony-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_OHOS_SURFACE_CREATE_INFO_OPENHARMONY</code>"
"vuid": "VUID-VkSurfaceCreateInfoOHOS-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_CREATE_INFO_OHOS</code>"
},
{
"vuid": "VUID-VkOHOSSurfaceCreateInfoOpenHarmony-pNext-pNext",
"vuid": "VUID-VkSurfaceCreateInfoOHOS-pNext-pNext",
"text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
},
{
"vuid": "VUID-VkOHOSSurfaceCreateInfoOpenHarmony-flags-zerobitmask",
"vuid": "VUID-VkSurfaceCreateInfoOHOS-flags-zerobitmask",
"text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
}
]

View File

@ -34,7 +34,7 @@ branch of the member gitlab server.
<platform name="ggp" protect="VK_USE_PLATFORM_GGP" comment="Google Games Platform"/>
<platform name="provisional" protect="VK_ENABLE_BETA_EXTENSIONS" comment="Enable declarations for beta/provisional extensions"/>
<platform name="screen" protect="VK_USE_PLATFORM_SCREEN_QNX" comment="QNX Screen Graphics Subsystem"/>
<platform name="OHOS" protect="VK_USE_PLATFORM_OHOS_OPENHARMONY" comment="OpenHarmony Graphics Subsystem"/>
<platform name="ohos" protect="VK_USE_PLATFORM_OHOS" comment="OpenHarmony Graphics Subsystem"/>
</platforms>
<tags comment="Vulkan vendor/author tags for extensions and layers">
@ -75,8 +75,7 @@ branch of the member gitlab server.
<tag name="JUICE" author="Juice Technologies, Inc." contact="David McCloskey @damcclos, Dean Beeler @canadacow"/>
<tag name="FB" author="Facebook, Inc" contact="Artem Bolgar @artyom17"/>
<tag name="RASTERGRID" author="RasterGrid Kft." contact="Daniel Rakos @aqnuep1"/>
<tag name="OpenHarmony" author="Huawei Technologies Co. Ltd." contact="Xindong Shi @stonehwsxd"/>
<tag name="OpenHarmony" author="Huawei Technologies Co. Ltd." contact="Zhao Zhang @andrew0229"/>
<tag name="OHOS" author="Huawei Technologies Co. Ltd." contact="Zhao Zhang @andrew0229"/>
</tags>
<types comment="Vulkan type definitions">
@ -91,6 +90,7 @@ branch of the member gitlab server.
<type category="include" name="xcb/xcb.h"/>
<type category="include" name="directfb.h"/>
<type category="include" name="zircon/types.h"/>
<type category="include" name="buffer_handle.h"/>
<type category="include" name="ggp_c/vulkan_types.h"/>
<type category="include" name="screen/screen.h"/>
<comment>
@ -129,6 +129,7 @@ branch of the member gitlab server.
<type requires="directfb.h" name="IDirectFB"/>
<type requires="directfb.h" name="IDirectFBSurface"/>
<type requires="zircon/types.h" name="zx_handle_t"/>
<type requires="buffer_handle.h" name="BufferHandle"/>
<type requires="ggp_c/vulkan_types.h" name="GgpStreamDescriptor"/>
<type requires="ggp_c/vulkan_types.h" name="GgpFrameToken"/>
<type requires="screen/screen.h" name="_screen_context"/>
@ -203,7 +204,7 @@ branch of the member gitlab server.
<type category="basetype">struct <name>ANativeWindow</name>;</type>
<type category="basetype">struct <name>AHardwareBuffer</name>;</type>
<type category="basetype">struct <name>OHNativeWindow</name>;</type>
<type category="basetype">typedef struct NativeWindow <name>OHNativeWindow</name>;</type>
<type category="basetype">struct <name>OH_NativeBuffer</name>;</type>
<type category="basetype">#ifdef __OBJC__
@class CAMetalLayer;
@ -382,7 +383,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<type category="bitmask">typedef <type>VkFlags</type> <name>VkStreamDescriptorSurfaceCreateFlagsGGP</name>;</type>
<type category="bitmask">typedef <type>VkFlags</type> <name>VkHeadlessSurfaceCreateFlagsEXT</name>;</type>
<type category="bitmask">typedef <type>VkFlags</type> <name>VkScreenSurfaceCreateFlagsQNX</name>;</type>
<type category="bitmask">typedef <type>VkFlags</type> <name>VkOHOSSurfaceCreateFlagsOpenHarmony</name>;</type>
<type category="bitmask">typedef <type>VkFlags</type> <name>VkSurfaceCreateFlagsOHOS</name>;</type>
<type requires="VkPeerMemoryFeatureFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkPeerMemoryFeatureFlags</name>;</type>
<type category="bitmask" name="VkPeerMemoryFeatureFlagsKHR" alias="VkPeerMemoryFeatureFlags"/>
<type requires="VkMemoryAllocateFlagBits" category="bitmask">typedef <type>VkFlags</type> <name>VkMemoryAllocateFlags</name>;</type>
@ -485,7 +486,8 @@ typedef void* <name>MTLSharedEvent_id</name>;
<type requires="VkVideoEncodeH265OutputModeFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeH265OutputModeFlagsEXT</name>;</type>
<type requires="VkVideoEncodeH265CtbSizeFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeH265CtbSizeFlagsEXT</name>;</type>
<type requires="VkVideoEncodeH265TransformBlockSizeFlagBitsEXT" category="bitmask">typedef <type>VkFlags</type> <name>VkVideoEncodeH265TransformBlockSizeFlagsEXT</name>;</type>
<type requires="VkSwapchainImageUsageFlagBitsOpenHarmony" category="bitmask">typedef <type>VkFlags</type> <name>VkSwapchainImageUsageFlagsOpenHarmony</name>;</type>
<type requires="VkSwapchainImageUsageFlagBitsOHOS" category="bitmask">typedef <type>VkFlags</type> <name>VkSwapchainImageUsageFlagsOHOS</name>;</type>
<comment>Types which can be void pointers or class pointers, selected at compile time</comment>
<type category="handle" objtypeenum="VK_OBJECT_TYPE_INSTANCE"><type>VK_DEFINE_HANDLE</type>(<name>VkInstance</name>)</type>
<type category="handle" parent="VkInstance" objtypeenum="VK_OBJECT_TYPE_PHYSICAL_DEVICE"><type>VK_DEFINE_HANDLE</type>(<name>VkPhysicalDevice</name>)</type>
@ -798,7 +800,7 @@ typedef void* <name>MTLSharedEvent_id</name>;
<type name="VkOpticalFlowSessionCreateFlagBitsNV" category="enum"/>
<type name="VkOpticalFlowExecuteFlagBitsNV" category="enum"/>
<type name="VkDeviceFaultAddressTypeEXT" category="enum"/>
<type name="VkSwapchainImageUsageFlagBitsOpenHarmony" category="enum"/>
<type name="VkSwapchainImageUsageFlagBitsOHOS" category="enum"/>
<comment>Enumerated types in the header, but not used by the API</comment>
<type name="VkVendorId" category="enum"/>
@ -2038,11 +2040,11 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member noautovalidity="true">struct <type>_screen_context</type>* <name>context</name></member>
<member noautovalidity="true">struct <type>_screen_window</type>* <name>window</name></member>
</type>
<type category="struct" name="VkOHOSSurfaceCreateInfoOpenHarmony">
<member values="VK_STRUCTURE_TYPE_OHOS_SURFACE_CREATE_INFO_OPENHARMONY"><type>VkStructureType</type> <name>sType</name></member>
<type category="struct" name="VkSurfaceCreateInfoOHOS">
<member values="VK_STRUCTURE_TYPE_SURFACE_CREATE_INFO_OHOS"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member optional="true"><type>VkOHOSSurfaceCreateFlagsOpenHarmony</type> <name>flags</name></member>
<member noautovalidity="true">struct <type>OHNativeWindow</type>* <name>window</name></member>
<member optional="true"><type>VkSurfaceCreateFlagsOHOS</type> <name>flags</name></member>
<member noautovalidity="true"><type>OHNativeWindow</type>* <name>window</name></member>
</type>
<type category="struct" name="VkSurfaceFormatKHR" returnedonly="true">
<member><type>VkFormat</type> <name>format</name><comment>Supported pair of rendering format</comment></member>
@ -3480,28 +3482,28 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member><type>int</type> <name>usage</name></member>
<member><type>VkNativeBufferUsage2ANDROID</type> <name>usage2</name></member>
</type>
<type category="struct" name="VkNativeBufferOpenHarmony">
<member values="VK_STRUCTURE_TYPE_NATIVE_BUFFER_OPENHARMONY"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member>const <type>void</type>* <name>handle</name></member>
</type>
<type category="struct" name="VkSwapchainImageCreateInfoANDROID">
<member values="VK_STRUCTURE_TYPE_SWAPCHAIN_IMAGE_CREATE_INFO_ANDROID"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>VkSwapchainImageUsageFlagsANDROID</type> <name>usage</name></member>
</type>
<type category="struct" name="VkSwapchainImageCreateInfoOpenHarmony">
<member values="VK_STRUCTURE_TYPE_SWAPCHAIN_IMAGE_CREATE_INFO_OPENHARMONY"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>VkSwapchainImageUsageFlagsOpenHarmony</type> <name>usage</name></member>
</type>
<type category="struct" name="VkPhysicalDevicePresentationPropertiesANDROID">
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENTATION_PROPERTIES_ANDROID"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>VkBool32</type> <name>sharedImage</name></member>
</type>
<type category="struct" name="VkPhysicalDevicePresentationPropertiesOpenHarmony">
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENTATION_PROPERTIES_OPENHARMONY"><type>VkStructureType</type> <name>sType</name></member>
<type category="struct" name="VkNativeBufferOHOS">
<member values="VK_STRUCTURE_TYPE_NATIVE_BUFFER_OHOS"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>BufferHandle</type>* <name>handle</name></member>
</type>
<type category="struct" name="VkSwapchainImageCreateInfoOHOS">
<member values="VK_STRUCTURE_TYPE_SWAPCHAIN_IMAGE_CREATE_INFO_OHOS"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>VkSwapchainImageUsageFlagsOHOS</type> <name>usage</name></member>
</type>
<type category="struct" name="VkPhysicalDevicePresentationPropertiesOHOS">
<member values="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENTATION_PROPERTIES_OHOS"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>VkBool32</type> <name>sharedImage</name></member>
</type>
@ -3894,43 +3896,22 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member>struct <type>AHardwareBuffer</type>* <name>buffer</name></member>
</type>
<type category="struct" name="VkImportOHOSNativeBufferInfoOpenHarmony" structextends="VkMemoryAllocateInfo">
<member values="VK_STRUCTURE_TYPE_IMPORT_OHOS_NATIVE_BUFFER_INFO_OPENHARMONY"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member>struct <type>OH_NativeBuffer</type>* <name>buffer</name></member>
</type>
<type category="struct" name="VkAndroidHardwareBufferUsageANDROID" structextends="VkImageFormatProperties2" returnedonly="true">
<member values="VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member><type>uint64_t</type> <name>androidHardwareBufferUsage</name></member>
</type>
<type category="struct" name="VkOHOSNativeBufferUsageOpenHarmony" structextends="VkImageFormatProperties2" returnedonly="true">
<member values="VK_STRUCTURE_TYPE_OHOS_NATIVE_BUFFER_USAGE_OPENHARMONY"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member><type>uint64_t</type> <name>OHOSNativeBufferUsage</name></member>
</type>
<type category="struct" name="VkAndroidHardwareBufferPropertiesANDROID" returnedonly="true">
<member values="VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member><type>VkDeviceSize</type> <name>allocationSize</name></member>
<member><type>uint32_t</type> <name>memoryTypeBits</name></member>
</type>
<type category="struct" name="VkOHOSNativeBufferPropertiesOpenHarmony" returnedonly="true">
<member values="VK_STRUCTURE_TYPE_OHOS_NATIVE_BUFFER_PROPERTIES_OPENHARMONY"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member><type>VkDeviceSize</type> <name>allocationSize</name></member>
<member><type>uint32_t</type> <name>memoryTypeBits</name></member>
</type>
<type category="struct" name="VkMemoryGetAndroidHardwareBufferInfoANDROID">
<member values="VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>VkDeviceMemory</type> <name>memory</name></member>
</type>
<type category="struct" name="VkMemoryGetOHOSNativeBufferInfoOpenHarmony">
<member values="VK_STRUCTURE_TYPE_MEMORY_GET_OHOS_NATIVE_BUFFER_INFO_OPENHARMONY"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>VkDeviceMemory</type> <name>memory</name></member>
</type>
<type category="struct" name="VkAndroidHardwareBufferFormatPropertiesANDROID" structextends="VkAndroidHardwareBufferPropertiesANDROID" returnedonly="true">
<member values="VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
@ -3943,18 +3924,6 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member><type>VkChromaLocation</type> <name>suggestedXChromaOffset</name></member>
<member><type>VkChromaLocation</type> <name>suggestedYChromaOffset</name></member>
</type>
<type category="struct" name="VkOHOSNativeBufferFormatPropertiesOpenHarmony" structextends="VkOHOSNativeBufferPropertiesOpenHarmony" returnedonly="true">
<member values="VK_STRUCTURE_TYPE_OHOS_NATIVE_BUFFER_FORMAT_PROPERTIES_OPENHARMONY"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member><type>VkFormat</type> <name>format</name></member>
<member><type>uint64_t</type> <name>externalFormat</name></member>
<member><type>VkFormatFeatureFlags</type> <name>formatFeatures</name></member>
<member><type>VkComponentMapping</type> <name>samplerYcbcrConversionComponents</name></member>
<member><type>VkSamplerYcbcrModelConversion</type> <name>suggestedYcbcrModel</name></member>
<member><type>VkSamplerYcbcrRange</type> <name>suggestedYcbcrRange</name></member>
<member><type>VkChromaLocation</type> <name>suggestedXChromaOffset</name></member>
<member><type>VkChromaLocation</type> <name>suggestedYChromaOffset</name></member>
</type>
<type category="struct" name="VkCommandBufferInheritanceConditionalRenderingInfoEXT" structextends="VkCommandBufferInheritanceInfo">
<member values="VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
@ -3965,8 +3934,41 @@ typedef void* <name>MTLSharedEvent_id</name>;
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member><type>uint64_t</type> <name>externalFormat</name></member>
</type>
<type category="struct" name="VkExternalFormatOpenHarmony" structextends="VkImageCreateInfo,VkSamplerYcbcrConversionCreateInfo">
<member values="VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_OPENHARMONY"><type>VkStructureType</type> <name>sType</name></member>
<type category="struct" name="VkImportNativeBufferInfoOHOS" structextends="VkMemoryAllocateInfo">
<member values="VK_STRUCTURE_TYPE_IMPORT_NATIVE_BUFFER_INFO_OHOS"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member>struct <type>OH_NativeBuffer</type>* <name>buffer</name></member>
</type>
<type category="struct" name="VkNativeBufferUsageOHOS" structextends="VkImageFormatProperties2" returnedonly="true">
<member values="VK_STRUCTURE_TYPE_NATIVE_BUFFER_USAGE_OHOS"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member><type>uint64_t</type> <name>OHOSNativeBufferUsage</name></member>
</type>
<type category="struct" name="VkNativeBufferPropertiesOHOS" returnedonly="true">
<member values="VK_STRUCTURE_TYPE_NATIVE_BUFFER_PROPERTIES_OHOS"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member><type>VkDeviceSize</type> <name>allocationSize</name></member>
<member><type>uint32_t</type> <name>memoryTypeBits</name></member>
</type>
<type category="struct" name="VkMemoryGetNativeBufferInfoOHOS">
<member values="VK_STRUCTURE_TYPE_MEMORY_GET_NATIVE_BUFFER_INFO_OHOS"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member><type>VkDeviceMemory</type> <name>memory</name></member>
</type>
<type category="struct" name="VkNativeBufferFormatPropertiesOHOS" structextends="VkNativeBufferPropertiesOHOS" returnedonly="true">
<member values="VK_STRUCTURE_TYPE_NATIVE_BUFFER_FORMAT_PROPERTIES_OHOS"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member><type>VkFormat</type> <name>format</name></member>
<member><type>uint64_t</type> <name>externalFormat</name></member>
<member><type>VkFormatFeatureFlags</type> <name>formatFeatures</name></member>
<member><type>VkComponentMapping</type> <name>samplerYcbcrConversionComponents</name></member>
<member><type>VkSamplerYcbcrModelConversion</type> <name>suggestedYcbcrModel</name></member>
<member><type>VkSamplerYcbcrRange</type> <name>suggestedYcbcrRange</name></member>
<member><type>VkChromaLocation</type> <name>suggestedXChromaOffset</name></member>
<member><type>VkChromaLocation</type> <name>suggestedYChromaOffset</name></member>
</type>
<type category="struct" name="VkExternalFormatOHOS" structextends="VkImageCreateInfo,VkSamplerYcbcrConversionCreateInfo">
<member values="VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_OHOS"><type>VkStructureType</type> <name>sType</name></member>
<member optional="true"><type>void</type>* <name>pNext</name></member>
<member><type>uint64_t</type> <name>externalFormat</name></member>
</type>
@ -8398,8 +8400,8 @@ typedef void* <name>MTLSharedEvent_id</name>;
<enums name="VkSwapchainImageUsageFlagBitsANDROID" type="bitmask">
<enum bitpos="0" name="VK_SWAPCHAIN_IMAGE_USAGE_SHARED_BIT_ANDROID"/>
</enums>
<enums name="VkSwapchainImageUsageFlagBitsOpenHarmony" type="bitmask">
<enum bitpos="0" name="VK_SWAPCHAIN_IMAGE_USAGE_SHARED_BIT_OPENHARMONY"/>
<enums name="VkSwapchainImageUsageFlagBitsOHOS" type="bitmask">
<enum bitpos="0" name="VK_SWAPCHAIN_IMAGE_USAGE_SHARED_BIT_OHOS"/>
</enums>
<enums name="VkTimeDomainEXT" type="enum">
<enum value="0" name="VK_TIME_DOMAIN_DEVICE_EXT"/>
@ -10548,19 +10550,6 @@ typedef void* <name>MTLSharedEvent_id</name>;
<param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
<param><type>VkSurfaceKHR</type>* <name>pSurface</name></param>
</command>
<command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_NATIVE_WINDOW_IN_USE_KHR">
<proto><type>VkResult</type> <name>vkCreateOHOSSurfaceOpenHarmony</name></proto>
<param><type>VkInstance</type> <name>instance</name></param>
<param>const <type>VkOHOSSurfaceCreateInfoOpenHarmony</type>* <name>pCreateInfo</name></param>
<param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
<param><type>VkSurfaceKHR</type>* <name>pSurface</name></param>
</command>
<command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR">
<proto><type>VkResult</type> <name>vkGetOHOSNativeBufferPropertiesOpenHarmony</name></proto>
<param><type>VkDevice</type> <name>device</name></param>
<param>const struct <type>OH_NativeBuffer</type>* <name>buffer</name></param>
<param><type>VkOHOSNativeBufferPropertiesOpenHarmony</type>* <name>pProperties</name></param>
</command>
<command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
<proto><type>VkResult</type> <name>vkGetPhysicalDeviceDisplayPropertiesKHR</name></proto>
<param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
@ -11451,13 +11440,6 @@ typedef void* <name>MTLSharedEvent_id</name>;
<param><type>VkImageUsageFlags</type> <name>imageUsage</name></param>
<param><type>int</type>* <name>grallocUsage</name></param>
</command>
<command>
<proto><type>VkResult</type> <name>vkGetSwapchainGrallocUsageOpenHarmony</name></proto>
<param><type>VkDevice</type> <name>device</name></param>
<param><type>VkFormat</type> <name>format</name></param>
<param><type>VkImageUsageFlags</type> <name>imageUsage</name></param>
<param><type>int</type>* <name>grallocUsage</name></param>
</command>
<command>
<proto><type>VkResult</type> <name>vkGetSwapchainGrallocUsage2ANDROID</name></proto>
<param><type>VkDevice</type> <name>device</name></param>
@ -11475,13 +11457,6 @@ typedef void* <name>MTLSharedEvent_id</name>;
<param><type>VkSemaphore</type> <name>semaphore</name></param>
<param><type>VkFence</type> <name>fence</name></param>
</command>
<command>
<proto><type>VkResult</type> <name>vkSetNativeFenceFdOpenHarmony</name></proto>
<param><type>VkDevice</type> <name>device</name></param>
<param><type>int32_t</type> <name>nativeFenceFd</name></param>
<param><type>VkSemaphore</type> <name>semaphore</name></param>
<param><type>VkFence</type> <name>fence</name></param>
</command>
<command>
<proto><type>VkResult</type> <name>vkQueueSignalReleaseImageANDROID</name></proto>
<param><type>VkQueue</type> <name>queue</name></param>
@ -11490,8 +11465,42 @@ typedef void* <name>MTLSharedEvent_id</name>;
<param><type>VkImage</type> <name>image</name></param>
<param><type>int</type>* <name>pNativeFenceFd</name></param>
</command>
<command>
<proto><type>VkResult</type> <name>vkGetNativeFenceFdOpenHarmony</name></proto>
<command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_NATIVE_WINDOW_IN_USE_KHR">
<proto><type>VkResult</type> <name>vkCreateSurfaceOHOS</name></proto>
<param><type>VkInstance</type> <name>instance</name></param>
<param>const <type>VkSurfaceCreateInfoOHOS</type>* <name>pCreateInfo</name></param>
<param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
<param><type>VkSurfaceKHR</type>* <name>pSurface</name></param>
</command>
<command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR">
<proto><type>VkResult</type> <name>vkGetNativeBufferPropertiesOHOS</name></proto>
<param><type>VkDevice</type> <name>device</name></param>
<param>const struct <type>OH_NativeBuffer</type>* <name>buffer</name></param>
<param><type>VkNativeBufferPropertiesOHOS</type>* <name>pProperties</name></param>
</command>
<command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY">
<proto><type>VkResult</type> <name>vkGetMemoryNativeBufferOHOS</name></proto>
<param><type>VkDevice</type> <name>device</name></param>
<param>const <type>VkMemoryGetNativeBufferInfoOHOS</type>* <name>pInfo</name></param>
<param>struct <type>OH_NativeBuffer</type>** <name>pBuffer</name></param>
</command>
<command successcodes="VK_SUCCESS">
<proto><type>VkResult</type> <name>vkGetSwapchainGrallocUsageOHOS</name></proto>
<param><type>VkDevice</type> <name>device</name></param>
<param><type>VkFormat</type> <name>format</name></param>
<param><type>VkImageUsageFlags</type> <name>imageUsage</name></param>
<param><type>uint64_t</type>* <name>grallocUsage</name></param>
</command>
<command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_TIMEOUT,VK_ERROR_INITIALIZATION_FAILED">
<proto><type>VkResult</type> <name>vkAcquireImageOHOS</name></proto>
<param><type>VkDevice</type> <name>device</name></param>
<param><type>VkImage</type> <name>image</name></param>
<param><type>int32_t</type> <name>nativeFenceFd</name></param>
<param><type>VkSemaphore</type> <name>semaphore</name></param>
<param><type>VkFence</type> <name>fence</name></param>
</command>
<command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_TIMEOUT,VK_ERROR_INITIALIZATION_FAILED">
<proto><type>VkResult</type> <name>vkQueueSignalReleaseImageOHOS</name></proto>
<param><type>VkQueue</type> <name>queue</name></param>
<param><type>uint32_t</type> <name>waitSemaphoreCount</name></param>
<param len="waitSemaphoreCount">const <type>VkSemaphore</type>* <name>pWaitSemaphores</name></param>
@ -11660,12 +11669,6 @@ typedef void* <name>MTLSharedEvent_id</name>;
<param>const <type>VkMemoryGetAndroidHardwareBufferInfoANDROID</type>* <name>pInfo</name></param>
<param>struct <type>AHardwareBuffer</type>** <name>pBuffer</name></param>
</command>
<command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY">
<proto><type>VkResult</type> <name>vkGetMemoryOHOSNativeBufferOpenHarmony</name></proto>
<param><type>VkDevice</type> <name>device</name></param>
<param>const <type>VkMemoryGetOHOSNativeBufferInfoOpenHarmony</type>* <name>pInfo</name></param>
<param>struct <type>OH_NativeBuffer</type>** <name>pBuffer</name></param>
</command>
<command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary" tasks="action">
<proto><type>void</type> <name>vkCmdDrawIndirectCount</name></proto>
<param externsync="true"><type>VkCommandBuffer</type> <name>commandBuffer</name></param>
@ -20546,54 +20549,54 @@ typedef void* <name>MTLSharedEvent_id</name>;
<enum value="&quot;VK_EXT_extension_499&quot;" name="VK_EXT_EXTENSION_499_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_OpenHarmony_OHOS_surface" number="500" type="instance" requires="VK_KHR_surface" platform="OHOS" author="OpenHarmony" contact="Xindong Shi @stonehwsxd" supported="vulkan">
<extension name="VK_OHOS_surface" number="532" type="instance" requires="VK_KHR_surface" platform="ohos" author="OHOS" contact="Xindong Shi @stonehwsxd" supported="vulkan">
<require>
<enum value="1" name="VK_OPENHARMONY_OHOS_SURFACE_SPEC_VERSION"/>
<enum value="&quot;VK_OpenHarmony_OHOS_surface&quot;" name="VK_OPENHARMONY_OHOS_SURFACE_EXTENSION_NAME"/>
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_OHOS_SURFACE_CREATE_INFO_OPENHARMONY"/>
<type name="VkOHOSSurfaceCreateFlagsOpenHarmony"/>
<type name="VkOHOSSurfaceCreateInfoOpenHarmony"/>
<command name="vkCreateOHOSSurfaceOpenHarmony"/>
<enum value="1" name="VK_OHOS_SURFACE_SPEC_VERSION"/>
<enum value="&quot;VK_OHOS_surface&quot;" name="VK_OHOS_SURFACE_EXTENSION_NAME"/>
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SURFACE_CREATE_INFO_OHOS"/>
<type name="VkSurfaceCreateFlagsOHOS"/>
<type name="VkSurfaceCreateInfoOHOS"/>
<command name="vkCreateSurfaceOHOS"/>
</require>
</extension>
<extension name="VK_OpenHarmony_external_memory_OHOS_native_buffer" number="501" type="device" author="OpenHarmony" requires="VK_KHR_sampler_ycbcr_conversion,VK_KHR_external_memory,VK_EXT_queue_family_foreign,VK_KHR_dedicated_allocation" platform="OHOS" contact="Zhao Zhang @andrew0229" supported="vulkan">
<require>
<enum value="1" name="VK_OPENHARMONY_EXTERNAL_MEMORY_OHOS_NATIVE_BUFFER_SPEC_VERSION"/>
<enum value="&quot;VK_OpenHarmony_external_memory_OHOS_native_buffer&quot;" name="VK_OPENHARMONY_EXTERNAL_MEMORY_OHOS_NATIVE_BUFFER_EXTENSION_NAME"/>
<enum bitpos="14" extends="VkExternalMemoryHandleTypeFlagBits" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_OHOS_NATIVE_BUFFER_BIT_OPENHARMONY"/>
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_OHOS_NATIVE_BUFFER_USAGE_OPENHARMONY"/>
<enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_OHOS_NATIVE_BUFFER_PROPERTIES_OPENHARMONY"/>
<enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_OHOS_NATIVE_BUFFER_FORMAT_PROPERTIES_OPENHARMONY"/>
<enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMPORT_OHOS_NATIVE_BUFFER_INFO_OPENHARMONY"/>
<enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_MEMORY_GET_OHOS_NATIVE_BUFFER_INFO_OPENHARMONY"/>
<enum offset="5" extends="VkStructureType" name="VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_OPENHARMONY"/>
<type name="VkOHOSNativeBufferUsageOpenHarmony"/>
<type name="VkOHOSNativeBufferPropertiesOpenHarmony"/>
<type name="VkOHOSNativeBufferFormatPropertiesOpenHarmony"/>
<type name="VkImportOHOSNativeBufferInfoOpenHarmony"/>
<type name="VkMemoryGetOHOSNativeBufferInfoOpenHarmony"/>
<type name="VkExternalFormatOpenHarmony"/>
<command name="vkGetOHOSNativeBufferPropertiesOpenHarmony"/>
<command name="vkGetMemoryOHOSNativeBufferOpenHarmony"/>
<type name="OH_NativeBuffer"/>
</require>
</extension>
<extension name="VK_OHOS_native_buffer" number="502" type="device" author="OpenHarmony" platform="OHOS" contact="Zhao Zhang @andrew0229" supported="disabled">
<extension name="VK_OHOS_native_buffer" number="533" type="device" author="OHOS" platform="ohos" contact="Zhao Zhang @andrew0229" supported="vulkan">
<require>
<comment>VK_OHOS_native_buffer is used between the OpenharmonyOS Vulkan loader and drivers to implement the WSI extensions.</comment>
<enum value="1" name="VK_OHOS_NATIVE_BUFFER_SPEC_VERSION"/>
<enum value="&quot;VK_OHOS_native_buffer&quot;" name="VK_OHOS_NATIVE_BUFFER_EXTENSION_NAME"/>
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_NATIVE_BUFFER_OPENHARMONY"/>
<enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SWAPCHAIN_IMAGE_CREATE_INFO_OPENHARMONY"/>
<enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENTATION_PROPERTIES_OPENHARMONY"/>
<type name="VkNativeBufferOpenHarmony"/>
<type name="VkSwapchainImageCreateInfoOpenHarmony"/>
<type name="VkPhysicalDevicePresentationPropertiesOpenHarmony"/>
<type name="VkSwapchainImageUsageFlagBitsOpenHarmony"/>
<type name="VkSwapchainImageUsageFlagsOpenHarmony"/>
<command name="vkGetSwapchainGrallocUsageOpenHarmony"/>
<command name="vkAcquireImageOpenHarmony"/>
<command name="vkQueueSignalReleaseImageOpenHarmony"/>
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_NATIVE_BUFFER_OHOS"/>
<enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SWAPCHAIN_IMAGE_CREATE_INFO_OHOS"/>
<enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENTATION_PROPERTIES_OHOS"/>
<type name="VkNativeBufferOHOS"/>
<type name="VkSwapchainImageCreateInfoOHOS"/>
<type name="VkPhysicalDevicePresentationPropertiesOHOS"/>
<type name="VkSwapchainImageUsageFlagBitsOHOS"/>
<type name="VkSwapchainImageUsageFlagsOHOS"/>
<command name="vkGetSwapchainGrallocUsageOHOS"/>
<command name="vkAcquireImageOHOS"/>
<command name="vkQueueSignalReleaseImageOHOS"/>
</require>
</extension>
<extension name="VK_OHOS_external_memory" number="534" type="device" author="OHOS" requires="VK_KHR_sampler_ycbcr_conversion,VK_KHR_external_memory,VK_EXT_queue_family_foreign,VK_KHR_dedicated_allocation" platform="ohos" contact="Zhao Zhang @andrew0229" supported="vulkan">
<require>
<enum value="1" name="VK_OHOS_EXTERNAL_MEMORY_SPEC_VERSION"/>
<enum value="&quot;VK_OHOS_external_memory&quot;" name="VK_OHOS_EXTERNAL_MEMORY_EXTENSION_NAME"/>
<enum bitpos="14" extends="VkExternalMemoryHandleTypeFlagBits" name="VK_EXTERNAL_MEMORY_HANDLE_TYPE_OHOS_NATIVE_BUFFER_BIT_OHOS"/>
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_NATIVE_BUFFER_USAGE_OHOS"/>
<enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_NATIVE_BUFFER_PROPERTIES_OHOS"/>
<enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_NATIVE_BUFFER_FORMAT_PROPERTIES_OHOS"/>
<enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMPORT_NATIVE_BUFFER_INFO_OHOS"/>
<enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_MEMORY_GET_NATIVE_BUFFER_INFO_OHOS"/>
<enum offset="5" extends="VkStructureType" name="VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_OHOS"/>
<type name="VkNativeBufferUsageOHOS"/>
<type name="VkNativeBufferPropertiesOHOS"/>
<type name="VkNativeBufferFormatPropertiesOHOS"/>
<type name="VkImportNativeBufferInfoOHOS"/>
<type name="VkMemoryGetNativeBufferInfoOHOS"/>
<type name="VkExternalFormatOHOS"/>
<command name="vkGetNativeBufferPropertiesOHOS"/>
<command name="vkGetMemoryNativeBufferOHOS"/>
<type name="OH_NativeBuffer"/>
</require>
</extension>
</extensions>