!3 增加VK_OpenHarmony_OHOS_surface扩展

Merge pull request !3 from Andrew0229/vulkan_surface
This commit is contained in:
openharmony_sig_ci 2022-08-29 01:46:14 +00:00 committed by Gitee
commit adccdd1564
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
13 changed files with 445 additions and 18 deletions

View File

@ -27,13 +27,15 @@ config("vulkan_headers_config") {
include_dirs = [ "include" ]
if (is_ohos) {
defines = [ "VK_USE_PLATFORM_OHOS" ]
defines = [ "VK_USE_PLATFORM_OHOS_OPENHARMONY" ]
}
if (is_win) {
defines = [ "VK_USE_PLATFORM_WIN32_KHR" ]
}
if (defined(vulkan_use_x11) && vulkan_use_x11) {
defines = [ "VK_USE_PLATFORM_XCB_KHR" ]
if (is_linux) {
if (defined(vulkan_use_x11) && vulkan_use_x11) {
defines = [ "VK_USE_PLATFORM_XCB_KHR" ]
}
}
if (is_android) {
defines = [ "VK_USE_PLATFORM_ANDROID_KHR" ]

69
OAT.xml Normal file
View File

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright (c) 2021 Huawei Device Co., Ltd.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Notes:
This is project config file for OpenHarmony OSS Audit Tool. If you have any questions or concerns, please send an email to chenyaxun.
-->
<!-- OAT (OSS Audit Tool) configuration guide:
basedir: Root dir. basedir + project path is the real source file location.
licensefile:
If the project doesn't have "LICENSE" in root dir, please define all the license files in this project. OAT will check license files according to this rule.
tasklist (for the batch mode only):
1. task: OAT check thread. Each task will start a new thread.
2. task name: Task name.
3. task policy: Default policy for projects under this task. This field is required and the specified policy must be defined in policylist.
4. task filter: Default filefilter for projects under this task. This field is required and the specified filefilter must be defined in filefilterlist.
5. task project: Projects to be checked. The path field defines the source root dir of the project.
policyList:
1. policy: All policyitems will be merged to default OAT.xml rules. The name of policy doesn't affect the OAT check process.
2. policyitem: The fields type, name, path, desc are required, and the fields rule, group, filefilter are optional. The default value is:
<policyitem type="" name="" path="" desc="" rule="may" group="defaultGroup" filefilter="defaultPolicyFilter"/>
3. policyitem type:
"compatibility" is used to check license compatibility in the specified path.
"license" is used to check source license header in the specified path.
"copyright" is used to check source copyright header in the specified path.
"import" is used to check source dependency in the specified path, such as import and include.
"filetype" is used to check file type in the specified path. Supported file types include archive and binary.
"filename" is used to check whether the specified file exists in the specified path (support projectroot in the default OAT.xml). Supported file names include LICENSE, README, README.OpenSource.
4. policyitem name: This field is used to define the license, copyright, "*" means match all, the "!" prefix means could not match this value. For example, "!GPL" means can not use GPL license.
5. policyitem path: This field is used to define the source file scope to apply this policyitem, the "!" prefix means exclude the files. For example, "!.*/lib/.*" means files in lib dir will be exclude while process this policyitem.
6. policyitem rule and group: These two fields are used together to merge policy results. "may" means that the result will be passed if any policyitem in the same group is passed.
7. policyitem filefilter: This field is used to bind filefilter which define filter rules.
8. filefilter: This field is used to define filter rules. filename is used to filter file name, and filepath is used to filter file path.
Note: If the text contains special characters, please escape them according to the following rules:
" == &gt;
& == &gt;
' == &gt;
< == &gt;
> == &gt;
-->
<configuration>
<oatconfig>
<licensefile>LICENSE</licensefile>
<filefilterlist>
<filefilter name="defaultFilter" desc="Files that do not need to be scanned">
<filteritem type="filename" name="README|*.xml|*.json" desc="cfg no need to add policy"/>
<filteritem type="filename" name=".cmake-format.py" desc="cfg no need to add policy"/>
</filefilter>
<filefilter name="binaryFileTypePolicyFilter" desc="Filters for binary file policies" >
</filefilter>
</filefilterlist>
</oatconfig>
</configuration>

View File

@ -85,8 +85,7 @@
#include "vulkan_screen.h"
#endif
#ifdef VK_USE_PLATFORM_OHOS
#include <native_window/window.h>
#ifdef VK_USE_PLATFORM_OHOS_OPENHARMONY
#include "vulkan_ohos.h"
#endif

View File

@ -2952,6 +2952,18 @@ namespace VULKAN_HPP_NAMESPACE
}
# endif /*VK_USE_PLATFORM_WIN32_KHR*/
# if defined( VK_USE_PLATFORM_OHOS_OPENHARMONY )
//=== VK_OpenHarmony_OHOS_surface ===
VkResult vkCreateOHOSSurfaceOpenHarmony(VkInstance instance,
const VkOHOSSurfaceCreateInfoOpenHarmony * pCreateInfo,
const VkAllocationCallbacks * pAllocator,
VkSurfaceKHR * pSurface ) const VULKAN_HPP_NOEXCEPT
{
return ::vkCreateOHOSSurfaceOpenHarmony( instance, pCreateInfo, pAllocator, pSurface );
}
# endif /*VK_USE_PLATFORM_OHOS_OPENHARMONY*/
//=== VK_EXT_debug_report ===
VkResult vkCreateDebugReportCallbackEXT( VkInstance instance,
@ -11378,6 +11390,13 @@ 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;
#else
PFN_dummy vkCreateOHOSSurfaceOpenHarmony_placeholder = 0;
#endif /*VK_USE_PLATFORM_OHOS_OPENHARMONY*/
//=== VK_EXT_debug_report ===
PFN_vkCreateDebugReportCallbackEXT vkCreateDebugReportCallbackEXT = 0;
PFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallbackEXT = 0;
@ -12426,6 +12445,12 @@ namespace VULKAN_HPP_NAMESPACE
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*/
//=== VK_EXT_debug_report ===
vkCreateDebugReportCallbackEXT =
PFN_vkCreateDebugReportCallbackEXT( vkGetInstanceProcAddr( instance, "vkCreateDebugReportCallbackEXT" ) );

View File

@ -926,6 +926,16 @@ typedef enum VkStructureType {
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR = 1000413001,
VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR = 1000413002,
VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR = 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_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,
@ -4612,6 +4622,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_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

@ -5644,6 +5644,19 @@ namespace VULKAN_HPP_NAMESPACE
}
#endif /*VK_USE_PLATFORM_WIN32_KHR*/
#if defined( VK_USE_PLATFORM_OHOS_OPENHARMONY )
//=== VK_OpenHarmony_ohos_surface ===
enum class OHOSSurfaceCreateFlagsBitsOpenHarmony : VkOHOSSurfaceCreateFlagsOpenHarmony
{
};
VULKAN_HPP_INLINE std::string to_string( OHOSSurfaceCreateFlagsBitsOpenHarmony )
{
return "(void)";
}
#endif /*VK_USE_PLATFORM_OHOS_OPENHARMONY*/
//=== VK_EXT_debug_report ===
enum class DebugReportFlagBitsEXT : VkDebugReportFlagsEXT
@ -15626,6 +15639,17 @@ namespace VULKAN_HPP_NAMESPACE
}
#endif /*VK_USE_PLATFORM_WIN32_KHR*/
#if defined( VK_USE_PLATFORM_OHOS_OPENHARMONY )
//=== VK_OpenHarmony_OHOS_surface ===
using OHOSSurfaceCreateFlagsOpenHarmony = Flags<OHOSSurfaceCreateFlagsBitsOpenHarmony>;
VULKAN_HPP_INLINE std::string to_string( OHOSSurfaceCreateFlagsOpenHarmony )
{
return "{}";
}
#endif /*VK_USE_PLATFORM_OHOS_OPENHARMONY*/
//=== VK_EXT_debug_report ===
using DebugReportFlagsEXT = Flags<DebugReportFlagBitsEXT>;

View File

@ -8717,6 +8717,68 @@ namespace VULKAN_HPP_NAMESPACE
}
#endif /*VK_USE_PLATFORM_WIN32_KHR*/
#if defined( VK_USE_PLATFORM_OHOS_OPENHARMONY )
//=== VK_OpenHarmony_OHOS_surface ===
template <typename Dispatch>
VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result
Instance::createOHOSSurfaceOpenHarmony( const VULKAN_HPP_NAMESPACE::OHOSSurfaceCreateInfoOpenHarmony * 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 ),
reinterpret_cast<const VkAllocationCallbacks *>( pAllocator ),
reinterpret_cast<VkSurfaceKHR *>( pSurface ) ) );
}
# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
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,
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 ),
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" );
}
# 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,
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 ),
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 );
}
# endif /*VULKAN_HPP_NO_SMART_HANDLE*/
# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
#endif /*VK_USE_PLATFORM_OHOS_OPENHARMONY*/
//=== VK_EXT_debug_report ===
template <typename Dispatch>

View File

@ -414,6 +414,11 @@ 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*/
//=== VK_EXT_debug_report ===
struct DebugReportCallbackCreateInfoEXT;
@ -13979,6 +13984,34 @@ 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 ===
template <typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE>
VULKAN_HPP_NODISCARD Result
createOHOSSurfaceOpenHarmony( const VULKAN_HPP_NAMESPACE::OHOSSurfaceCreateInfoOpenHarmony * 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,
Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator
VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT,
Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const;
# ifndef VULKAN_HPP_NO_SMART_HANDLE
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,
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*/
//=== VK_EXT_debug_report ===
template <typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE>

View File

@ -17,29 +17,93 @@
extern "C" {
#endif
#define VK_OHOS_openhm_surface 1
#define VK_OHOS_OPENHM_SURFACE_SPEC_VERSION 1
#define VK_OHOS_OPENHM_SURFACE_EXTENSION_NAME "VK_OHOS_openhm_surface"
typedef VkFlags VkOpenhmSurfaceCreateFlagsOHOS;
typedef struct VkOpenhmSurfaceCreateInfoOHOS {
#define VK_OpenHarmony_OHOS_surface 1
struct NativeWindow;
#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;
VkOpenhmSurfaceCreateFlagsOHOS flags;
OHNativeWindow* window;
} VkOpenhmSurfaceCreateInfoOHOS;
VkOHOSSurfaceCreateFlagsOpenHarmony flags;
NativeWindow* window;
} VkOHOSSurfaceCreateInfoOpenHarmony;
typedef VkResult (VKAPI_PTR *PFN_VkCreateOpenhmSurfaceOHOS)(VkInstance instance, const VkOpenhmSurfaceCreateInfoOHOS* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
typedef VkResult (VKAPI_PTR *PFN_vkCreateOHOSSurfaceOpenHarmony)(VkInstance instance, const VkOHOSSurfaceCreateInfoOpenHarmony* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
#ifndef VK_NO_PROTOTYPES
VKAPI_ATTR VkResult VKAPI_CALL VkCreateOpenhmSurfaceOHOS(
VKAPI_ATTR VkResult VKAPI_CALL vkCreateOHOSSurfaceOpenHarmony(
VkInstance instance,
const VkOpenhmSurfaceCreateInfoOHOS* pCreateInfo,
const VkOHOSSurfaceCreateInfoOpenHarmony* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkSurfaceKHR* pSurface);
#endif
#define VK_OpenHarmony_external_memory_OHOS_native_buffer 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 {
VkStructureType sType;
void* pNext;
uint64_t OHOSNativeBufferUsage;
} VkOHOSNativeBufferUsageOpenHarmony;
typedef struct VkOHOSNativeBufferPropertiesOpenHarmony {
VkStructureType sType;
void* pNext;
VkDeviceSize allocationSize;
uint32_t memoryTypeBits;
} VkOHOSNativeBufferPropertiesOpenHarmony;
typedef struct VkOHOSNativeBufferFormatPropertiesOpenHarmony {
VkStructureType sType;
void* pNext;
VkFormat format;
uint64_t externalFormat;
VkFormatFeatureFlags formatFeatures;
VkComponentMapping samplerYcbcrConversionComponents;
VkSamplerYcbcrModelConversion suggestedYcbcrModel;
VkSamplerYcbcrRange suggestedYcbcrRange;
VkChromaLocation suggestedXChromaOffset;
VkChromaLocation suggestedYChromaOffset;
} VkOHOSNativeBufferFormatPropertiesOpenHarmony;
typedef struct VkImportOHOSNativeBufferInfoOpenHarmony {
VkStructureType sType;
const void* pNext;
struct OH_NativeBuffer* buffer;
} VkImportOHOSNativeBufferInfoOpenHarmony;
typedef struct VkMemoryGetOHOSNativeBufferInfoOpenHarmony {
VkStructureType sType;
const void* pNext;
VkDeviceMemory memory;
} VkMemoryGetOHOSNativeBufferInfoOpenHarmony;
typedef struct VkExternalFormatOpenHarmony {
VkStructureType sType;
void* pNext;
uint64_t externalFormat;
} VkExternalFormatOpenHarmony;
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);
#ifndef VK_NO_PROTOTYPES
VKAPI_ATTR VkResult VKAPI_CALL vkGetOHOSNativeBufferPropertiesOpenHarmony(
VkDevice device,
const struct OH_NativeBuffer* buffer,
VkOHOSNativeBufferPropertiesOpenHarmony* pProperties);
VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryOHOSNativeBufferOpenHarmony(
VkDevice device,
const VkMemoryGetOHOSNativeBufferInfoOpenHarmony* pInfo,
struct OH_NativeBuffer** pBuffer);
#endif
#ifdef __cplusplus
}
#endif

View File

@ -204,6 +204,12 @@ namespace VULKAN_HPP_NAMESPACE
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*/
//=== VK_KHR_device_group ===
vkGetPhysicalDevicePresentRectanglesKHR = PFN_vkGetPhysicalDevicePresentRectanglesKHR(
vkGetInstanceProcAddr( instance, "vkGetPhysicalDevicePresentRectanglesKHR" ) );
@ -517,6 +523,13 @@ 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;
# else
PFN_dummy vkCreateOHOSSurfaceOpenHarmony_placeholder = 0;
# endif /*VK_USE_PLATFORM_OHOS_OPENHARMONY*/
//=== VK_KHR_device_group ===
PFN_vkGetPhysicalDevicePresentRectanglesKHR vkGetPhysicalDevicePresentRectanglesKHR = 0;
@ -2511,6 +2524,14 @@ 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 ===
VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR createOHOSSurfaceOpenHarmony(
VULKAN_HPP_NAMESPACE::OHOSSurfaceCreateInfoOpenHarmony const & createInfo,
VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const;
# endif /*VK_USE_PLATFORM_OHOS_OPENHARMONY*/
//=== VK_EXT_debug_report ===
VULKAN_HPP_NODISCARD VULKAN_HPP_RAII_NAMESPACE::DebugReportCallbackEXT createDebugReportCallbackEXT(
@ -12440,6 +12461,18 @@ namespace VULKAN_HPP_NAMESPACE
}
# endif /*VK_USE_PLATFORM_WIN32_KHR*/
# if defined( VK_USE_PLATFORM_OHOS_OPENHARMONY )
//=== VK_OpenHarmony_OHOS_surface ===
VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR Instance::createOHOSSurfaceOpenHarmony(
VULKAN_HPP_NAMESPACE::OHOSSurfaceCreateInfoOpenHarmony 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*/
//=== VK_EXT_debug_report ===
VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_RAII_NAMESPACE::DebugReportCallbackEXT

View File

@ -397,6 +397,11 @@ def makeGenOpts(args):
[ 'vulkan_metal.h', [ 'VK_EXT_metal_surface' ], 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'
], commonSuppressExtensions +
[ 'VK_KHR_format_feature_flags2',
] ],
]
for platform in platforms:

View File

@ -38006,6 +38006,46 @@
}
]
},
"vkCreateOHOSSurfaceOpenHarmony": {
"(VK_KHR_surface)+(VK_OpenHarmony_OHOS_surface)": [
{
"vuid": "VUID-vkCreateOHOSSurfaceOpenHarmony-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-vkCreateOHOSSurfaceOpenHarmony-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",
"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)": [
{
"vuid": "VUID-VkOHOSSurfaceCreateInfoOpenHarmony-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-VkOHOSSurfaceCreateInfoOpenHarmony-pNext-pNext",
"text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
},
{
"vuid": "VUID-VkOHOSSurfaceCreateInfoOpenHarmony-flags-zerobitmask",
"text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
}
]
},
"vkDestroySurfaceKHR": {
"(VK_KHR_surface)": [
{

View File

@ -34,6 +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"/>
</platforms>
<tags comment="Vulkan vendor/author tags for extensions and layers">
@ -72,6 +73,8 @@ branch of the member gitlab server.
<tag name="QNX" author="BlackBerry Limited" contact="Mike Gorchak @mgorchak-blackberry"/>
<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="OpenHarmony" author="Huawei Technologies Co. Ltd." contact="Xindong Shi @stonehwsxd"/>
<tag name="OpenHarmony" author="Huawei Technologies Co. Ltd." contact="Zhao Zhang @andrew0229"/>
</tags>
<types comment="Vulkan type definitions">
@ -334,6 +337,7 @@ typedef void <name>CAMetalLayer</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 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>
@ -1940,6 +1944,12 @@ typedef void <name>CAMetalLayer</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>
<member optional="true">const <type>void</type>* <name>pNext</name></member>
<member optional="true"><type>VkOHOSSurfaceCreateInfoOpenHarmony</type> <name>flags</name></member>
<member noautovalidity="true">struct <type>NativeWindow</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>
<member><type>VkColorSpaceKHR</type> <name>colorSpace</name><comment>and color space for the surface</comment></member>
@ -17634,6 +17644,56 @@ typedef void <name>CAMetalLayer</name>;
<enum value="&quot;VK_EXT_extension_438&quot;" name="VK_EXT_EXTENSION_438_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_OpenHarmony_OHOS_surface" number="452" type="instance" requires="VK_KHR_surface" platform="OHOS" author="OpenHarmony" 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"/>
</require>
</extension>
<extension name="VK_OpenHarmony_external_memory_OHOS_native_buffer" number="453" 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="454" type="device" author="OpenHarmony" platform="OHOS" contact="Zhao Zhang @andrew0229" supported="disabled">
<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"/>
</require>
</extension>
</extensions>
<formats>
<format name="VK_FORMAT_R4G4_UNORM_PACK8" class="8-bit" blockSize="1" texelsPerBlock="1" packed="8">