diff --git a/BUILD.gn b/BUILD.gn
index 9ac89cddc45c62da11025fb0eac9bed0ab398b8f..56aeb0a0de00e5621f60b07dd436c4c8186a7b02 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -13,7 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-import("//build_overrides/vulkan_validation_layers.gni")
+import("scripts/gn/layers-ohos.gni")
vulkan_undefine_configs = []
if (is_win) {
@@ -62,6 +62,7 @@ config("vulkan_internal_config") {
defines = [ "VK_ENABLE_BETA_EXTENSIONS" ]
cflags = []
+ cflags_cc = []
if (is_clang || !is_win) {
cflags += [ "-Wno-unused-function" ]
}
@@ -69,6 +70,20 @@ config("vulkan_internal_config") {
cflags += [ "-Wno-unguarded-availability-new" ]
}
+ if (is_ohos) {
+ cflags_cc += [
+ "-Wno-unused-but-set-variable",
+ # "-Wno-c++17-extensions",
+ "-std=c++17",
+ "-frtti"
+ ]
+ cflags += [
+ # "-Werror",
+ "-Wno-unused-variable",
+ "-Wno-misleading-indentation"
+ ]
+ }
+
# Suppress warnings the vulkan code doesn't comply with.
if (is_fuchsia) {
configs = [ "//build/config:Wno-unused-but-set-variable" ]
@@ -324,7 +339,7 @@ if (!is_android) {
script = "scripts/gn/generate_vulkan_layers_json.py"
deps = [ "$vulkan_headers_dir:vulkan_headers" ]
- if (!is_fuchsia) {
+ if (!is_fuchsia && !is_ohos) {
# Make sure that the cleanup of old layer JSON files happens before the new ones are generated.
deps += [ ":vulkan_clean_old_validation_layer_objects" ]
}
@@ -340,6 +355,8 @@ if (!is_android) {
_platform = "Darwin"
} else if (is_fuchsia) {
_platform = "Fuchsia"
+ } else if (is_ohos) {
+ _platform = "OHOS"
} else {
_platform = "Other"
}
@@ -350,7 +367,7 @@ if (!is_android) {
rebase_path("layers/", root_build_dir),
rebase_path(vulkan_data_dir, root_build_dir),
] + rebase_path(sources, root_build_dir)
- if (is_fuchsia) {
+ if (is_fuchsia || is_ohos) {
args += [ "--no-path-prefix" ]
}
@@ -365,7 +382,8 @@ config("vulkan_memory_allocator_config") {
}
}
-source_set("vulkan_layer_utils") {
+ohos_source_set("vulkan_layer_utils") {
+ configs = []
include_dirs = [
"layers",
"layers/external",
@@ -419,7 +437,7 @@ source_set("vulkan_layer_utils") {
]
configs -= vulkan_undefine_configs
- if (!is_fuchsia) {
+ if (!is_fuchsia && !is_ohos) {
configs -= [ "//build/config/compiler:chromium_code" ]
configs += [ "//build/config/compiler:no_chromium_code" ]
}
@@ -450,6 +468,8 @@ config("vulkan_stateless_validation_config") {
if (is_fuchsia) {
library_type = "loadable_module"
+} else if (is_ohos) {
+ library_type = "ohos_shared_library"
} else {
library_type = "shared_library"
}
@@ -459,10 +479,16 @@ foreach(layer_info, layers) {
target(library_type, "VkLayer_$name") {
defines = []
ldflags = []
+ configs = []
+ cflags_cc = []
if (is_fuchsia) {
configs -= [ "//build/config:thread_safety_annotations" ]
ldflags += [ "-static-libstdc++" ]
configs += [ "//build/config:rtti" ]
+ } else if (is_ohos) {
+ # configs -= [ "//build/config:thread_safety_annotations" ]
+ # ldflags += [ "-static-libstdc++" ]
+ cflags_cc += [ "-frtti" ]
} else {
configs -= [ "//build/config/compiler:chromium_code" ]
configs += [ "//build/config/compiler:no_chromium_code" ]
@@ -475,8 +501,9 @@ foreach(layer_info, layers) {
deps = [
":vulkan_layer_utils",
"$vulkan_utility_libraries_dir:vulkan_layer_settings",
+ ":vulkan_gen_json_files",
]
- if (!is_fuchsia) {
+ if (!is_fuchsia && !is_ohos) {
deps += [
# Make sure the cleanup of old layers happen before the new ones are compiled.
":vulkan_clean_old_validation_layer_objects",
@@ -509,7 +536,7 @@ group("vulkan_validation_layers") {
data_deps = []
foreach(layer_info, layers) {
name = layer_info[0]
- if (is_fuchsia) {
+ if (is_fuchsia || is_ohos) {
public_deps += [ ":VkLayer_$name" ]
} else {
data_deps += [ ":VkLayer_$name" ]
diff --git a/OAT.xml b/OAT.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6ac6eb7bc0dd30c480c2d06f9e769cf27707f75e
--- /dev/null
+++ b/OAT.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+ LICENSE.txt
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/README.OpenSource b/README.OpenSource
new file mode 100644
index 0000000000000000000000000000000000000000..035ff830b6b32be9cb62bece46123e04b75acf15
--- /dev/null
+++ b/README.OpenSource
@@ -0,0 +1,11 @@
+[
+ {
+ "Name": "Vulkan-ValidationLayers",
+ "License": "Apache-2.0",
+ "License File": "LICENSE",
+ "Version Number": "v1.3.275",
+ "Owner": "wangxutao5@huawei.com",
+ "Upstream URL": "https://github.com/KhronosGroup/Vulkan-ValidationLayers.git",
+ "Description": "This project provides Vulkan validation layers that can be enabled to assist development by enabling developers to verify their applications correct use of the Vulkan API."
+ }
+]
diff --git a/README_OpenHarmony.md b/README_OpenHarmony.md
new file mode 100644
index 0000000000000000000000000000000000000000..c7763a982b06e9eee70af791277aebe371bf0229
--- /dev/null
+++ b/README_OpenHarmony.md
@@ -0,0 +1,73 @@
+# Vulkan-ValidationLayers
+
+本仓库包含开源软件Vulkan-ValidationLayers,为OpenHarmony提供了Vulkan验证层,Vulkan验证层可以在应用程序开发期间为开发者提供一些错误检查,帮助开发者正确使用Vulkan API。Vulkan-ValidationLayers的功能请参考[Vulkan-ValidationLayers](docs/khronos_validation_layer.md)
+
+## Vulkan-ValidationLayers的实现方式
+
+Vulkan-ValidationLayers被实现为一个Vulkan Layer,由Vulkan-Loader加载并使用,Vulkan-Loader的功能请参考[Vulkan-Loader](https://gitee.com/openharmony/third_party_vulkan-loader/blob/master/README_OpenHarmony.md)。
+
+
+
+
+## Vulkan-Loader加载验证层的方式
+
+### 系统侧
+Vulkan-ValidationLayers在系统目录下会提供一个json配置文件`VkLayer_khronos_validation.json`和一个so文件`libVkLayer_khronos_validation.so`。
+
+[Vulkan-Loader](https://gitee.com/openharmony/third_party_vulkan-loader/blob/master/README_OpenHarmony.md)会扫描指定目录下的json配置文件,解析出so的位置并加载对应的so文件。
+
+
+
+### 应用侧
+`在调试过程中开启ValidationLayers, 正式版本请不要开启。`
+
+开启ValidationLayers的示例代码如下
+
+```
+ // Check if this layer is available at instance level
+ const char* validationLayerName = "VK_LAYER_KHRONOS_validation";
+ uint32_t instanceLayerCount;
+ vkEnumerateInstanceLayerProperties(&instanceLayerCount, nullptr);
+ std::vector instanceLayerProperties(instanceLayerCount);
+ vkEnumerateInstanceLayerProperties(&instanceLayerCount, instanceLayerProperties.data());
+ bool validationLayerPresent = false;
+ for (VkLayerProperties layer : instanceLayerProperties) {
+ if (strcmp(layer.layerName, validationLayerName) == 0) {
+ validationLayerPresent = true;
+ break;
+ }
+ }
+ if (validationLayerPresent) {
+ instanceCreateInfo.ppEnabledLayerNames = &validationLayerName;
+ instanceCreateInfo.enabledLayerCount = 1;
+ } else {
+ std::cerr << "Validation layer VK_LAYER_KHRONOS_validation not present, validation is disabled";
+ }
+
+ VkResult result = vkCreateInstance(&instanceCreateInfo, nullptr, &instance);
+```
+
+## 构建指导
+
+适配OpenHarmony平台的编译脚本请见:[build-openharmony/BUILD.gn](build-openharmony/BUILD.gn)
+
+由于graphic_2d模块的编译脚本中包含了Vulkan-ValidationLayers(详见:[bundle.json](https://gitee.com/openharmony/graphic_graphic_2d/blob/master/bundle.json)),所以编译graphic_2d模块可以将Vulkan-ValidationLayers同时编译出来,以rk3568平台为例,编译命令:
+
+```shell
+./build.sh --product-name rk3568 --ccache --build-target graphic_2d
+```
+
+也可以单独编译Vulkan-ValidationLayers:
+
+```shell
+./build.sh --product-name rk3568 --ccache --build-target VkLayer_khronos_validation
+```
+
+编译完成后会在`out/rk3568/graphic/graphic_2d`目录下生成`libVkLayer_khronos_validation.so`
+
+
+## License
+
+Apache License 2.0
+
+见 [LICENSE](LICENSE.txt).
\ No newline at end of file
diff --git a/build.patch b/build.patch
new file mode 100644
index 0000000000000000000000000000000000000000..488f0e19c335205e547b521484740e3830b1d8d3
--- /dev/null
+++ b/build.patch
@@ -0,0 +1,13 @@
+diff --git a/compile_standard_whitelist.json b/compile_standard_whitelist.json
+index b0bee416..e1177539 100644
+--- a/compile_standard_whitelist.json
++++ b/compile_standard_whitelist.json
+@@ -692,6 +692,8 @@
+ "//third_party/vk-gl-cts/modules/gles3:libdeqp-gles3",
+ "//third_party/vk-gl-cts/modules/glshared:deqp-gl-shared_source",
+ "//third_party/vk-gl-cts/modules/glshared:libdeqp-gl-shared",
++ "//third_party/vulkan-validationlayers:VkLayer_khronos_validation",
++ "//third_party/vulkan-validationlayers:vulkan_layer_utils",
+ "//third_party/rust/crates/rust-openssl/openssl-sys:lib"
+ ]
+ }
diff --git a/bundle.json b/bundle.json
new file mode 100644
index 0000000000000000000000000000000000000000..5b449a76b8e37ee6c240d12b5ebbb7a46558134a
--- /dev/null
+++ b/bundle.json
@@ -0,0 +1,45 @@
+{
+ "name": "@ohos/vulkan-validationlayers",
+ "description": "validationlayers",
+ "version": "4.0",
+ "license": "Apache-2.0",
+ "publishAs": "code-segment",
+ "segment": {
+ "destPath": "third_party/vulkan-validationlayers"
+ },
+ "dirs": {},
+ "scripts": {},
+ "licensePath": "CODE_OF_CONDUCT.md",
+ "readmePath": {
+ "en": "README.md"
+ },
+ "component": {
+ "name": "vulkan-validationlayers",
+ "subsystem": "thirdparty",
+ "syscap": [],
+ "features": [],
+ "adapted_system_type": ["standard"],
+ "rom": "1",
+ "ram": "1",
+ "deps": {
+ "components": ["vulkan-headers"],
+ "third_party": ["vulkan-headers"]
+ },
+ "build": {
+ "sub_component": [
+ "//third_party/vulkan-validationlayers:VkLayer_khronos_validation"
+ ],
+ "inner_kits": [
+ {
+ "type": "so",
+ "name": "//third_party/vulkan-validationlayers:VkLayer_khronos_validation",
+ "header": {
+ "header_files": [
+ ],
+ "header_base": "//third_party/vulkan-validationlayers"
+ }
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/docs/images/vulkan-validationlayers_architecture_in_OH.png b/docs/images/vulkan-validationlayers_architecture_in_OH.png
new file mode 100644
index 0000000000000000000000000000000000000000..c32d6be35785db3beb749edfa3daef7926e5a526
Binary files /dev/null and b/docs/images/vulkan-validationlayers_architecture_in_OH.png differ
diff --git a/docs/images/vulkan-validationlayers_load_way_in_OH.png b/docs/images/vulkan-validationlayers_load_way_in_OH.png
new file mode 100644
index 0000000000000000000000000000000000000000..20802703063bda0fa5118fa40f93ea53291b06ec
Binary files /dev/null and b/docs/images/vulkan-validationlayers_load_way_in_OH.png differ
diff --git a/graphic_2d.patch b/graphic_2d.patch
new file mode 100644
index 0000000000000000000000000000000000000000..4cd33f06d7ba36fc4dc34ebc4f65865b6423d03f
--- /dev/null
+++ b/graphic_2d.patch
@@ -0,0 +1,24 @@
+diff --git a/bundle.json b/bundle.json
+index 3c54d54bb1..f6f0e08efb 100644
+--- a/bundle.json
++++ b/bundle.json
+@@ -113,7 +113,8 @@
+ "egl",
+ "opengles",
+ "vulkan-headers",
+- "vulkan-loader"
++ "vulkan-loader",
++ "vulkan-validationlayers"
+ ]
+ },
+ "build": {
+@@ -138,7 +139,8 @@
+ "//foundation/graphic/graphic_2d/rosen/modules/texgine:libtexgine",
+ "//foundation/graphic/graphic_2d/frameworks/vulkan_layers:vulkan_swapchain_layer",
+ "//foundation/graphic/graphic_2d/frameworks/vulkan_layers:vulkan_swapchain_layer_json",
+- "//foundation/graphic/graphic_2d/rosen/modules/graphics_effect:libgraphics_effect"
++ "//foundation/graphic/graphic_2d/rosen/modules/graphics_effect:libgraphics_effect",
++ "//third_party/vulkan-validationlayers:VkLayer_khronos_validation"
+ ],
+ "fwk_group": [
+ "//foundation/graphic/graphic_2d/rosen/modules/render_service_base:librender_service_base",
diff --git a/layers/VkLayer_khronos_validation.json.in b/layers/VkLayer_khronos_validation.json.in
index de46dda05dc849c000287b78a2c50a0cdcc7ce28..7accd6d8b70a5466c9f419231ab134e6178ea229 100644
--- a/layers/VkLayer_khronos_validation.json.in
+++ b/layers/VkLayer_khronos_validation.json.in
@@ -12,7 +12,8 @@
"WINDOWS",
"LINUX",
"ANDROID",
- "MACOS"
+ "MACOS",
+ "OHOS"
],
"url": "https://vulkan.lunarg.com/doc/sdk/latest/windows/khronos_validation_layer.html",
"instance_extensions": [
@@ -68,7 +69,8 @@
"WINDOWS",
"LINUX",
"MACOS",
- "ANDROID"
+ "ANDROID",
+ "OHOS"
],
"status": "STABLE",
"settings": [
@@ -205,7 +207,8 @@
"WINDOWS",
"LINUX",
"MACOS",
- "ANDROID"
+ "ANDROID",
+ "OHOS"
],
"status": "STABLE",
"settings": [
@@ -274,7 +277,8 @@
"WINDOWS",
"LINUX",
"MACOS",
- "ANDROID"
+ "ANDROID",
+ "OHOS"
],
"status": "STABLE",
"settings": [
@@ -494,7 +498,8 @@
"WINDOWS",
"LINUX",
"MACOS",
- "ANDROID"
+ "ANDROID",
+ "OHOS"
]
},
{
@@ -620,7 +625,8 @@
"WINDOWS",
"LINUX",
"MACOS",
- "ANDROID"
+ "ANDROID",
+ "OHOS"
]
},
{
@@ -634,7 +640,8 @@
"WINDOWS",
"LINUX",
"MACOS",
- "ANDROID"
+ "ANDROID",
+ "OHOS"
]
},
{
@@ -648,7 +655,8 @@
"WINDOWS",
"LINUX",
"MACOS",
- "ANDROID"
+ "ANDROID",
+ "OHOS"
]
},
{
@@ -662,7 +670,8 @@
"WINDOWS",
"LINUX",
"MACOS",
- "ANDROID"
+ "ANDROID",
+ "OHOS"
]
},
{
@@ -678,7 +687,8 @@
"WINDOWS",
"LINUX",
"MACOS",
- "ANDROID"
+ "ANDROID",
+ "OHOS"
],
"settings": [
{
@@ -986,7 +996,8 @@
"WINDOWS",
"LINUX",
"MACOS",
- "ANDROID"
+ "ANDROID",
+ "OHOS"
],
"settings": [
{
@@ -999,7 +1010,8 @@
"WINDOWS",
"LINUX",
"MACOS",
- "ANDROID"
+ "ANDROID",
+ "OHOS"
],
"dependence": {
"mode": "ALL",
@@ -1062,7 +1074,8 @@
"platforms": [
"WINDOWS",
"LINUX",
- "ANDROID"
+ "ANDROID",
+ "OHOS"
],
"dependence": {
"mode": "ALL",
@@ -1303,7 +1316,8 @@
"WINDOWS",
"LINUX",
"MACOS",
- "ANDROID"
+ "ANDROID",
+ "OHOS"
]
},
{
@@ -1345,7 +1359,8 @@
"WINDOWS",
"LINUX",
"MACOS",
- "ANDROID"
+ "ANDROID",
+ "OHOS"
]
},
{
@@ -1356,7 +1371,8 @@
"WINDOWS",
"LINUX",
"MACOS",
- "ANDROID"
+ "ANDROID",
+ "OHOS"
]
},
{
@@ -1386,7 +1402,8 @@
"platforms": [
"WINDOWS",
"LINUX",
- "ANDROID"
+ "ANDROID",
+ "OHOS"
]
},
{
@@ -1396,7 +1413,8 @@
"platforms": [
"WINDOWS",
"LINUX",
- "ANDROID"
+ "ANDROID",
+ "OHOS"
]
}
],
diff --git a/layers/vulkan/generated/best_practices.cpp b/layers/vulkan/generated/best_practices.cpp
index 4f6e699bd0a479c119094c7f0e6199754ac57586..b36db00f8e0e31dfa7b91235aa5066a20bbd445b 100644
--- a/layers/vulkan/generated/best_practices.cpp
+++ b/layers/vulkan/generated/best_practices.cpp
@@ -2825,6 +2825,57 @@ void BestPractices::PostCallRecordGetScreenBufferPropertiesQNX(VkDevice device,
}
#endif // VK_USE_PLATFORM_SCREEN_QNX
+#ifdef VK_USE_PLATFORM_OHOS
+void BestPractices::PostCallRecordCreateSurfaceOHOS(VkInstance instance, const VkSurfaceCreateInfoOHOS* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface,
+ const RecordObject& record_obj) {
+ ValidationStateTracker::PostCallRecordCreateSurfaceOHOS(instance, pCreateInfo, pAllocator, pSurface, record_obj);
+
+ if (record_obj.result < VK_SUCCESS) {
+ LogErrorCode(record_obj);
+ }
+}
+
+void BestPractices::PostCallRecordAcquireImageOHOS(VkDevice device, VkImage image, int32_t nativeFenceFd, VkSemaphore semaphore,
+ VkFence fence, const RecordObject& record_obj) {
+ ValidationStateTracker::PostCallRecordAcquireImageOHOS(device, image, nativeFenceFd, semaphore, fence, record_obj);
+
+ if (record_obj.result < VK_SUCCESS) {
+ LogErrorCode(record_obj);
+ }
+}
+
+void BestPractices::PostCallRecordQueueSignalReleaseImageOHOS(VkQueue queue, uint32_t waitSemaphoreCount,
+ const VkSemaphore* pWaitSemaphores, VkImage image,
+ int32_t* pNativeFenceFd, const RecordObject& record_obj) {
+ ValidationStateTracker::PostCallRecordQueueSignalReleaseImageOHOS(queue, waitSemaphoreCount, pWaitSemaphores, image,
+ pNativeFenceFd, record_obj);
+
+ if (record_obj.result < VK_SUCCESS) {
+ LogErrorCode(record_obj);
+ }
+}
+
+void BestPractices::PostCallRecordGetNativeBufferPropertiesOHOS(VkDevice device, const struct OH_NativeBuffer* buffer,
+ VkNativeBufferPropertiesOHOS* pProperties,
+ const RecordObject& record_obj) {
+ ValidationStateTracker::PostCallRecordGetNativeBufferPropertiesOHOS(device, buffer, pProperties, record_obj);
+
+ if (record_obj.result < VK_SUCCESS) {
+ LogErrorCode(record_obj);
+ }
+}
+
+void BestPractices::PostCallRecordGetMemoryNativeBufferOHOS(VkDevice device, const VkMemoryGetNativeBufferInfoOHOS* pInfo,
+ struct OH_NativeBuffer** pBuffer, const RecordObject& record_obj) {
+ ValidationStateTracker::PostCallRecordGetMemoryNativeBufferOHOS(device, pInfo, pBuffer, record_obj);
+
+ if (record_obj.result < VK_SUCCESS) {
+ LogErrorCode(record_obj);
+ }
+}
+#endif // VK_USE_PLATFORM_OHOS
+
void BestPractices::PostCallRecordCreateAccelerationStructureKHR(VkDevice device,
const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
diff --git a/layers/vulkan/generated/best_practices.h b/layers/vulkan/generated/best_practices.h
index a2e77f6f713ca8195a8c79402736d516dbf5c420..528c878c756f4c54d915c996591e3a7c473cdbfe 100644
--- a/layers/vulkan/generated/best_practices.h
+++ b/layers/vulkan/generated/best_practices.h
@@ -984,6 +984,25 @@ void PostCallRecordGetScreenBufferPropertiesQNX(VkDevice device, const struct _s
VkScreenBufferPropertiesQNX* pProperties, const RecordObject& record_obj) override;
#endif // VK_USE_PLATFORM_SCREEN_QNX
+#ifdef VK_USE_PLATFORM_OHOS
+void PostCallRecordCreateSurfaceOHOS(VkInstance instance, const VkSurfaceCreateInfoOHOS* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface,
+ const RecordObject& record_obj) override;
+
+void PostCallRecordAcquireImageOHOS(VkDevice device, VkImage image, int32_t nativeFenceFd, VkSemaphore semaphore, VkFence fence,
+ const RecordObject& record_obj) override;
+
+void PostCallRecordQueueSignalReleaseImageOHOS(VkQueue queue, uint32_t waitSemaphoreCount, const VkSemaphore* pWaitSemaphores,
+ VkImage image, int32_t* pNativeFenceFd, const RecordObject& record_obj) override;
+
+void PostCallRecordGetNativeBufferPropertiesOHOS(VkDevice device, const struct OH_NativeBuffer* buffer,
+ VkNativeBufferPropertiesOHOS* pProperties,
+ const RecordObject& record_obj) override;
+
+void PostCallRecordGetMemoryNativeBufferOHOS(VkDevice device, const VkMemoryGetNativeBufferInfoOHOS* pInfo,
+ struct OH_NativeBuffer** pBuffer, const RecordObject& record_obj) override;
+
+#endif // VK_USE_PLATFORM_OHOS
void PostCallRecordCreateAccelerationStructureKHR(VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkAccelerationStructureKHR* pAccelerationStructure,
diff --git a/layers/vulkan/generated/chassis.cpp b/layers/vulkan/generated/chassis.cpp
index a739a64ee5be25cae82d9f551a9f8806d7af6a8e..461d8e76835580ee3fb3e62a9dd3839b995ce64a 100644
--- a/layers/vulkan/generated/chassis.cpp
+++ b/layers/vulkan/generated/chassis.cpp
@@ -16348,6 +16348,158 @@ VKAPI_ATTR VkResult VKAPI_CALL GetScreenBufferPropertiesQNX(VkDevice device, con
}
#endif // VK_USE_PLATFORM_SCREEN_QNX
+#ifdef VK_USE_PLATFORM_OHOS
+VKAPI_ATTR VkResult VKAPI_CALL CreateSurfaceOHOS(VkInstance instance, const VkSurfaceCreateInfoOHOS* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) {
+ auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map);
+ bool skip = false;
+ ErrorObject error_obj(vvl::Func::vkCreateSurfaceOHOS, VulkanTypedHandle(instance, kVulkanObjectTypeInstance));
+ for (const ValidationObject* intercept : layer_data->object_dispatch) {
+ auto lock = intercept->ReadLock();
+ skip |= intercept->PreCallValidateCreateSurfaceOHOS(instance, pCreateInfo, pAllocator, pSurface, error_obj);
+ if (skip) return VK_ERROR_VALIDATION_FAILED_EXT;
+ }
+ RecordObject record_obj(vvl::Func::vkCreateSurfaceOHOS);
+ for (ValidationObject* intercept : layer_data->object_dispatch) {
+ auto lock = intercept->WriteLock();
+ intercept->PreCallRecordCreateSurfaceOHOS(instance, pCreateInfo, pAllocator, pSurface, record_obj);
+ }
+ VkResult result = DispatchCreateSurfaceOHOS(instance, pCreateInfo, pAllocator, pSurface);
+ record_obj.result = result;
+ for (ValidationObject* intercept : layer_data->object_dispatch) {
+ auto lock = intercept->WriteLock();
+ intercept->PostCallRecordCreateSurfaceOHOS(instance, pCreateInfo, pAllocator, pSurface, record_obj);
+ }
+ return result;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL GetSwapchainGrallocUsageOHOS(VkDevice device, VkFormat format, VkImageUsageFlags imageUsage,
+ uint64_t* grallocUsage) {
+ auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
+ bool skip = false;
+ ErrorObject error_obj(vvl::Func::vkGetSwapchainGrallocUsageOHOS, VulkanTypedHandle(device, kVulkanObjectTypeDevice));
+ for (const ValidationObject* intercept :
+ layer_data->intercept_vectors[InterceptIdPreCallValidateGetSwapchainGrallocUsageOHOS]) {
+ auto lock = intercept->ReadLock();
+ skip |= intercept->PreCallValidateGetSwapchainGrallocUsageOHOS(device, format, imageUsage, grallocUsage, error_obj);
+ if (skip) return VK_ERROR_VALIDATION_FAILED_EXT;
+ }
+ RecordObject record_obj(vvl::Func::vkGetSwapchainGrallocUsageOHOS);
+ for (ValidationObject* intercept : layer_data->intercept_vectors[InterceptIdPreCallRecordGetSwapchainGrallocUsageOHOS]) {
+ auto lock = intercept->WriteLock();
+ intercept->PreCallRecordGetSwapchainGrallocUsageOHOS(device, format, imageUsage, grallocUsage, record_obj);
+ }
+ VkResult result = DispatchGetSwapchainGrallocUsageOHOS(device, format, imageUsage, grallocUsage);
+ record_obj.result = result;
+ for (ValidationObject* intercept : layer_data->intercept_vectors[InterceptIdPostCallRecordGetSwapchainGrallocUsageOHOS]) {
+ auto lock = intercept->WriteLock();
+ intercept->PostCallRecordGetSwapchainGrallocUsageOHOS(device, format, imageUsage, grallocUsage, record_obj);
+ }
+ return result;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL AcquireImageOHOS(VkDevice device, VkImage image, int32_t nativeFenceFd, VkSemaphore semaphore,
+ VkFence fence) {
+ auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
+ bool skip = false;
+ ErrorObject error_obj(vvl::Func::vkAcquireImageOHOS, VulkanTypedHandle(device, kVulkanObjectTypeDevice));
+ for (const ValidationObject* intercept : layer_data->intercept_vectors[InterceptIdPreCallValidateAcquireImageOHOS]) {
+ auto lock = intercept->ReadLock();
+ skip |= intercept->PreCallValidateAcquireImageOHOS(device, image, nativeFenceFd, semaphore, fence, error_obj);
+ if (skip) return VK_ERROR_VALIDATION_FAILED_EXT;
+ }
+ RecordObject record_obj(vvl::Func::vkAcquireImageOHOS);
+ for (ValidationObject* intercept : layer_data->intercept_vectors[InterceptIdPreCallRecordAcquireImageOHOS]) {
+ auto lock = intercept->WriteLock();
+ intercept->PreCallRecordAcquireImageOHOS(device, image, nativeFenceFd, semaphore, fence, record_obj);
+ }
+ VkResult result = DispatchAcquireImageOHOS(device, image, nativeFenceFd, semaphore, fence);
+ record_obj.result = result;
+ for (ValidationObject* intercept : layer_data->intercept_vectors[InterceptIdPostCallRecordAcquireImageOHOS]) {
+ auto lock = intercept->WriteLock();
+ intercept->PostCallRecordAcquireImageOHOS(device, image, nativeFenceFd, semaphore, fence, record_obj);
+ }
+ return result;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL QueueSignalReleaseImageOHOS(VkQueue queue, uint32_t waitSemaphoreCount,
+ const VkSemaphore* pWaitSemaphores, VkImage image,
+ int32_t* pNativeFenceFd) {
+ auto layer_data = GetLayerDataPtr(get_dispatch_key(queue), layer_data_map);
+ bool skip = false;
+ ErrorObject error_obj(vvl::Func::vkQueueSignalReleaseImageOHOS, VulkanTypedHandle(queue, kVulkanObjectTypeQueue));
+ for (const ValidationObject* intercept : layer_data->intercept_vectors[InterceptIdPreCallValidateQueueSignalReleaseImageOHOS]) {
+ auto lock = intercept->ReadLock();
+ skip |= intercept->PreCallValidateQueueSignalReleaseImageOHOS(queue, waitSemaphoreCount, pWaitSemaphores, image,
+ pNativeFenceFd, error_obj);
+ if (skip) return VK_ERROR_VALIDATION_FAILED_EXT;
+ }
+ RecordObject record_obj(vvl::Func::vkQueueSignalReleaseImageOHOS);
+ for (ValidationObject* intercept : layer_data->intercept_vectors[InterceptIdPreCallRecordQueueSignalReleaseImageOHOS]) {
+ auto lock = intercept->WriteLock();
+ intercept->PreCallRecordQueueSignalReleaseImageOHOS(queue, waitSemaphoreCount, pWaitSemaphores, image, pNativeFenceFd,
+ record_obj);
+ }
+ VkResult result = DispatchQueueSignalReleaseImageOHOS(queue, waitSemaphoreCount, pWaitSemaphores, image, pNativeFenceFd);
+ record_obj.result = result;
+ for (ValidationObject* intercept : layer_data->intercept_vectors[InterceptIdPostCallRecordQueueSignalReleaseImageOHOS]) {
+ auto lock = intercept->WriteLock();
+ intercept->PostCallRecordQueueSignalReleaseImageOHOS(queue, waitSemaphoreCount, pWaitSemaphores, image, pNativeFenceFd,
+ record_obj);
+ }
+ return result;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL GetNativeBufferPropertiesOHOS(VkDevice device, const struct OH_NativeBuffer* buffer,
+ VkNativeBufferPropertiesOHOS* pProperties) {
+ auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
+ bool skip = false;
+ ErrorObject error_obj(vvl::Func::vkGetNativeBufferPropertiesOHOS, VulkanTypedHandle(device, kVulkanObjectTypeDevice));
+ for (const ValidationObject* intercept :
+ layer_data->intercept_vectors[InterceptIdPreCallValidateGetNativeBufferPropertiesOHOS]) {
+ auto lock = intercept->ReadLock();
+ skip |= intercept->PreCallValidateGetNativeBufferPropertiesOHOS(device, buffer, pProperties, error_obj);
+ if (skip) return VK_ERROR_VALIDATION_FAILED_EXT;
+ }
+ RecordObject record_obj(vvl::Func::vkGetNativeBufferPropertiesOHOS);
+ for (ValidationObject* intercept : layer_data->intercept_vectors[InterceptIdPreCallRecordGetNativeBufferPropertiesOHOS]) {
+ auto lock = intercept->WriteLock();
+ intercept->PreCallRecordGetNativeBufferPropertiesOHOS(device, buffer, pProperties, record_obj);
+ }
+ VkResult result = DispatchGetNativeBufferPropertiesOHOS(device, buffer, pProperties);
+ record_obj.result = result;
+ for (ValidationObject* intercept : layer_data->intercept_vectors[InterceptIdPostCallRecordGetNativeBufferPropertiesOHOS]) {
+ auto lock = intercept->WriteLock();
+ intercept->PostCallRecordGetNativeBufferPropertiesOHOS(device, buffer, pProperties, record_obj);
+ }
+ return result;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL GetMemoryNativeBufferOHOS(VkDevice device, const VkMemoryGetNativeBufferInfoOHOS* pInfo,
+ struct OH_NativeBuffer** pBuffer) {
+ auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
+ bool skip = false;
+ ErrorObject error_obj(vvl::Func::vkGetMemoryNativeBufferOHOS, VulkanTypedHandle(device, kVulkanObjectTypeDevice));
+ for (const ValidationObject* intercept : layer_data->intercept_vectors[InterceptIdPreCallValidateGetMemoryNativeBufferOHOS]) {
+ auto lock = intercept->ReadLock();
+ skip |= intercept->PreCallValidateGetMemoryNativeBufferOHOS(device, pInfo, pBuffer, error_obj);
+ if (skip) return VK_ERROR_VALIDATION_FAILED_EXT;
+ }
+ RecordObject record_obj(vvl::Func::vkGetMemoryNativeBufferOHOS);
+ for (ValidationObject* intercept : layer_data->intercept_vectors[InterceptIdPreCallRecordGetMemoryNativeBufferOHOS]) {
+ auto lock = intercept->WriteLock();
+ intercept->PreCallRecordGetMemoryNativeBufferOHOS(device, pInfo, pBuffer, record_obj);
+ }
+ VkResult result = DispatchGetMemoryNativeBufferOHOS(device, pInfo, pBuffer);
+ record_obj.result = result;
+ for (ValidationObject* intercept : layer_data->intercept_vectors[InterceptIdPostCallRecordGetMemoryNativeBufferOHOS]) {
+ auto lock = intercept->WriteLock();
+ intercept->PostCallRecordGetMemoryNativeBufferOHOS(device, pInfo, pBuffer, record_obj);
+ }
+ return result;
+}
+
+#endif // VK_USE_PLATFORM_OHOS
VKAPI_ATTR VkResult VKAPI_CALL CreateAccelerationStructureKHR(VkDevice device,
const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
@@ -17728,6 +17880,14 @@ const vvl::unordered_map name_to_funcptr_map = {
#ifdef VK_USE_PLATFORM_SCREEN_QNX
{"vkGetScreenBufferPropertiesQNX", {kFuncTypeDev, (void*)GetScreenBufferPropertiesQNX}},
#endif // VK_USE_PLATFORM_SCREEN_QNX
+#ifdef VK_USE_PLATFORM_OHOS
+ {"vkCreateSurfaceOHOS", {kFuncTypeInst, (void*)CreateSurfaceOHOS}},
+ {"vkGetSwapchainGrallocUsageOHOS", {kFuncTypeDev, (void*)GetSwapchainGrallocUsageOHOS}},
+ {"vkAcquireImageOHOS", {kFuncTypeDev, (void*)AcquireImageOHOS}},
+ {"vkQueueSignalReleaseImageOHOS", {kFuncTypeDev, (void*)QueueSignalReleaseImageOHOS}},
+ {"vkGetNativeBufferPropertiesOHOS", {kFuncTypeDev, (void*)GetNativeBufferPropertiesOHOS}},
+ {"vkGetMemoryNativeBufferOHOS", {kFuncTypeDev, (void*)GetMemoryNativeBufferOHOS}},
+#endif // VK_USE_PLATFORM_OHOS
{"vkCreateAccelerationStructureKHR", {kFuncTypeDev, (void*)CreateAccelerationStructureKHR}},
{"vkDestroyAccelerationStructureKHR", {kFuncTypeDev, (void*)DestroyAccelerationStructureKHR}},
{"vkCmdBuildAccelerationStructuresKHR", {kFuncTypeDev, (void*)CmdBuildAccelerationStructuresKHR}},
diff --git a/layers/vulkan/generated/chassis.h b/layers/vulkan/generated/chassis.h
index 000ef3b5342bcc636ffcdf27360b8af387a69adc..96dace6b58db57aeecc61ec2bf9e684dd5eaff6f 100644
--- a/layers/vulkan/generated/chassis.h
+++ b/layers/vulkan/generated/chassis.h
@@ -2035,6 +2035,27 @@ VKAPI_ATTR VkResult VKAPI_CALL GetScreenBufferPropertiesQNX(VkDevice device, con
VkScreenBufferPropertiesQNX* pProperties);
#endif // VK_USE_PLATFORM_SCREEN_QNX
+#ifdef VK_USE_PLATFORM_OHOS
+VKAPI_ATTR VkResult VKAPI_CALL CreateSurfaceOHOS(VkInstance instance, const VkSurfaceCreateInfoOHOS* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
+
+VKAPI_ATTR VkResult VKAPI_CALL GetSwapchainGrallocUsageOHOS(VkDevice device, VkFormat format, VkImageUsageFlags imageUsage,
+ uint64_t* grallocUsage);
+
+VKAPI_ATTR VkResult VKAPI_CALL AcquireImageOHOS(VkDevice device, VkImage image, int32_t nativeFenceFd, VkSemaphore semaphore,
+ VkFence fence);
+
+VKAPI_ATTR VkResult VKAPI_CALL QueueSignalReleaseImageOHOS(VkQueue queue, uint32_t waitSemaphoreCount,
+ const VkSemaphore* pWaitSemaphores, VkImage image,
+ int32_t* pNativeFenceFd);
+
+VKAPI_ATTR VkResult VKAPI_CALL GetNativeBufferPropertiesOHOS(VkDevice device, const struct OH_NativeBuffer* buffer,
+ VkNativeBufferPropertiesOHOS* pProperties);
+
+VKAPI_ATTR VkResult VKAPI_CALL GetMemoryNativeBufferOHOS(VkDevice device, const VkMemoryGetNativeBufferInfoOHOS* pInfo,
+ struct OH_NativeBuffer** pBuffer);
+
+#endif // VK_USE_PLATFORM_OHOS
VKAPI_ATTR VkResult VKAPI_CALL CreateAccelerationStructureKHR(VkDevice device,
const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
@@ -4454,6 +4475,26 @@ class ValidationObject {
virtual void PreCallRecordGetScreenBufferPropertiesQNX(VkDevice device, const struct _screen_buffer* buffer, VkScreenBufferPropertiesQNX* pProperties, const RecordObject& record_obj) {};
virtual void PostCallRecordGetScreenBufferPropertiesQNX(VkDevice device, const struct _screen_buffer* buffer, VkScreenBufferPropertiesQNX* pProperties, const RecordObject& record_obj) {};
#endif // VK_USE_PLATFORM_SCREEN_QNX
+#ifdef VK_USE_PLATFORM_OHOS
+ virtual bool PreCallValidateCreateSurfaceOHOS(VkInstance instance, const VkSurfaceCreateInfoOHOS* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface, const ErrorObject& error_obj) const { return false; };
+ virtual void PreCallRecordCreateSurfaceOHOS(VkInstance instance, const VkSurfaceCreateInfoOHOS* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface, const RecordObject& record_obj) {};
+ virtual void PostCallRecordCreateSurfaceOHOS(VkInstance instance, const VkSurfaceCreateInfoOHOS* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface, const RecordObject& record_obj) {};
+ virtual bool PreCallValidateGetSwapchainGrallocUsageOHOS(VkDevice device, VkFormat format, VkImageUsageFlags imageUsage, uint64_t* grallocUsage, const ErrorObject& error_obj) const { return false; };
+ virtual void PreCallRecordGetSwapchainGrallocUsageOHOS(VkDevice device, VkFormat format, VkImageUsageFlags imageUsage, uint64_t* grallocUsage, const RecordObject& record_obj) {};
+ virtual void PostCallRecordGetSwapchainGrallocUsageOHOS(VkDevice device, VkFormat format, VkImageUsageFlags imageUsage, uint64_t* grallocUsage, const RecordObject& record_obj) {};
+ virtual bool PreCallValidateAcquireImageOHOS(VkDevice device, VkImage image, int32_t nativeFenceFd, VkSemaphore semaphore, VkFence fence, const ErrorObject& error_obj) const { return false; };
+ virtual void PreCallRecordAcquireImageOHOS(VkDevice device, VkImage image, int32_t nativeFenceFd, VkSemaphore semaphore, VkFence fence, const RecordObject& record_obj) {};
+ virtual void PostCallRecordAcquireImageOHOS(VkDevice device, VkImage image, int32_t nativeFenceFd, VkSemaphore semaphore, VkFence fence, const RecordObject& record_obj) {};
+ virtual bool PreCallValidateQueueSignalReleaseImageOHOS(VkQueue queue, uint32_t waitSemaphoreCount, const VkSemaphore* pWaitSemaphores, VkImage image, int32_t* pNativeFenceFd, const ErrorObject& error_obj) const { return false; };
+ virtual void PreCallRecordQueueSignalReleaseImageOHOS(VkQueue queue, uint32_t waitSemaphoreCount, const VkSemaphore* pWaitSemaphores, VkImage image, int32_t* pNativeFenceFd, const RecordObject& record_obj) {};
+ virtual void PostCallRecordQueueSignalReleaseImageOHOS(VkQueue queue, uint32_t waitSemaphoreCount, const VkSemaphore* pWaitSemaphores, VkImage image, int32_t* pNativeFenceFd, const RecordObject& record_obj) {};
+ virtual bool PreCallValidateGetNativeBufferPropertiesOHOS(VkDevice device, const struct OH_NativeBuffer* buffer, VkNativeBufferPropertiesOHOS* pProperties, const ErrorObject& error_obj) const { return false; };
+ virtual void PreCallRecordGetNativeBufferPropertiesOHOS(VkDevice device, const struct OH_NativeBuffer* buffer, VkNativeBufferPropertiesOHOS* pProperties, const RecordObject& record_obj) {};
+ virtual void PostCallRecordGetNativeBufferPropertiesOHOS(VkDevice device, const struct OH_NativeBuffer* buffer, VkNativeBufferPropertiesOHOS* pProperties, const RecordObject& record_obj) {};
+ virtual bool PreCallValidateGetMemoryNativeBufferOHOS(VkDevice device, const VkMemoryGetNativeBufferInfoOHOS* pInfo, struct OH_NativeBuffer** pBuffer, const ErrorObject& error_obj) const { return false; };
+ virtual void PreCallRecordGetMemoryNativeBufferOHOS(VkDevice device, const VkMemoryGetNativeBufferInfoOHOS* pInfo, struct OH_NativeBuffer** pBuffer, const RecordObject& record_obj) {};
+ virtual void PostCallRecordGetMemoryNativeBufferOHOS(VkDevice device, const VkMemoryGetNativeBufferInfoOHOS* pInfo, struct OH_NativeBuffer** pBuffer, const RecordObject& record_obj) {};
+#endif // VK_USE_PLATFORM_OHOS
virtual bool PreCallValidateCreateAccelerationStructureKHR(VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure, const ErrorObject& error_obj) const { return false; };
virtual void PreCallRecordCreateAccelerationStructureKHR(VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure, const RecordObject& record_obj) {};
virtual void PostCallRecordCreateAccelerationStructureKHR(VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure, const RecordObject& record_obj) {};
diff --git a/layers/vulkan/generated/chassis_dispatch_helper.h b/layers/vulkan/generated/chassis_dispatch_helper.h
index 98fe714e31d0a062d4828948735eed0f5bfaf368..a6be9b8fa1202a7f2db215ea84be96cfc47c2535 100644
--- a/layers/vulkan/generated/chassis_dispatch_helper.h
+++ b/layers/vulkan/generated/chassis_dispatch_helper.h
@@ -1620,6 +1620,21 @@ typedef enum InterceptId {
InterceptIdPreCallValidateGetScreenBufferPropertiesQNX,
InterceptIdPreCallRecordGetScreenBufferPropertiesQNX,
InterceptIdPostCallRecordGetScreenBufferPropertiesQNX,
+ InterceptIdPreCallValidateGetSwapchainGrallocUsageOHOS,
+ InterceptIdPreCallRecordGetSwapchainGrallocUsageOHOS,
+ InterceptIdPostCallRecordGetSwapchainGrallocUsageOHOS,
+ InterceptIdPreCallValidateAcquireImageOHOS,
+ InterceptIdPreCallRecordAcquireImageOHOS,
+ InterceptIdPostCallRecordAcquireImageOHOS,
+ InterceptIdPreCallValidateQueueSignalReleaseImageOHOS,
+ InterceptIdPreCallRecordQueueSignalReleaseImageOHOS,
+ InterceptIdPostCallRecordQueueSignalReleaseImageOHOS,
+ InterceptIdPreCallValidateGetNativeBufferPropertiesOHOS,
+ InterceptIdPreCallRecordGetNativeBufferPropertiesOHOS,
+ InterceptIdPostCallRecordGetNativeBufferPropertiesOHOS,
+ InterceptIdPreCallValidateGetMemoryNativeBufferOHOS,
+ InterceptIdPreCallRecordGetMemoryNativeBufferOHOS,
+ InterceptIdPostCallRecordGetMemoryNativeBufferOHOS,
InterceptIdPreCallValidateCreateAccelerationStructureKHR,
InterceptIdPreCallRecordCreateAccelerationStructureKHR,
InterceptIdPostCallRecordCreateAccelerationStructureKHR,
@@ -3366,6 +3381,23 @@ void ValidationObject::InitObjectDispatchVectors() {
BUILD_DISPATCH_VECTOR(PreCallRecordGetScreenBufferPropertiesQNX);
BUILD_DISPATCH_VECTOR(PostCallRecordGetScreenBufferPropertiesQNX);
#endif // VK_USE_PLATFORM_SCREEN_QNX
+#ifdef VK_USE_PLATFORM_OHOS
+ BUILD_DISPATCH_VECTOR(PreCallValidateGetSwapchainGrallocUsageOHOS);
+ BUILD_DISPATCH_VECTOR(PreCallRecordGetSwapchainGrallocUsageOHOS);
+ BUILD_DISPATCH_VECTOR(PostCallRecordGetSwapchainGrallocUsageOHOS);
+ BUILD_DISPATCH_VECTOR(PreCallValidateAcquireImageOHOS);
+ BUILD_DISPATCH_VECTOR(PreCallRecordAcquireImageOHOS);
+ BUILD_DISPATCH_VECTOR(PostCallRecordAcquireImageOHOS);
+ BUILD_DISPATCH_VECTOR(PreCallValidateQueueSignalReleaseImageOHOS);
+ BUILD_DISPATCH_VECTOR(PreCallRecordQueueSignalReleaseImageOHOS);
+ BUILD_DISPATCH_VECTOR(PostCallRecordQueueSignalReleaseImageOHOS);
+ BUILD_DISPATCH_VECTOR(PreCallValidateGetNativeBufferPropertiesOHOS);
+ BUILD_DISPATCH_VECTOR(PreCallRecordGetNativeBufferPropertiesOHOS);
+ BUILD_DISPATCH_VECTOR(PostCallRecordGetNativeBufferPropertiesOHOS);
+ BUILD_DISPATCH_VECTOR(PreCallValidateGetMemoryNativeBufferOHOS);
+ BUILD_DISPATCH_VECTOR(PreCallRecordGetMemoryNativeBufferOHOS);
+ BUILD_DISPATCH_VECTOR(PostCallRecordGetMemoryNativeBufferOHOS);
+#endif // VK_USE_PLATFORM_OHOS
BUILD_DISPATCH_VECTOR(PreCallValidateCreateAccelerationStructureKHR);
BUILD_DISPATCH_VECTOR(PreCallRecordCreateAccelerationStructureKHR);
BUILD_DISPATCH_VECTOR(PostCallRecordCreateAccelerationStructureKHR);
diff --git a/layers/vulkan/generated/enum_flag_bits.h b/layers/vulkan/generated/enum_flag_bits.h
index 68910f65e6168e7d28342482f0035f6f9a062a00..654062bd24c8fa1b8047da06bec3aa0e5eb27388 100644
--- a/layers/vulkan/generated/enum_flag_bits.h
+++ b/layers/vulkan/generated/enum_flag_bits.h
@@ -60,7 +60,7 @@ const VkCommandPoolCreateFlags AllVkCommandPoolCreateFlagBits = VK_COMMAND_POOL_
const VkQueryControlFlags AllVkQueryControlFlagBits = VK_QUERY_CONTROL_PRECISE_BIT;
const VkCommandBufferUsageFlags AllVkCommandBufferUsageFlagBits = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT|VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT|VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT;
const VkMemoryAllocateFlags AllVkMemoryAllocateFlagBits = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT|VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT|VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT;
-const VkExternalMemoryHandleTypeFlags AllVkExternalMemoryHandleTypeFlagBits = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID|VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA|VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV|VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX;
+const VkExternalMemoryHandleTypeFlags AllVkExternalMemoryHandleTypeFlagBits = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID|VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA|VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV|VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX|VK_EXTERNAL_MEMORY_HANDLE_TYPE_OHOS_NATIVE_BUFFER_BIT_OHOS;
const VkExternalFenceHandleTypeFlags AllVkExternalFenceHandleTypeFlagBits = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT|VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT|VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT|VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT;
const VkExternalSemaphoreHandleTypeFlags AllVkExternalSemaphoreHandleTypeFlagBits = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT|VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT|VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT|VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT|VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT|VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA;
const VkDescriptorBindingFlags AllVkDescriptorBindingFlagBits = VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT|VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT|VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT|VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT;
@@ -126,6 +126,9 @@ const VkOpticalFlowGridSizeFlagsNV AllVkOpticalFlowGridSizeFlagBitsNV = VK_OPTIC
const VkOpticalFlowSessionCreateFlagsNV AllVkOpticalFlowSessionCreateFlagBitsNV = VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV|VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV|VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV|VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV|VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV;
const VkOpticalFlowExecuteFlagsNV AllVkOpticalFlowExecuteFlagBitsNV = VK_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV;
const VkShaderCreateFlagsEXT AllVkShaderCreateFlagBitsEXT = VK_SHADER_CREATE_LINK_STAGE_BIT_EXT|VK_SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT|VK_SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT|VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT|VK_SHADER_CREATE_DISPATCH_BASE_BIT_EXT|VK_SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT|VK_SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT;
+#ifdef VK_USE_PLATFORM_OHOS
+const VkSwapchainImageUsageFlagsOHOS AllVkSwapchainImageUsageFlagBitsOHOS = VK_SWAPCHAIN_IMAGE_USAGE_SHARED_BIT_OHOS;
+#endif // VK_USE_PLATFORM_OHOS
const VkBuildAccelerationStructureFlagsKHR AllVkBuildAccelerationStructureFlagBitsKHR = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR|VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR|VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR|VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR|VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR|VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV|VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT|VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT|VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT|VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISPLACEMENT_MICROMAP_UPDATE_NV|VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR;
const VkAccelerationStructureCreateFlagsKHR AllVkAccelerationStructureCreateFlagBitsKHR = VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR|VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT|VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV;
const VkQueryResultFlags AllVkQueryResultFlagBits = VK_QUERY_RESULT_64_BIT|VK_QUERY_RESULT_WAIT_BIT|VK_QUERY_RESULT_WITH_AVAILABILITY_BIT|VK_QUERY_RESULT_PARTIAL_BIT|VK_QUERY_RESULT_WITH_STATUS_BIT_KHR;
diff --git a/layers/vulkan/generated/error_location_helper.cpp b/layers/vulkan/generated/error_location_helper.cpp
index 8dc9c69dcae49388329730f15a75a54d2c6552e4..7dc11a468d29ee90b3e0fe3c0efd685a215128a4 100644
--- a/layers/vulkan/generated/error_location_helper.cpp
+++ b/layers/vulkan/generated/error_location_helper.cpp
@@ -33,6 +33,7 @@ const char* String(Func func) {
{"INVALID_EMPTY", 15}, // Func::Empty
{"vkAcquireDrmDisplayEXT", 23},
{"vkAcquireFullScreenExclusiveModeEXT", 36},
+ {"vkAcquireImageOHOS", 19},
{"vkAcquireNextImage2KHR", 23},
{"vkAcquireNextImageKHR", 22},
{"vkAcquirePerformanceConfigurationINTEL", 39},
@@ -372,6 +373,7 @@ const char* String(Func func) {
{"vkCreateShadersEXT", 19},
{"vkCreateSharedSwapchainsKHR", 28},
{"vkCreateStreamDescriptorSurfaceGGP", 35},
+ {"vkCreateSurfaceOHOS", 20},
{"vkCreateSwapchainKHR", 21},
{"vkCreateValidationCacheEXT", 27},
{"vkCreateViSurfaceNN", 20},
@@ -533,6 +535,7 @@ const char* String(Func func) {
{"vkGetMemoryFdKHR", 17},
{"vkGetMemoryFdPropertiesKHR", 27},
{"vkGetMemoryHostPointerPropertiesEXT", 36},
+ {"vkGetMemoryNativeBufferOHOS", 28},
{"vkGetMemoryRemoteAddressNV", 27},
{"vkGetMemoryWin32HandleKHR", 26},
{"vkGetMemoryWin32HandleNV", 25},
@@ -540,6 +543,7 @@ const char* String(Func func) {
{"vkGetMemoryZirconHandleFUCHSIA", 31},
{"vkGetMemoryZirconHandlePropertiesFUCHSIA", 41},
{"vkGetMicromapBuildSizesEXT", 27},
+ {"vkGetNativeBufferPropertiesOHOS", 32},
{"vkGetPastPresentationTimingGOOGLE", 34},
{"vkGetPerformanceParameterINTEL", 31},
{"vkGetPhysicalDeviceCalibrateableTimeDomainsEXT", 47},
@@ -635,6 +639,7 @@ const char* String(Func func) {
{"vkGetShaderModuleCreateInfoIdentifierEXT", 41},
{"vkGetShaderModuleIdentifierEXT", 31},
{"vkGetSwapchainCounterEXT", 25},
+ {"vkGetSwapchainGrallocUsageOHOS", 31},
{"vkGetSwapchainImagesKHR", 24},
{"vkGetSwapchainStatusKHR", 24},
{"vkGetValidationCacheDataEXT", 28},
@@ -659,6 +664,7 @@ const char* String(Func func) {
{"vkQueueNotifyOutOfBandNV", 25},
{"vkQueuePresentKHR", 18},
{"vkQueueSetPerformanceConfigurationINTEL", 40},
+ {"vkQueueSignalReleaseImageOHOS", 30},
{"vkQueueSubmit", 14},
{"vkQueueSubmit2", 15},
{"vkQueueSubmit2KHR", 18},
@@ -975,6 +981,7 @@ const char* String(Struct structure) {
{"VkExternalBufferProperties", 27},
{"VkExternalFenceProperties", 26},
{"VkExternalFormatANDROID", 24},
+ {"VkExternalFormatOHOS", 21},
{"VkExternalFormatQNX", 20},
{"VkExternalImageFormatProperties", 32},
{"VkExternalImageFormatPropertiesNV", 34},
@@ -1066,6 +1073,7 @@ const char* String(Struct structure) {
{"VkImportMetalIOSurfaceInfoEXT", 30},
{"VkImportMetalSharedEventInfoEXT", 32},
{"VkImportMetalTextureInfoEXT", 28},
+ {"VkImportNativeBufferInfoOHOS", 29},
{"VkImportScreenBufferInfoQNX", 28},
{"VkImportSemaphoreFdInfoKHR", 27},
{"VkImportSemaphoreWin32HandleInfoKHR", 36},
@@ -1095,6 +1103,7 @@ const char* String(Struct structure) {
{"VkMemoryFdPropertiesKHR", 24},
{"VkMemoryGetAndroidHardwareBufferInfoANDROID", 44},
{"VkMemoryGetFdInfoKHR", 21},
+ {"VkMemoryGetNativeBufferInfoOHOS", 32},
{"VkMemoryGetRemoteAddressInfoNV", 31},
{"VkMemoryGetWin32HandleInfoKHR", 30},
{"VkMemoryGetZirconHandleInfoFUCHSIA", 35},
@@ -1125,6 +1134,10 @@ const char* String(Struct structure) {
{"VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM", 53},
{"VkMutableDescriptorTypeCreateInfoEXT", 37},
{"VkMutableDescriptorTypeListEXT", 31},
+ {"VkNativeBufferFormatPropertiesOHOS", 35},
+ {"VkNativeBufferOHOS", 19},
+ {"VkNativeBufferPropertiesOHOS", 29},
+ {"VkNativeBufferUsageOHOS", 24},
{"VkOffset2D", 11},
{"VkOffset3D", 11},
{"VkOpaqueCaptureDescriptorDataCreateInfoEXT", 43},
@@ -1326,6 +1339,7 @@ const char* String(Struct structure) {
{"VkPhysicalDevicePresentBarrierFeaturesNV", 41},
{"VkPhysicalDevicePresentIdFeaturesKHR", 37},
{"VkPhysicalDevicePresentWaitFeaturesKHR", 39},
+ {"VkPhysicalDevicePresentationPropertiesOHOS", 43},
{"VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT", 56},
{"VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT", 52},
{"VkPhysicalDevicePrivateDataFeatures", 36},
@@ -1618,6 +1632,7 @@ const char* String(Struct structure) {
{"VkSurfaceCapabilitiesFullScreenExclusiveEXT", 44},
{"VkSurfaceCapabilitiesKHR", 25},
{"VkSurfaceCapabilitiesPresentBarrierNV", 38},
+ {"VkSurfaceCreateInfoOHOS", 24},
{"VkSurfaceFormat2KHR", 20},
{"VkSurfaceFormatKHR", 19},
{"VkSurfaceFullScreenExclusiveInfoEXT", 36},
@@ -1629,6 +1644,7 @@ const char* String(Struct structure) {
{"VkSwapchainCounterCreateInfoEXT", 32},
{"VkSwapchainCreateInfoKHR", 25},
{"VkSwapchainDisplayNativeHdrCreateInfoAMD", 41},
+ {"VkSwapchainImageCreateInfoOHOS", 31},
{"VkSwapchainLatencyCreateInfoNV", 31},
{"VkSwapchainPresentBarrierCreateInfoNV", 38},
{"VkSwapchainPresentFenceInfoEXT", 31},
@@ -1749,6 +1765,7 @@ const char* String(Field field) {
{"KSize", 6},
{"MSize", 6},
{"NSize", 6},
+ {"OHOSNativeBufferUsage", 22},
{"ResultType", 11},
{"a", 2},
{"aabbData", 9},
@@ -2367,6 +2384,7 @@ const char* String(Field field) {
{"gopRemainingP", 14},
{"gpuRenderEndTimeUs", 19},
{"gpuRenderStartTimeUs", 21},
+ {"grallocUsage", 13},
{"graphicsPipelineLibrary", 24},
{"graphicsPipelineLibraryFastLinking", 35},
{"graphicsPipelineLibraryIndependentInterpolationDecoration", 58},
@@ -2960,6 +2978,7 @@ const char* String(Field field) {
{"naluSliceEntryCount", 20},
{"naluSliceSegmentEntryCount", 27},
{"name", 5},
+ {"nativeFenceFd", 14},
{"negativeOneToOne", 17},
{"nestedCommandBuffer", 20},
{"nestedCommandBufferRendering", 29},
@@ -3287,6 +3306,7 @@ const char* String(Field field) {
{"pNaluSliceSegmentEntries", 25},
{"pName", 6},
{"pNameInfo", 10},
+ {"pNativeFenceFd", 15},
{"pNext", 6},
{"pNodeIndex", 11},
{"pNodeInfo", 10},
@@ -3967,6 +3987,7 @@ const char* String(Field field) {
{"shadingRatePaletteSize", 23},
{"shadingRateTexelSize", 21},
{"shadingRateType", 16},
+ {"sharedImage", 12},
{"sharedMemBytes", 15},
{"sharedPresentSupportedUsageFlags", 33},
{"sharingMode", 12},
@@ -4335,6 +4356,8 @@ bool IsFieldPointer(Field field) {
case Field::dfb:
case Field::displayName:
case Field::dpy:
+ case Field::grallocUsage:
+ case Field::handle:
case Field::hostAddress:
case Field::opaqueCaptureDescriptorData:
case Field::pAccelerationStructure:
@@ -4618,6 +4641,7 @@ bool IsFieldPointer(Field field) {
case Field::pNaluSliceSegmentEntries:
case Field::pName:
case Field::pNameInfo:
+ case Field::pNativeFenceFd:
case Field::pNext:
case Field::pNodeIndex:
case Field::pNodeInfo:
diff --git a/layers/vulkan/generated/error_location_helper.h b/layers/vulkan/generated/error_location_helper.h
index 56511423a154e24d172ac04338b4cf824167b488..7970b1e8ad9f003980443a4c3880ca580bad7825 100644
--- a/layers/vulkan/generated/error_location_helper.h
+++ b/layers/vulkan/generated/error_location_helper.h
@@ -30,681 +30,687 @@ enum class Func {
Empty = 0,
vkAcquireDrmDisplayEXT = 1,
vkAcquireFullScreenExclusiveModeEXT = 2,
- vkAcquireNextImage2KHR = 3,
- vkAcquireNextImageKHR = 4,
- vkAcquirePerformanceConfigurationINTEL = 5,
- vkAcquireProfilingLockKHR = 6,
- vkAcquireWinrtDisplayNV = 7,
- vkAcquireXlibDisplayEXT = 8,
- vkAllocateCommandBuffers = 9,
- vkAllocateDescriptorSets = 10,
- vkAllocateMemory = 11,
- vkBeginCommandBuffer = 12,
- vkBindAccelerationStructureMemoryNV = 13,
- vkBindBufferMemory = 14,
- vkBindBufferMemory2 = 15,
- vkBindBufferMemory2KHR = 16,
- vkBindImageMemory = 17,
- vkBindImageMemory2 = 18,
- vkBindImageMemory2KHR = 19,
- vkBindOpticalFlowSessionImageNV = 20,
- vkBindVideoSessionMemoryKHR = 21,
- vkBuildAccelerationStructuresKHR = 22,
- vkBuildMicromapsEXT = 23,
- vkCmdBeginConditionalRenderingEXT = 24,
- vkCmdBeginDebugUtilsLabelEXT = 25,
- vkCmdBeginQuery = 26,
- vkCmdBeginQueryIndexedEXT = 27,
- vkCmdBeginRenderPass = 28,
- vkCmdBeginRenderPass2 = 29,
- vkCmdBeginRenderPass2KHR = 30,
- vkCmdBeginRendering = 31,
- vkCmdBeginRenderingKHR = 32,
- vkCmdBeginTransformFeedbackEXT = 33,
- vkCmdBeginVideoCodingKHR = 34,
- vkCmdBindDescriptorBufferEmbeddedSamplers2EXT = 35,
- vkCmdBindDescriptorBufferEmbeddedSamplersEXT = 36,
- vkCmdBindDescriptorBuffersEXT = 37,
- vkCmdBindDescriptorSets = 38,
- vkCmdBindDescriptorSets2KHR = 39,
- vkCmdBindIndexBuffer = 40,
- vkCmdBindIndexBuffer2KHR = 41,
- vkCmdBindInvocationMaskHUAWEI = 42,
- vkCmdBindPipeline = 43,
- vkCmdBindPipelineShaderGroupNV = 44,
- vkCmdBindShadersEXT = 45,
- vkCmdBindShadingRateImageNV = 46,
- vkCmdBindTransformFeedbackBuffersEXT = 47,
- vkCmdBindVertexBuffers = 48,
- vkCmdBindVertexBuffers2 = 49,
- vkCmdBindVertexBuffers2EXT = 50,
- vkCmdBlitImage = 51,
- vkCmdBlitImage2 = 52,
- vkCmdBlitImage2KHR = 53,
- vkCmdBuildAccelerationStructureNV = 54,
- vkCmdBuildAccelerationStructuresIndirectKHR = 55,
- vkCmdBuildAccelerationStructuresKHR = 56,
- vkCmdBuildMicromapsEXT = 57,
- vkCmdClearAttachments = 58,
- vkCmdClearColorImage = 59,
- vkCmdClearDepthStencilImage = 60,
- vkCmdControlVideoCodingKHR = 61,
- vkCmdCopyAccelerationStructureKHR = 62,
- vkCmdCopyAccelerationStructureNV = 63,
- vkCmdCopyAccelerationStructureToMemoryKHR = 64,
- vkCmdCopyBuffer = 65,
- vkCmdCopyBuffer2 = 66,
- vkCmdCopyBuffer2KHR = 67,
- vkCmdCopyBufferToImage = 68,
- vkCmdCopyBufferToImage2 = 69,
- vkCmdCopyBufferToImage2KHR = 70,
- vkCmdCopyImage = 71,
- vkCmdCopyImage2 = 72,
- vkCmdCopyImage2KHR = 73,
- vkCmdCopyImageToBuffer = 74,
- vkCmdCopyImageToBuffer2 = 75,
- vkCmdCopyImageToBuffer2KHR = 76,
- vkCmdCopyMemoryIndirectNV = 77,
- vkCmdCopyMemoryToAccelerationStructureKHR = 78,
- vkCmdCopyMemoryToImageIndirectNV = 79,
- vkCmdCopyMemoryToMicromapEXT = 80,
- vkCmdCopyMicromapEXT = 81,
- vkCmdCopyMicromapToMemoryEXT = 82,
- vkCmdCopyQueryPoolResults = 83,
- vkCmdCuLaunchKernelNVX = 84,
- vkCmdCudaLaunchKernelNV = 85,
- vkCmdDebugMarkerBeginEXT = 86,
- vkCmdDebugMarkerEndEXT = 87,
- vkCmdDebugMarkerInsertEXT = 88,
- vkCmdDecodeVideoKHR = 89,
- vkCmdDecompressMemoryIndirectCountNV = 90,
- vkCmdDecompressMemoryNV = 91,
- vkCmdDispatch = 92,
- vkCmdDispatchBase = 93,
- vkCmdDispatchBaseKHR = 94,
- vkCmdDispatchGraphAMDX = 95,
- vkCmdDispatchGraphIndirectAMDX = 96,
- vkCmdDispatchGraphIndirectCountAMDX = 97,
- vkCmdDispatchIndirect = 98,
- vkCmdDraw = 99,
- vkCmdDrawClusterHUAWEI = 100,
- vkCmdDrawClusterIndirectHUAWEI = 101,
- vkCmdDrawIndexed = 102,
- vkCmdDrawIndexedIndirect = 103,
- vkCmdDrawIndexedIndirectCount = 104,
- vkCmdDrawIndexedIndirectCountAMD = 105,
- vkCmdDrawIndexedIndirectCountKHR = 106,
- vkCmdDrawIndirect = 107,
- vkCmdDrawIndirectByteCountEXT = 108,
- vkCmdDrawIndirectCount = 109,
- vkCmdDrawIndirectCountAMD = 110,
- vkCmdDrawIndirectCountKHR = 111,
- vkCmdDrawMeshTasksEXT = 112,
- vkCmdDrawMeshTasksIndirectCountEXT = 113,
- vkCmdDrawMeshTasksIndirectCountNV = 114,
- vkCmdDrawMeshTasksIndirectEXT = 115,
- vkCmdDrawMeshTasksIndirectNV = 116,
- vkCmdDrawMeshTasksNV = 117,
- vkCmdDrawMultiEXT = 118,
- vkCmdDrawMultiIndexedEXT = 119,
- vkCmdEncodeVideoKHR = 120,
- vkCmdEndConditionalRenderingEXT = 121,
- vkCmdEndDebugUtilsLabelEXT = 122,
- vkCmdEndQuery = 123,
- vkCmdEndQueryIndexedEXT = 124,
- vkCmdEndRenderPass = 125,
- vkCmdEndRenderPass2 = 126,
- vkCmdEndRenderPass2KHR = 127,
- vkCmdEndRendering = 128,
- vkCmdEndRenderingKHR = 129,
- vkCmdEndTransformFeedbackEXT = 130,
- vkCmdEndVideoCodingKHR = 131,
- vkCmdExecuteCommands = 132,
- vkCmdExecuteGeneratedCommandsNV = 133,
- vkCmdFillBuffer = 134,
- vkCmdInitializeGraphScratchMemoryAMDX = 135,
- vkCmdInsertDebugUtilsLabelEXT = 136,
- vkCmdNextSubpass = 137,
- vkCmdNextSubpass2 = 138,
- vkCmdNextSubpass2KHR = 139,
- vkCmdOpticalFlowExecuteNV = 140,
- vkCmdPipelineBarrier = 141,
- vkCmdPipelineBarrier2 = 142,
- vkCmdPipelineBarrier2KHR = 143,
- vkCmdPreprocessGeneratedCommandsNV = 144,
- vkCmdPushConstants = 145,
- vkCmdPushConstants2KHR = 146,
- vkCmdPushDescriptorSet2KHR = 147,
- vkCmdPushDescriptorSetKHR = 148,
- vkCmdPushDescriptorSetWithTemplate2KHR = 149,
- vkCmdPushDescriptorSetWithTemplateKHR = 150,
- vkCmdResetEvent = 151,
- vkCmdResetEvent2 = 152,
- vkCmdResetEvent2KHR = 153,
- vkCmdResetQueryPool = 154,
- vkCmdResolveImage = 155,
- vkCmdResolveImage2 = 156,
- vkCmdResolveImage2KHR = 157,
- vkCmdSetAlphaToCoverageEnableEXT = 158,
- vkCmdSetAlphaToOneEnableEXT = 159,
- vkCmdSetAttachmentFeedbackLoopEnableEXT = 160,
- vkCmdSetBlendConstants = 161,
- vkCmdSetCheckpointNV = 162,
- vkCmdSetCoarseSampleOrderNV = 163,
- vkCmdSetColorBlendAdvancedEXT = 164,
- vkCmdSetColorBlendEnableEXT = 165,
- vkCmdSetColorBlendEquationEXT = 166,
- vkCmdSetColorWriteEnableEXT = 167,
- vkCmdSetColorWriteMaskEXT = 168,
- vkCmdSetConservativeRasterizationModeEXT = 169,
- vkCmdSetCoverageModulationModeNV = 170,
- vkCmdSetCoverageModulationTableEnableNV = 171,
- vkCmdSetCoverageModulationTableNV = 172,
- vkCmdSetCoverageReductionModeNV = 173,
- vkCmdSetCoverageToColorEnableNV = 174,
- vkCmdSetCoverageToColorLocationNV = 175,
- vkCmdSetCullMode = 176,
- vkCmdSetCullModeEXT = 177,
- vkCmdSetDepthBias = 178,
- vkCmdSetDepthBias2EXT = 179,
- vkCmdSetDepthBiasEnable = 180,
- vkCmdSetDepthBiasEnableEXT = 181,
- vkCmdSetDepthBounds = 182,
- vkCmdSetDepthBoundsTestEnable = 183,
- vkCmdSetDepthBoundsTestEnableEXT = 184,
- vkCmdSetDepthClampEnableEXT = 185,
- vkCmdSetDepthClipEnableEXT = 186,
- vkCmdSetDepthClipNegativeOneToOneEXT = 187,
- vkCmdSetDepthCompareOp = 188,
- vkCmdSetDepthCompareOpEXT = 189,
- vkCmdSetDepthTestEnable = 190,
- vkCmdSetDepthTestEnableEXT = 191,
- vkCmdSetDepthWriteEnable = 192,
- vkCmdSetDepthWriteEnableEXT = 193,
- vkCmdSetDescriptorBufferOffsets2EXT = 194,
- vkCmdSetDescriptorBufferOffsetsEXT = 195,
- vkCmdSetDeviceMask = 196,
- vkCmdSetDeviceMaskKHR = 197,
- vkCmdSetDiscardRectangleEXT = 198,
- vkCmdSetDiscardRectangleEnableEXT = 199,
- vkCmdSetDiscardRectangleModeEXT = 200,
- vkCmdSetEvent = 201,
- vkCmdSetEvent2 = 202,
- vkCmdSetEvent2KHR = 203,
- vkCmdSetExclusiveScissorEnableNV = 204,
- vkCmdSetExclusiveScissorNV = 205,
- vkCmdSetExtraPrimitiveOverestimationSizeEXT = 206,
- vkCmdSetFragmentShadingRateEnumNV = 207,
- vkCmdSetFragmentShadingRateKHR = 208,
- vkCmdSetFrontFace = 209,
- vkCmdSetFrontFaceEXT = 210,
- vkCmdSetLineRasterizationModeEXT = 211,
- vkCmdSetLineStippleEXT = 212,
- vkCmdSetLineStippleEnableEXT = 213,
- vkCmdSetLineWidth = 214,
- vkCmdSetLogicOpEXT = 215,
- vkCmdSetLogicOpEnableEXT = 216,
- vkCmdSetPatchControlPointsEXT = 217,
- vkCmdSetPerformanceMarkerINTEL = 218,
- vkCmdSetPerformanceOverrideINTEL = 219,
- vkCmdSetPerformanceStreamMarkerINTEL = 220,
- vkCmdSetPolygonModeEXT = 221,
- vkCmdSetPrimitiveRestartEnable = 222,
- vkCmdSetPrimitiveRestartEnableEXT = 223,
- vkCmdSetPrimitiveTopology = 224,
- vkCmdSetPrimitiveTopologyEXT = 225,
- vkCmdSetProvokingVertexModeEXT = 226,
- vkCmdSetRasterizationSamplesEXT = 227,
- vkCmdSetRasterizationStreamEXT = 228,
- vkCmdSetRasterizerDiscardEnable = 229,
- vkCmdSetRasterizerDiscardEnableEXT = 230,
- vkCmdSetRayTracingPipelineStackSizeKHR = 231,
- vkCmdSetRepresentativeFragmentTestEnableNV = 232,
- vkCmdSetSampleLocationsEXT = 233,
- vkCmdSetSampleLocationsEnableEXT = 234,
- vkCmdSetSampleMaskEXT = 235,
- vkCmdSetScissor = 236,
- vkCmdSetScissorWithCount = 237,
- vkCmdSetScissorWithCountEXT = 238,
- vkCmdSetShadingRateImageEnableNV = 239,
- vkCmdSetStencilCompareMask = 240,
- vkCmdSetStencilOp = 241,
- vkCmdSetStencilOpEXT = 242,
- vkCmdSetStencilReference = 243,
- vkCmdSetStencilTestEnable = 244,
- vkCmdSetStencilTestEnableEXT = 245,
- vkCmdSetStencilWriteMask = 246,
- vkCmdSetTessellationDomainOriginEXT = 247,
- vkCmdSetVertexInputEXT = 248,
- vkCmdSetViewport = 249,
- vkCmdSetViewportShadingRatePaletteNV = 250,
- vkCmdSetViewportSwizzleNV = 251,
- vkCmdSetViewportWScalingEnableNV = 252,
- vkCmdSetViewportWScalingNV = 253,
- vkCmdSetViewportWithCount = 254,
- vkCmdSetViewportWithCountEXT = 255,
- vkCmdSubpassShadingHUAWEI = 256,
- vkCmdTraceRaysIndirect2KHR = 257,
- vkCmdTraceRaysIndirectKHR = 258,
- vkCmdTraceRaysKHR = 259,
- vkCmdTraceRaysNV = 260,
- vkCmdUpdateBuffer = 261,
- vkCmdUpdatePipelineIndirectBufferNV = 262,
- vkCmdWaitEvents = 263,
- vkCmdWaitEvents2 = 264,
- vkCmdWaitEvents2KHR = 265,
- vkCmdWriteAccelerationStructuresPropertiesKHR = 266,
- vkCmdWriteAccelerationStructuresPropertiesNV = 267,
- vkCmdWriteBufferMarker2AMD = 268,
- vkCmdWriteBufferMarkerAMD = 269,
- vkCmdWriteMicromapsPropertiesEXT = 270,
- vkCmdWriteTimestamp = 271,
- vkCmdWriteTimestamp2 = 272,
- vkCmdWriteTimestamp2KHR = 273,
- vkCompileDeferredNV = 274,
- vkCopyAccelerationStructureKHR = 275,
- vkCopyAccelerationStructureToMemoryKHR = 276,
- vkCopyImageToImageEXT = 277,
- vkCopyImageToMemoryEXT = 278,
- vkCopyMemoryToAccelerationStructureKHR = 279,
- vkCopyMemoryToImageEXT = 280,
- vkCopyMemoryToMicromapEXT = 281,
- vkCopyMicromapEXT = 282,
- vkCopyMicromapToMemoryEXT = 283,
- vkCreateAccelerationStructureKHR = 284,
- vkCreateAccelerationStructureNV = 285,
- vkCreateAndroidSurfaceKHR = 286,
- vkCreateBuffer = 287,
- vkCreateBufferCollectionFUCHSIA = 288,
- vkCreateBufferView = 289,
- vkCreateCommandPool = 290,
- vkCreateComputePipelines = 291,
- vkCreateCuFunctionNVX = 292,
- vkCreateCuModuleNVX = 293,
- vkCreateCudaFunctionNV = 294,
- vkCreateCudaModuleNV = 295,
- vkCreateDebugReportCallbackEXT = 296,
- vkCreateDebugUtilsMessengerEXT = 297,
- vkCreateDeferredOperationKHR = 298,
- vkCreateDescriptorPool = 299,
- vkCreateDescriptorSetLayout = 300,
- vkCreateDescriptorUpdateTemplate = 301,
- vkCreateDescriptorUpdateTemplateKHR = 302,
- vkCreateDevice = 303,
- vkCreateDirectFBSurfaceEXT = 304,
- vkCreateDisplayModeKHR = 305,
- vkCreateDisplayPlaneSurfaceKHR = 306,
- vkCreateEvent = 307,
- vkCreateExecutionGraphPipelinesAMDX = 308,
- vkCreateFence = 309,
- vkCreateFramebuffer = 310,
- vkCreateGraphicsPipelines = 311,
- vkCreateHeadlessSurfaceEXT = 312,
- vkCreateIOSSurfaceMVK = 313,
- vkCreateImage = 314,
- vkCreateImagePipeSurfaceFUCHSIA = 315,
- vkCreateImageView = 316,
- vkCreateIndirectCommandsLayoutNV = 317,
- vkCreateInstance = 318,
- vkCreateMacOSSurfaceMVK = 319,
- vkCreateMetalSurfaceEXT = 320,
- vkCreateMicromapEXT = 321,
- vkCreateOpticalFlowSessionNV = 322,
- vkCreatePipelineCache = 323,
- vkCreatePipelineLayout = 324,
- vkCreatePrivateDataSlot = 325,
- vkCreatePrivateDataSlotEXT = 326,
- vkCreateQueryPool = 327,
- vkCreateRayTracingPipelinesKHR = 328,
- vkCreateRayTracingPipelinesNV = 329,
- vkCreateRenderPass = 330,
- vkCreateRenderPass2 = 331,
- vkCreateRenderPass2KHR = 332,
- vkCreateSampler = 333,
- vkCreateSamplerYcbcrConversion = 334,
- vkCreateSamplerYcbcrConversionKHR = 335,
- vkCreateScreenSurfaceQNX = 336,
- vkCreateSemaphore = 337,
- vkCreateShaderModule = 338,
- vkCreateShadersEXT = 339,
- vkCreateSharedSwapchainsKHR = 340,
- vkCreateStreamDescriptorSurfaceGGP = 341,
- vkCreateSwapchainKHR = 342,
- vkCreateValidationCacheEXT = 343,
- vkCreateViSurfaceNN = 344,
- vkCreateVideoSessionKHR = 345,
- vkCreateVideoSessionParametersKHR = 346,
- vkCreateWaylandSurfaceKHR = 347,
- vkCreateWin32SurfaceKHR = 348,
- vkCreateXcbSurfaceKHR = 349,
- vkCreateXlibSurfaceKHR = 350,
- vkDebugMarkerSetObjectNameEXT = 351,
- vkDebugMarkerSetObjectTagEXT = 352,
- vkDebugReportMessageEXT = 353,
- vkDeferredOperationJoinKHR = 354,
- vkDestroyAccelerationStructureKHR = 355,
- vkDestroyAccelerationStructureNV = 356,
- vkDestroyBuffer = 357,
- vkDestroyBufferCollectionFUCHSIA = 358,
- vkDestroyBufferView = 359,
- vkDestroyCommandPool = 360,
- vkDestroyCuFunctionNVX = 361,
- vkDestroyCuModuleNVX = 362,
- vkDestroyCudaFunctionNV = 363,
- vkDestroyCudaModuleNV = 364,
- vkDestroyDebugReportCallbackEXT = 365,
- vkDestroyDebugUtilsMessengerEXT = 366,
- vkDestroyDeferredOperationKHR = 367,
- vkDestroyDescriptorPool = 368,
- vkDestroyDescriptorSetLayout = 369,
- vkDestroyDescriptorUpdateTemplate = 370,
- vkDestroyDescriptorUpdateTemplateKHR = 371,
- vkDestroyDevice = 372,
- vkDestroyEvent = 373,
- vkDestroyFence = 374,
- vkDestroyFramebuffer = 375,
- vkDestroyImage = 376,
- vkDestroyImageView = 377,
- vkDestroyIndirectCommandsLayoutNV = 378,
- vkDestroyInstance = 379,
- vkDestroyMicromapEXT = 380,
- vkDestroyOpticalFlowSessionNV = 381,
- vkDestroyPipeline = 382,
- vkDestroyPipelineCache = 383,
- vkDestroyPipelineLayout = 384,
- vkDestroyPrivateDataSlot = 385,
- vkDestroyPrivateDataSlotEXT = 386,
- vkDestroyQueryPool = 387,
- vkDestroyRenderPass = 388,
- vkDestroySampler = 389,
- vkDestroySamplerYcbcrConversion = 390,
- vkDestroySamplerYcbcrConversionKHR = 391,
- vkDestroySemaphore = 392,
- vkDestroyShaderEXT = 393,
- vkDestroyShaderModule = 394,
- vkDestroySurfaceKHR = 395,
- vkDestroySwapchainKHR = 396,
- vkDestroyValidationCacheEXT = 397,
- vkDestroyVideoSessionKHR = 398,
- vkDestroyVideoSessionParametersKHR = 399,
- vkDeviceWaitIdle = 400,
- vkDisplayPowerControlEXT = 401,
- vkEndCommandBuffer = 402,
- vkEnumerateDeviceExtensionProperties = 403,
- vkEnumerateDeviceLayerProperties = 404,
- vkEnumerateInstanceExtensionProperties = 405,
- vkEnumerateInstanceLayerProperties = 406,
- vkEnumerateInstanceVersion = 407,
- vkEnumeratePhysicalDeviceGroups = 408,
- vkEnumeratePhysicalDeviceGroupsKHR = 409,
- vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = 410,
- vkEnumeratePhysicalDevices = 411,
- vkExportMetalObjectsEXT = 412,
- vkFlushMappedMemoryRanges = 413,
- vkFreeCommandBuffers = 414,
- vkFreeDescriptorSets = 415,
- vkFreeMemory = 416,
- vkGetAccelerationStructureBuildSizesKHR = 417,
- vkGetAccelerationStructureDeviceAddressKHR = 418,
- vkGetAccelerationStructureHandleNV = 419,
- vkGetAccelerationStructureMemoryRequirementsNV = 420,
- vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = 421,
- vkGetAndroidHardwareBufferPropertiesANDROID = 422,
- vkGetBufferCollectionPropertiesFUCHSIA = 423,
- vkGetBufferDeviceAddress = 424,
- vkGetBufferDeviceAddressEXT = 425,
- vkGetBufferDeviceAddressKHR = 426,
- vkGetBufferMemoryRequirements = 427,
- vkGetBufferMemoryRequirements2 = 428,
- vkGetBufferMemoryRequirements2KHR = 429,
- vkGetBufferOpaqueCaptureAddress = 430,
- vkGetBufferOpaqueCaptureAddressKHR = 431,
- vkGetBufferOpaqueCaptureDescriptorDataEXT = 432,
- vkGetCalibratedTimestampsEXT = 433,
- vkGetCalibratedTimestampsKHR = 434,
- vkGetCudaModuleCacheNV = 435,
- vkGetDeferredOperationMaxConcurrencyKHR = 436,
- vkGetDeferredOperationResultKHR = 437,
- vkGetDescriptorEXT = 438,
- vkGetDescriptorSetHostMappingVALVE = 439,
- vkGetDescriptorSetLayoutBindingOffsetEXT = 440,
- vkGetDescriptorSetLayoutHostMappingInfoVALVE = 441,
- vkGetDescriptorSetLayoutSizeEXT = 442,
- vkGetDescriptorSetLayoutSupport = 443,
- vkGetDescriptorSetLayoutSupportKHR = 444,
- vkGetDeviceAccelerationStructureCompatibilityKHR = 445,
- vkGetDeviceBufferMemoryRequirements = 446,
- vkGetDeviceBufferMemoryRequirementsKHR = 447,
- vkGetDeviceFaultInfoEXT = 448,
- vkGetDeviceGroupPeerMemoryFeatures = 449,
- vkGetDeviceGroupPeerMemoryFeaturesKHR = 450,
- vkGetDeviceGroupPresentCapabilitiesKHR = 451,
- vkGetDeviceGroupSurfacePresentModes2EXT = 452,
- vkGetDeviceGroupSurfacePresentModesKHR = 453,
- vkGetDeviceImageMemoryRequirements = 454,
- vkGetDeviceImageMemoryRequirementsKHR = 455,
- vkGetDeviceImageSparseMemoryRequirements = 456,
- vkGetDeviceImageSparseMemoryRequirementsKHR = 457,
- vkGetDeviceImageSubresourceLayoutKHR = 458,
- vkGetDeviceMemoryCommitment = 459,
- vkGetDeviceMemoryOpaqueCaptureAddress = 460,
- vkGetDeviceMemoryOpaqueCaptureAddressKHR = 461,
- vkGetDeviceMicromapCompatibilityEXT = 462,
- vkGetDeviceProcAddr = 463,
- vkGetDeviceQueue = 464,
- vkGetDeviceQueue2 = 465,
- vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = 466,
- vkGetDisplayModeProperties2KHR = 467,
- vkGetDisplayModePropertiesKHR = 468,
- vkGetDisplayPlaneCapabilities2KHR = 469,
- vkGetDisplayPlaneCapabilitiesKHR = 470,
- vkGetDisplayPlaneSupportedDisplaysKHR = 471,
- vkGetDrmDisplayEXT = 472,
- vkGetDynamicRenderingTilePropertiesQCOM = 473,
- vkGetEncodedVideoSessionParametersKHR = 474,
- vkGetEventStatus = 475,
- vkGetExecutionGraphPipelineNodeIndexAMDX = 476,
- vkGetExecutionGraphPipelineScratchSizeAMDX = 477,
- vkGetFenceFdKHR = 478,
- vkGetFenceStatus = 479,
- vkGetFenceWin32HandleKHR = 480,
- vkGetFramebufferTilePropertiesQCOM = 481,
- vkGetGeneratedCommandsMemoryRequirementsNV = 482,
- vkGetImageDrmFormatModifierPropertiesEXT = 483,
- vkGetImageMemoryRequirements = 484,
- vkGetImageMemoryRequirements2 = 485,
- vkGetImageMemoryRequirements2KHR = 486,
- vkGetImageOpaqueCaptureDescriptorDataEXT = 487,
- vkGetImageSparseMemoryRequirements = 488,
- vkGetImageSparseMemoryRequirements2 = 489,
- vkGetImageSparseMemoryRequirements2KHR = 490,
- vkGetImageSubresourceLayout = 491,
- vkGetImageSubresourceLayout2EXT = 492,
- vkGetImageSubresourceLayout2KHR = 493,
- vkGetImageViewAddressNVX = 494,
- vkGetImageViewHandleNVX = 495,
- vkGetImageViewOpaqueCaptureDescriptorDataEXT = 496,
- vkGetInstanceProcAddr = 497,
- vkGetLatencyTimingsNV = 498,
- vkGetMemoryAndroidHardwareBufferANDROID = 499,
- vkGetMemoryFdKHR = 500,
- vkGetMemoryFdPropertiesKHR = 501,
- vkGetMemoryHostPointerPropertiesEXT = 502,
- vkGetMemoryRemoteAddressNV = 503,
- vkGetMemoryWin32HandleKHR = 504,
- vkGetMemoryWin32HandleNV = 505,
- vkGetMemoryWin32HandlePropertiesKHR = 506,
- vkGetMemoryZirconHandleFUCHSIA = 507,
- vkGetMemoryZirconHandlePropertiesFUCHSIA = 508,
- vkGetMicromapBuildSizesEXT = 509,
- vkGetPastPresentationTimingGOOGLE = 510,
- vkGetPerformanceParameterINTEL = 511,
- vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = 512,
- vkGetPhysicalDeviceCalibrateableTimeDomainsKHR = 513,
- vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR = 514,
- vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = 515,
- vkGetPhysicalDeviceDirectFBPresentationSupportEXT = 516,
- vkGetPhysicalDeviceDisplayPlaneProperties2KHR = 517,
- vkGetPhysicalDeviceDisplayPlanePropertiesKHR = 518,
- vkGetPhysicalDeviceDisplayProperties2KHR = 519,
- vkGetPhysicalDeviceDisplayPropertiesKHR = 520,
- vkGetPhysicalDeviceExternalBufferProperties = 521,
- vkGetPhysicalDeviceExternalBufferPropertiesKHR = 522,
- vkGetPhysicalDeviceExternalFenceProperties = 523,
- vkGetPhysicalDeviceExternalFencePropertiesKHR = 524,
- vkGetPhysicalDeviceExternalImageFormatPropertiesNV = 525,
- vkGetPhysicalDeviceExternalSemaphoreProperties = 526,
- vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = 527,
- vkGetPhysicalDeviceFeatures = 528,
- vkGetPhysicalDeviceFeatures2 = 529,
- vkGetPhysicalDeviceFeatures2KHR = 530,
- vkGetPhysicalDeviceFormatProperties = 531,
- vkGetPhysicalDeviceFormatProperties2 = 532,
- vkGetPhysicalDeviceFormatProperties2KHR = 533,
- vkGetPhysicalDeviceFragmentShadingRatesKHR = 534,
- vkGetPhysicalDeviceImageFormatProperties = 535,
- vkGetPhysicalDeviceImageFormatProperties2 = 536,
- vkGetPhysicalDeviceImageFormatProperties2KHR = 537,
- vkGetPhysicalDeviceMemoryProperties = 538,
- vkGetPhysicalDeviceMemoryProperties2 = 539,
- vkGetPhysicalDeviceMemoryProperties2KHR = 540,
- vkGetPhysicalDeviceMultisamplePropertiesEXT = 541,
- vkGetPhysicalDeviceOpticalFlowImageFormatsNV = 542,
- vkGetPhysicalDevicePresentRectanglesKHR = 543,
- vkGetPhysicalDeviceProperties = 544,
- vkGetPhysicalDeviceProperties2 = 545,
- vkGetPhysicalDeviceProperties2KHR = 546,
- vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = 547,
- vkGetPhysicalDeviceQueueFamilyProperties = 548,
- vkGetPhysicalDeviceQueueFamilyProperties2 = 549,
- vkGetPhysicalDeviceQueueFamilyProperties2KHR = 550,
- vkGetPhysicalDeviceScreenPresentationSupportQNX = 551,
- vkGetPhysicalDeviceSparseImageFormatProperties = 552,
- vkGetPhysicalDeviceSparseImageFormatProperties2 = 553,
- vkGetPhysicalDeviceSparseImageFormatProperties2KHR = 554,
- vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = 555,
- vkGetPhysicalDeviceSurfaceCapabilities2EXT = 556,
- vkGetPhysicalDeviceSurfaceCapabilities2KHR = 557,
- vkGetPhysicalDeviceSurfaceCapabilitiesKHR = 558,
- vkGetPhysicalDeviceSurfaceFormats2KHR = 559,
- vkGetPhysicalDeviceSurfaceFormatsKHR = 560,
- vkGetPhysicalDeviceSurfacePresentModes2EXT = 561,
- vkGetPhysicalDeviceSurfacePresentModesKHR = 562,
- vkGetPhysicalDeviceSurfaceSupportKHR = 563,
- vkGetPhysicalDeviceToolProperties = 564,
- vkGetPhysicalDeviceToolPropertiesEXT = 565,
- vkGetPhysicalDeviceVideoCapabilitiesKHR = 566,
- vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR = 567,
- vkGetPhysicalDeviceVideoFormatPropertiesKHR = 568,
- vkGetPhysicalDeviceWaylandPresentationSupportKHR = 569,
- vkGetPhysicalDeviceWin32PresentationSupportKHR = 570,
- vkGetPhysicalDeviceXcbPresentationSupportKHR = 571,
- vkGetPhysicalDeviceXlibPresentationSupportKHR = 572,
- vkGetPipelineCacheData = 573,
- vkGetPipelineExecutableInternalRepresentationsKHR = 574,
- vkGetPipelineExecutablePropertiesKHR = 575,
- vkGetPipelineExecutableStatisticsKHR = 576,
- vkGetPipelineIndirectDeviceAddressNV = 577,
- vkGetPipelineIndirectMemoryRequirementsNV = 578,
- vkGetPipelinePropertiesEXT = 579,
- vkGetPrivateData = 580,
- vkGetPrivateDataEXT = 581,
- vkGetQueryPoolResults = 582,
- vkGetQueueCheckpointData2NV = 583,
- vkGetQueueCheckpointDataNV = 584,
- vkGetRandROutputDisplayEXT = 585,
- vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = 586,
- vkGetRayTracingShaderGroupHandlesKHR = 587,
- vkGetRayTracingShaderGroupHandlesNV = 588,
- vkGetRayTracingShaderGroupStackSizeKHR = 589,
- vkGetRefreshCycleDurationGOOGLE = 590,
- vkGetRenderAreaGranularity = 591,
- vkGetRenderingAreaGranularityKHR = 592,
- vkGetSamplerOpaqueCaptureDescriptorDataEXT = 593,
- vkGetScreenBufferPropertiesQNX = 594,
- vkGetSemaphoreCounterValue = 595,
- vkGetSemaphoreCounterValueKHR = 596,
- vkGetSemaphoreFdKHR = 597,
- vkGetSemaphoreWin32HandleKHR = 598,
- vkGetSemaphoreZirconHandleFUCHSIA = 599,
- vkGetShaderBinaryDataEXT = 600,
- vkGetShaderInfoAMD = 601,
- vkGetShaderModuleCreateInfoIdentifierEXT = 602,
- vkGetShaderModuleIdentifierEXT = 603,
- vkGetSwapchainCounterEXT = 604,
- vkGetSwapchainImagesKHR = 605,
- vkGetSwapchainStatusKHR = 606,
- vkGetValidationCacheDataEXT = 607,
- vkGetVideoSessionMemoryRequirementsKHR = 608,
- vkGetWinrtDisplayNV = 609,
- vkImportFenceFdKHR = 610,
- vkImportFenceWin32HandleKHR = 611,
- vkImportSemaphoreFdKHR = 612,
- vkImportSemaphoreWin32HandleKHR = 613,
- vkImportSemaphoreZirconHandleFUCHSIA = 614,
- vkInitializePerformanceApiINTEL = 615,
- vkInvalidateMappedMemoryRanges = 616,
- vkLatencySleepNV = 617,
- vkMapMemory = 618,
- vkMapMemory2KHR = 619,
- vkMergePipelineCaches = 620,
- vkMergeValidationCachesEXT = 621,
- vkQueueBeginDebugUtilsLabelEXT = 622,
- vkQueueBindSparse = 623,
- vkQueueEndDebugUtilsLabelEXT = 624,
- vkQueueInsertDebugUtilsLabelEXT = 625,
- vkQueueNotifyOutOfBandNV = 626,
- vkQueuePresentKHR = 627,
- vkQueueSetPerformanceConfigurationINTEL = 628,
- vkQueueSubmit = 629,
- vkQueueSubmit2 = 630,
- vkQueueSubmit2KHR = 631,
- vkQueueWaitIdle = 632,
- vkRegisterDeviceEventEXT = 633,
- vkRegisterDisplayEventEXT = 634,
- vkReleaseDisplayEXT = 635,
- vkReleaseFullScreenExclusiveModeEXT = 636,
- vkReleasePerformanceConfigurationINTEL = 637,
- vkReleaseProfilingLockKHR = 638,
- vkReleaseSwapchainImagesEXT = 639,
- vkResetCommandBuffer = 640,
- vkResetCommandPool = 641,
- vkResetDescriptorPool = 642,
- vkResetEvent = 643,
- vkResetFences = 644,
- vkResetQueryPool = 645,
- vkResetQueryPoolEXT = 646,
- vkSetBufferCollectionBufferConstraintsFUCHSIA = 647,
- vkSetBufferCollectionImageConstraintsFUCHSIA = 648,
- vkSetDebugUtilsObjectNameEXT = 649,
- vkSetDebugUtilsObjectTagEXT = 650,
- vkSetDeviceMemoryPriorityEXT = 651,
- vkSetEvent = 652,
- vkSetHdrMetadataEXT = 653,
- vkSetLatencyMarkerNV = 654,
- vkSetLatencySleepModeNV = 655,
- vkSetLocalDimmingAMD = 656,
- vkSetPrivateData = 657,
- vkSetPrivateDataEXT = 658,
- vkSignalSemaphore = 659,
- vkSignalSemaphoreKHR = 660,
- vkSubmitDebugUtilsMessageEXT = 661,
- vkTransitionImageLayoutEXT = 662,
- vkTrimCommandPool = 663,
- vkTrimCommandPoolKHR = 664,
- vkUninitializePerformanceApiINTEL = 665,
- vkUnmapMemory = 666,
- vkUnmapMemory2KHR = 667,
- vkUpdateDescriptorSetWithTemplate = 668,
- vkUpdateDescriptorSetWithTemplateKHR = 669,
- vkUpdateDescriptorSets = 670,
- vkUpdateVideoSessionParametersKHR = 671,
- vkWaitForFences = 672,
- vkWaitForPresentKHR = 673,
- vkWaitSemaphores = 674,
- vkWaitSemaphoresKHR = 675,
- vkWriteAccelerationStructuresPropertiesKHR = 676,
- vkWriteMicromapsPropertiesEXT = 677,
+ vkAcquireImageOHOS = 3,
+ vkAcquireNextImage2KHR = 4,
+ vkAcquireNextImageKHR = 5,
+ vkAcquirePerformanceConfigurationINTEL = 6,
+ vkAcquireProfilingLockKHR = 7,
+ vkAcquireWinrtDisplayNV = 8,
+ vkAcquireXlibDisplayEXT = 9,
+ vkAllocateCommandBuffers = 10,
+ vkAllocateDescriptorSets = 11,
+ vkAllocateMemory = 12,
+ vkBeginCommandBuffer = 13,
+ vkBindAccelerationStructureMemoryNV = 14,
+ vkBindBufferMemory = 15,
+ vkBindBufferMemory2 = 16,
+ vkBindBufferMemory2KHR = 17,
+ vkBindImageMemory = 18,
+ vkBindImageMemory2 = 19,
+ vkBindImageMemory2KHR = 20,
+ vkBindOpticalFlowSessionImageNV = 21,
+ vkBindVideoSessionMemoryKHR = 22,
+ vkBuildAccelerationStructuresKHR = 23,
+ vkBuildMicromapsEXT = 24,
+ vkCmdBeginConditionalRenderingEXT = 25,
+ vkCmdBeginDebugUtilsLabelEXT = 26,
+ vkCmdBeginQuery = 27,
+ vkCmdBeginQueryIndexedEXT = 28,
+ vkCmdBeginRenderPass = 29,
+ vkCmdBeginRenderPass2 = 30,
+ vkCmdBeginRenderPass2KHR = 31,
+ vkCmdBeginRendering = 32,
+ vkCmdBeginRenderingKHR = 33,
+ vkCmdBeginTransformFeedbackEXT = 34,
+ vkCmdBeginVideoCodingKHR = 35,
+ vkCmdBindDescriptorBufferEmbeddedSamplers2EXT = 36,
+ vkCmdBindDescriptorBufferEmbeddedSamplersEXT = 37,
+ vkCmdBindDescriptorBuffersEXT = 38,
+ vkCmdBindDescriptorSets = 39,
+ vkCmdBindDescriptorSets2KHR = 40,
+ vkCmdBindIndexBuffer = 41,
+ vkCmdBindIndexBuffer2KHR = 42,
+ vkCmdBindInvocationMaskHUAWEI = 43,
+ vkCmdBindPipeline = 44,
+ vkCmdBindPipelineShaderGroupNV = 45,
+ vkCmdBindShadersEXT = 46,
+ vkCmdBindShadingRateImageNV = 47,
+ vkCmdBindTransformFeedbackBuffersEXT = 48,
+ vkCmdBindVertexBuffers = 49,
+ vkCmdBindVertexBuffers2 = 50,
+ vkCmdBindVertexBuffers2EXT = 51,
+ vkCmdBlitImage = 52,
+ vkCmdBlitImage2 = 53,
+ vkCmdBlitImage2KHR = 54,
+ vkCmdBuildAccelerationStructureNV = 55,
+ vkCmdBuildAccelerationStructuresIndirectKHR = 56,
+ vkCmdBuildAccelerationStructuresKHR = 57,
+ vkCmdBuildMicromapsEXT = 58,
+ vkCmdClearAttachments = 59,
+ vkCmdClearColorImage = 60,
+ vkCmdClearDepthStencilImage = 61,
+ vkCmdControlVideoCodingKHR = 62,
+ vkCmdCopyAccelerationStructureKHR = 63,
+ vkCmdCopyAccelerationStructureNV = 64,
+ vkCmdCopyAccelerationStructureToMemoryKHR = 65,
+ vkCmdCopyBuffer = 66,
+ vkCmdCopyBuffer2 = 67,
+ vkCmdCopyBuffer2KHR = 68,
+ vkCmdCopyBufferToImage = 69,
+ vkCmdCopyBufferToImage2 = 70,
+ vkCmdCopyBufferToImage2KHR = 71,
+ vkCmdCopyImage = 72,
+ vkCmdCopyImage2 = 73,
+ vkCmdCopyImage2KHR = 74,
+ vkCmdCopyImageToBuffer = 75,
+ vkCmdCopyImageToBuffer2 = 76,
+ vkCmdCopyImageToBuffer2KHR = 77,
+ vkCmdCopyMemoryIndirectNV = 78,
+ vkCmdCopyMemoryToAccelerationStructureKHR = 79,
+ vkCmdCopyMemoryToImageIndirectNV = 80,
+ vkCmdCopyMemoryToMicromapEXT = 81,
+ vkCmdCopyMicromapEXT = 82,
+ vkCmdCopyMicromapToMemoryEXT = 83,
+ vkCmdCopyQueryPoolResults = 84,
+ vkCmdCuLaunchKernelNVX = 85,
+ vkCmdCudaLaunchKernelNV = 86,
+ vkCmdDebugMarkerBeginEXT = 87,
+ vkCmdDebugMarkerEndEXT = 88,
+ vkCmdDebugMarkerInsertEXT = 89,
+ vkCmdDecodeVideoKHR = 90,
+ vkCmdDecompressMemoryIndirectCountNV = 91,
+ vkCmdDecompressMemoryNV = 92,
+ vkCmdDispatch = 93,
+ vkCmdDispatchBase = 94,
+ vkCmdDispatchBaseKHR = 95,
+ vkCmdDispatchGraphAMDX = 96,
+ vkCmdDispatchGraphIndirectAMDX = 97,
+ vkCmdDispatchGraphIndirectCountAMDX = 98,
+ vkCmdDispatchIndirect = 99,
+ vkCmdDraw = 100,
+ vkCmdDrawClusterHUAWEI = 101,
+ vkCmdDrawClusterIndirectHUAWEI = 102,
+ vkCmdDrawIndexed = 103,
+ vkCmdDrawIndexedIndirect = 104,
+ vkCmdDrawIndexedIndirectCount = 105,
+ vkCmdDrawIndexedIndirectCountAMD = 106,
+ vkCmdDrawIndexedIndirectCountKHR = 107,
+ vkCmdDrawIndirect = 108,
+ vkCmdDrawIndirectByteCountEXT = 109,
+ vkCmdDrawIndirectCount = 110,
+ vkCmdDrawIndirectCountAMD = 111,
+ vkCmdDrawIndirectCountKHR = 112,
+ vkCmdDrawMeshTasksEXT = 113,
+ vkCmdDrawMeshTasksIndirectCountEXT = 114,
+ vkCmdDrawMeshTasksIndirectCountNV = 115,
+ vkCmdDrawMeshTasksIndirectEXT = 116,
+ vkCmdDrawMeshTasksIndirectNV = 117,
+ vkCmdDrawMeshTasksNV = 118,
+ vkCmdDrawMultiEXT = 119,
+ vkCmdDrawMultiIndexedEXT = 120,
+ vkCmdEncodeVideoKHR = 121,
+ vkCmdEndConditionalRenderingEXT = 122,
+ vkCmdEndDebugUtilsLabelEXT = 123,
+ vkCmdEndQuery = 124,
+ vkCmdEndQueryIndexedEXT = 125,
+ vkCmdEndRenderPass = 126,
+ vkCmdEndRenderPass2 = 127,
+ vkCmdEndRenderPass2KHR = 128,
+ vkCmdEndRendering = 129,
+ vkCmdEndRenderingKHR = 130,
+ vkCmdEndTransformFeedbackEXT = 131,
+ vkCmdEndVideoCodingKHR = 132,
+ vkCmdExecuteCommands = 133,
+ vkCmdExecuteGeneratedCommandsNV = 134,
+ vkCmdFillBuffer = 135,
+ vkCmdInitializeGraphScratchMemoryAMDX = 136,
+ vkCmdInsertDebugUtilsLabelEXT = 137,
+ vkCmdNextSubpass = 138,
+ vkCmdNextSubpass2 = 139,
+ vkCmdNextSubpass2KHR = 140,
+ vkCmdOpticalFlowExecuteNV = 141,
+ vkCmdPipelineBarrier = 142,
+ vkCmdPipelineBarrier2 = 143,
+ vkCmdPipelineBarrier2KHR = 144,
+ vkCmdPreprocessGeneratedCommandsNV = 145,
+ vkCmdPushConstants = 146,
+ vkCmdPushConstants2KHR = 147,
+ vkCmdPushDescriptorSet2KHR = 148,
+ vkCmdPushDescriptorSetKHR = 149,
+ vkCmdPushDescriptorSetWithTemplate2KHR = 150,
+ vkCmdPushDescriptorSetWithTemplateKHR = 151,
+ vkCmdResetEvent = 152,
+ vkCmdResetEvent2 = 153,
+ vkCmdResetEvent2KHR = 154,
+ vkCmdResetQueryPool = 155,
+ vkCmdResolveImage = 156,
+ vkCmdResolveImage2 = 157,
+ vkCmdResolveImage2KHR = 158,
+ vkCmdSetAlphaToCoverageEnableEXT = 159,
+ vkCmdSetAlphaToOneEnableEXT = 160,
+ vkCmdSetAttachmentFeedbackLoopEnableEXT = 161,
+ vkCmdSetBlendConstants = 162,
+ vkCmdSetCheckpointNV = 163,
+ vkCmdSetCoarseSampleOrderNV = 164,
+ vkCmdSetColorBlendAdvancedEXT = 165,
+ vkCmdSetColorBlendEnableEXT = 166,
+ vkCmdSetColorBlendEquationEXT = 167,
+ vkCmdSetColorWriteEnableEXT = 168,
+ vkCmdSetColorWriteMaskEXT = 169,
+ vkCmdSetConservativeRasterizationModeEXT = 170,
+ vkCmdSetCoverageModulationModeNV = 171,
+ vkCmdSetCoverageModulationTableEnableNV = 172,
+ vkCmdSetCoverageModulationTableNV = 173,
+ vkCmdSetCoverageReductionModeNV = 174,
+ vkCmdSetCoverageToColorEnableNV = 175,
+ vkCmdSetCoverageToColorLocationNV = 176,
+ vkCmdSetCullMode = 177,
+ vkCmdSetCullModeEXT = 178,
+ vkCmdSetDepthBias = 179,
+ vkCmdSetDepthBias2EXT = 180,
+ vkCmdSetDepthBiasEnable = 181,
+ vkCmdSetDepthBiasEnableEXT = 182,
+ vkCmdSetDepthBounds = 183,
+ vkCmdSetDepthBoundsTestEnable = 184,
+ vkCmdSetDepthBoundsTestEnableEXT = 185,
+ vkCmdSetDepthClampEnableEXT = 186,
+ vkCmdSetDepthClipEnableEXT = 187,
+ vkCmdSetDepthClipNegativeOneToOneEXT = 188,
+ vkCmdSetDepthCompareOp = 189,
+ vkCmdSetDepthCompareOpEXT = 190,
+ vkCmdSetDepthTestEnable = 191,
+ vkCmdSetDepthTestEnableEXT = 192,
+ vkCmdSetDepthWriteEnable = 193,
+ vkCmdSetDepthWriteEnableEXT = 194,
+ vkCmdSetDescriptorBufferOffsets2EXT = 195,
+ vkCmdSetDescriptorBufferOffsetsEXT = 196,
+ vkCmdSetDeviceMask = 197,
+ vkCmdSetDeviceMaskKHR = 198,
+ vkCmdSetDiscardRectangleEXT = 199,
+ vkCmdSetDiscardRectangleEnableEXT = 200,
+ vkCmdSetDiscardRectangleModeEXT = 201,
+ vkCmdSetEvent = 202,
+ vkCmdSetEvent2 = 203,
+ vkCmdSetEvent2KHR = 204,
+ vkCmdSetExclusiveScissorEnableNV = 205,
+ vkCmdSetExclusiveScissorNV = 206,
+ vkCmdSetExtraPrimitiveOverestimationSizeEXT = 207,
+ vkCmdSetFragmentShadingRateEnumNV = 208,
+ vkCmdSetFragmentShadingRateKHR = 209,
+ vkCmdSetFrontFace = 210,
+ vkCmdSetFrontFaceEXT = 211,
+ vkCmdSetLineRasterizationModeEXT = 212,
+ vkCmdSetLineStippleEXT = 213,
+ vkCmdSetLineStippleEnableEXT = 214,
+ vkCmdSetLineWidth = 215,
+ vkCmdSetLogicOpEXT = 216,
+ vkCmdSetLogicOpEnableEXT = 217,
+ vkCmdSetPatchControlPointsEXT = 218,
+ vkCmdSetPerformanceMarkerINTEL = 219,
+ vkCmdSetPerformanceOverrideINTEL = 220,
+ vkCmdSetPerformanceStreamMarkerINTEL = 221,
+ vkCmdSetPolygonModeEXT = 222,
+ vkCmdSetPrimitiveRestartEnable = 223,
+ vkCmdSetPrimitiveRestartEnableEXT = 224,
+ vkCmdSetPrimitiveTopology = 225,
+ vkCmdSetPrimitiveTopologyEXT = 226,
+ vkCmdSetProvokingVertexModeEXT = 227,
+ vkCmdSetRasterizationSamplesEXT = 228,
+ vkCmdSetRasterizationStreamEXT = 229,
+ vkCmdSetRasterizerDiscardEnable = 230,
+ vkCmdSetRasterizerDiscardEnableEXT = 231,
+ vkCmdSetRayTracingPipelineStackSizeKHR = 232,
+ vkCmdSetRepresentativeFragmentTestEnableNV = 233,
+ vkCmdSetSampleLocationsEXT = 234,
+ vkCmdSetSampleLocationsEnableEXT = 235,
+ vkCmdSetSampleMaskEXT = 236,
+ vkCmdSetScissor = 237,
+ vkCmdSetScissorWithCount = 238,
+ vkCmdSetScissorWithCountEXT = 239,
+ vkCmdSetShadingRateImageEnableNV = 240,
+ vkCmdSetStencilCompareMask = 241,
+ vkCmdSetStencilOp = 242,
+ vkCmdSetStencilOpEXT = 243,
+ vkCmdSetStencilReference = 244,
+ vkCmdSetStencilTestEnable = 245,
+ vkCmdSetStencilTestEnableEXT = 246,
+ vkCmdSetStencilWriteMask = 247,
+ vkCmdSetTessellationDomainOriginEXT = 248,
+ vkCmdSetVertexInputEXT = 249,
+ vkCmdSetViewport = 250,
+ vkCmdSetViewportShadingRatePaletteNV = 251,
+ vkCmdSetViewportSwizzleNV = 252,
+ vkCmdSetViewportWScalingEnableNV = 253,
+ vkCmdSetViewportWScalingNV = 254,
+ vkCmdSetViewportWithCount = 255,
+ vkCmdSetViewportWithCountEXT = 256,
+ vkCmdSubpassShadingHUAWEI = 257,
+ vkCmdTraceRaysIndirect2KHR = 258,
+ vkCmdTraceRaysIndirectKHR = 259,
+ vkCmdTraceRaysKHR = 260,
+ vkCmdTraceRaysNV = 261,
+ vkCmdUpdateBuffer = 262,
+ vkCmdUpdatePipelineIndirectBufferNV = 263,
+ vkCmdWaitEvents = 264,
+ vkCmdWaitEvents2 = 265,
+ vkCmdWaitEvents2KHR = 266,
+ vkCmdWriteAccelerationStructuresPropertiesKHR = 267,
+ vkCmdWriteAccelerationStructuresPropertiesNV = 268,
+ vkCmdWriteBufferMarker2AMD = 269,
+ vkCmdWriteBufferMarkerAMD = 270,
+ vkCmdWriteMicromapsPropertiesEXT = 271,
+ vkCmdWriteTimestamp = 272,
+ vkCmdWriteTimestamp2 = 273,
+ vkCmdWriteTimestamp2KHR = 274,
+ vkCompileDeferredNV = 275,
+ vkCopyAccelerationStructureKHR = 276,
+ vkCopyAccelerationStructureToMemoryKHR = 277,
+ vkCopyImageToImageEXT = 278,
+ vkCopyImageToMemoryEXT = 279,
+ vkCopyMemoryToAccelerationStructureKHR = 280,
+ vkCopyMemoryToImageEXT = 281,
+ vkCopyMemoryToMicromapEXT = 282,
+ vkCopyMicromapEXT = 283,
+ vkCopyMicromapToMemoryEXT = 284,
+ vkCreateAccelerationStructureKHR = 285,
+ vkCreateAccelerationStructureNV = 286,
+ vkCreateAndroidSurfaceKHR = 287,
+ vkCreateBuffer = 288,
+ vkCreateBufferCollectionFUCHSIA = 289,
+ vkCreateBufferView = 290,
+ vkCreateCommandPool = 291,
+ vkCreateComputePipelines = 292,
+ vkCreateCuFunctionNVX = 293,
+ vkCreateCuModuleNVX = 294,
+ vkCreateCudaFunctionNV = 295,
+ vkCreateCudaModuleNV = 296,
+ vkCreateDebugReportCallbackEXT = 297,
+ vkCreateDebugUtilsMessengerEXT = 298,
+ vkCreateDeferredOperationKHR = 299,
+ vkCreateDescriptorPool = 300,
+ vkCreateDescriptorSetLayout = 301,
+ vkCreateDescriptorUpdateTemplate = 302,
+ vkCreateDescriptorUpdateTemplateKHR = 303,
+ vkCreateDevice = 304,
+ vkCreateDirectFBSurfaceEXT = 305,
+ vkCreateDisplayModeKHR = 306,
+ vkCreateDisplayPlaneSurfaceKHR = 307,
+ vkCreateEvent = 308,
+ vkCreateExecutionGraphPipelinesAMDX = 309,
+ vkCreateFence = 310,
+ vkCreateFramebuffer = 311,
+ vkCreateGraphicsPipelines = 312,
+ vkCreateHeadlessSurfaceEXT = 313,
+ vkCreateIOSSurfaceMVK = 314,
+ vkCreateImage = 315,
+ vkCreateImagePipeSurfaceFUCHSIA = 316,
+ vkCreateImageView = 317,
+ vkCreateIndirectCommandsLayoutNV = 318,
+ vkCreateInstance = 319,
+ vkCreateMacOSSurfaceMVK = 320,
+ vkCreateMetalSurfaceEXT = 321,
+ vkCreateMicromapEXT = 322,
+ vkCreateOpticalFlowSessionNV = 323,
+ vkCreatePipelineCache = 324,
+ vkCreatePipelineLayout = 325,
+ vkCreatePrivateDataSlot = 326,
+ vkCreatePrivateDataSlotEXT = 327,
+ vkCreateQueryPool = 328,
+ vkCreateRayTracingPipelinesKHR = 329,
+ vkCreateRayTracingPipelinesNV = 330,
+ vkCreateRenderPass = 331,
+ vkCreateRenderPass2 = 332,
+ vkCreateRenderPass2KHR = 333,
+ vkCreateSampler = 334,
+ vkCreateSamplerYcbcrConversion = 335,
+ vkCreateSamplerYcbcrConversionKHR = 336,
+ vkCreateScreenSurfaceQNX = 337,
+ vkCreateSemaphore = 338,
+ vkCreateShaderModule = 339,
+ vkCreateShadersEXT = 340,
+ vkCreateSharedSwapchainsKHR = 341,
+ vkCreateStreamDescriptorSurfaceGGP = 342,
+ vkCreateSurfaceOHOS = 343,
+ vkCreateSwapchainKHR = 344,
+ vkCreateValidationCacheEXT = 345,
+ vkCreateViSurfaceNN = 346,
+ vkCreateVideoSessionKHR = 347,
+ vkCreateVideoSessionParametersKHR = 348,
+ vkCreateWaylandSurfaceKHR = 349,
+ vkCreateWin32SurfaceKHR = 350,
+ vkCreateXcbSurfaceKHR = 351,
+ vkCreateXlibSurfaceKHR = 352,
+ vkDebugMarkerSetObjectNameEXT = 353,
+ vkDebugMarkerSetObjectTagEXT = 354,
+ vkDebugReportMessageEXT = 355,
+ vkDeferredOperationJoinKHR = 356,
+ vkDestroyAccelerationStructureKHR = 357,
+ vkDestroyAccelerationStructureNV = 358,
+ vkDestroyBuffer = 359,
+ vkDestroyBufferCollectionFUCHSIA = 360,
+ vkDestroyBufferView = 361,
+ vkDestroyCommandPool = 362,
+ vkDestroyCuFunctionNVX = 363,
+ vkDestroyCuModuleNVX = 364,
+ vkDestroyCudaFunctionNV = 365,
+ vkDestroyCudaModuleNV = 366,
+ vkDestroyDebugReportCallbackEXT = 367,
+ vkDestroyDebugUtilsMessengerEXT = 368,
+ vkDestroyDeferredOperationKHR = 369,
+ vkDestroyDescriptorPool = 370,
+ vkDestroyDescriptorSetLayout = 371,
+ vkDestroyDescriptorUpdateTemplate = 372,
+ vkDestroyDescriptorUpdateTemplateKHR = 373,
+ vkDestroyDevice = 374,
+ vkDestroyEvent = 375,
+ vkDestroyFence = 376,
+ vkDestroyFramebuffer = 377,
+ vkDestroyImage = 378,
+ vkDestroyImageView = 379,
+ vkDestroyIndirectCommandsLayoutNV = 380,
+ vkDestroyInstance = 381,
+ vkDestroyMicromapEXT = 382,
+ vkDestroyOpticalFlowSessionNV = 383,
+ vkDestroyPipeline = 384,
+ vkDestroyPipelineCache = 385,
+ vkDestroyPipelineLayout = 386,
+ vkDestroyPrivateDataSlot = 387,
+ vkDestroyPrivateDataSlotEXT = 388,
+ vkDestroyQueryPool = 389,
+ vkDestroyRenderPass = 390,
+ vkDestroySampler = 391,
+ vkDestroySamplerYcbcrConversion = 392,
+ vkDestroySamplerYcbcrConversionKHR = 393,
+ vkDestroySemaphore = 394,
+ vkDestroyShaderEXT = 395,
+ vkDestroyShaderModule = 396,
+ vkDestroySurfaceKHR = 397,
+ vkDestroySwapchainKHR = 398,
+ vkDestroyValidationCacheEXT = 399,
+ vkDestroyVideoSessionKHR = 400,
+ vkDestroyVideoSessionParametersKHR = 401,
+ vkDeviceWaitIdle = 402,
+ vkDisplayPowerControlEXT = 403,
+ vkEndCommandBuffer = 404,
+ vkEnumerateDeviceExtensionProperties = 405,
+ vkEnumerateDeviceLayerProperties = 406,
+ vkEnumerateInstanceExtensionProperties = 407,
+ vkEnumerateInstanceLayerProperties = 408,
+ vkEnumerateInstanceVersion = 409,
+ vkEnumeratePhysicalDeviceGroups = 410,
+ vkEnumeratePhysicalDeviceGroupsKHR = 411,
+ vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = 412,
+ vkEnumeratePhysicalDevices = 413,
+ vkExportMetalObjectsEXT = 414,
+ vkFlushMappedMemoryRanges = 415,
+ vkFreeCommandBuffers = 416,
+ vkFreeDescriptorSets = 417,
+ vkFreeMemory = 418,
+ vkGetAccelerationStructureBuildSizesKHR = 419,
+ vkGetAccelerationStructureDeviceAddressKHR = 420,
+ vkGetAccelerationStructureHandleNV = 421,
+ vkGetAccelerationStructureMemoryRequirementsNV = 422,
+ vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = 423,
+ vkGetAndroidHardwareBufferPropertiesANDROID = 424,
+ vkGetBufferCollectionPropertiesFUCHSIA = 425,
+ vkGetBufferDeviceAddress = 426,
+ vkGetBufferDeviceAddressEXT = 427,
+ vkGetBufferDeviceAddressKHR = 428,
+ vkGetBufferMemoryRequirements = 429,
+ vkGetBufferMemoryRequirements2 = 430,
+ vkGetBufferMemoryRequirements2KHR = 431,
+ vkGetBufferOpaqueCaptureAddress = 432,
+ vkGetBufferOpaqueCaptureAddressKHR = 433,
+ vkGetBufferOpaqueCaptureDescriptorDataEXT = 434,
+ vkGetCalibratedTimestampsEXT = 435,
+ vkGetCalibratedTimestampsKHR = 436,
+ vkGetCudaModuleCacheNV = 437,
+ vkGetDeferredOperationMaxConcurrencyKHR = 438,
+ vkGetDeferredOperationResultKHR = 439,
+ vkGetDescriptorEXT = 440,
+ vkGetDescriptorSetHostMappingVALVE = 441,
+ vkGetDescriptorSetLayoutBindingOffsetEXT = 442,
+ vkGetDescriptorSetLayoutHostMappingInfoVALVE = 443,
+ vkGetDescriptorSetLayoutSizeEXT = 444,
+ vkGetDescriptorSetLayoutSupport = 445,
+ vkGetDescriptorSetLayoutSupportKHR = 446,
+ vkGetDeviceAccelerationStructureCompatibilityKHR = 447,
+ vkGetDeviceBufferMemoryRequirements = 448,
+ vkGetDeviceBufferMemoryRequirementsKHR = 449,
+ vkGetDeviceFaultInfoEXT = 450,
+ vkGetDeviceGroupPeerMemoryFeatures = 451,
+ vkGetDeviceGroupPeerMemoryFeaturesKHR = 452,
+ vkGetDeviceGroupPresentCapabilitiesKHR = 453,
+ vkGetDeviceGroupSurfacePresentModes2EXT = 454,
+ vkGetDeviceGroupSurfacePresentModesKHR = 455,
+ vkGetDeviceImageMemoryRequirements = 456,
+ vkGetDeviceImageMemoryRequirementsKHR = 457,
+ vkGetDeviceImageSparseMemoryRequirements = 458,
+ vkGetDeviceImageSparseMemoryRequirementsKHR = 459,
+ vkGetDeviceImageSubresourceLayoutKHR = 460,
+ vkGetDeviceMemoryCommitment = 461,
+ vkGetDeviceMemoryOpaqueCaptureAddress = 462,
+ vkGetDeviceMemoryOpaqueCaptureAddressKHR = 463,
+ vkGetDeviceMicromapCompatibilityEXT = 464,
+ vkGetDeviceProcAddr = 465,
+ vkGetDeviceQueue = 466,
+ vkGetDeviceQueue2 = 467,
+ vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = 468,
+ vkGetDisplayModeProperties2KHR = 469,
+ vkGetDisplayModePropertiesKHR = 470,
+ vkGetDisplayPlaneCapabilities2KHR = 471,
+ vkGetDisplayPlaneCapabilitiesKHR = 472,
+ vkGetDisplayPlaneSupportedDisplaysKHR = 473,
+ vkGetDrmDisplayEXT = 474,
+ vkGetDynamicRenderingTilePropertiesQCOM = 475,
+ vkGetEncodedVideoSessionParametersKHR = 476,
+ vkGetEventStatus = 477,
+ vkGetExecutionGraphPipelineNodeIndexAMDX = 478,
+ vkGetExecutionGraphPipelineScratchSizeAMDX = 479,
+ vkGetFenceFdKHR = 480,
+ vkGetFenceStatus = 481,
+ vkGetFenceWin32HandleKHR = 482,
+ vkGetFramebufferTilePropertiesQCOM = 483,
+ vkGetGeneratedCommandsMemoryRequirementsNV = 484,
+ vkGetImageDrmFormatModifierPropertiesEXT = 485,
+ vkGetImageMemoryRequirements = 486,
+ vkGetImageMemoryRequirements2 = 487,
+ vkGetImageMemoryRequirements2KHR = 488,
+ vkGetImageOpaqueCaptureDescriptorDataEXT = 489,
+ vkGetImageSparseMemoryRequirements = 490,
+ vkGetImageSparseMemoryRequirements2 = 491,
+ vkGetImageSparseMemoryRequirements2KHR = 492,
+ vkGetImageSubresourceLayout = 493,
+ vkGetImageSubresourceLayout2EXT = 494,
+ vkGetImageSubresourceLayout2KHR = 495,
+ vkGetImageViewAddressNVX = 496,
+ vkGetImageViewHandleNVX = 497,
+ vkGetImageViewOpaqueCaptureDescriptorDataEXT = 498,
+ vkGetInstanceProcAddr = 499,
+ vkGetLatencyTimingsNV = 500,
+ vkGetMemoryAndroidHardwareBufferANDROID = 501,
+ vkGetMemoryFdKHR = 502,
+ vkGetMemoryFdPropertiesKHR = 503,
+ vkGetMemoryHostPointerPropertiesEXT = 504,
+ vkGetMemoryNativeBufferOHOS = 505,
+ vkGetMemoryRemoteAddressNV = 506,
+ vkGetMemoryWin32HandleKHR = 507,
+ vkGetMemoryWin32HandleNV = 508,
+ vkGetMemoryWin32HandlePropertiesKHR = 509,
+ vkGetMemoryZirconHandleFUCHSIA = 510,
+ vkGetMemoryZirconHandlePropertiesFUCHSIA = 511,
+ vkGetMicromapBuildSizesEXT = 512,
+ vkGetNativeBufferPropertiesOHOS = 513,
+ vkGetPastPresentationTimingGOOGLE = 514,
+ vkGetPerformanceParameterINTEL = 515,
+ vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = 516,
+ vkGetPhysicalDeviceCalibrateableTimeDomainsKHR = 517,
+ vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR = 518,
+ vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = 519,
+ vkGetPhysicalDeviceDirectFBPresentationSupportEXT = 520,
+ vkGetPhysicalDeviceDisplayPlaneProperties2KHR = 521,
+ vkGetPhysicalDeviceDisplayPlanePropertiesKHR = 522,
+ vkGetPhysicalDeviceDisplayProperties2KHR = 523,
+ vkGetPhysicalDeviceDisplayPropertiesKHR = 524,
+ vkGetPhysicalDeviceExternalBufferProperties = 525,
+ vkGetPhysicalDeviceExternalBufferPropertiesKHR = 526,
+ vkGetPhysicalDeviceExternalFenceProperties = 527,
+ vkGetPhysicalDeviceExternalFencePropertiesKHR = 528,
+ vkGetPhysicalDeviceExternalImageFormatPropertiesNV = 529,
+ vkGetPhysicalDeviceExternalSemaphoreProperties = 530,
+ vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = 531,
+ vkGetPhysicalDeviceFeatures = 532,
+ vkGetPhysicalDeviceFeatures2 = 533,
+ vkGetPhysicalDeviceFeatures2KHR = 534,
+ vkGetPhysicalDeviceFormatProperties = 535,
+ vkGetPhysicalDeviceFormatProperties2 = 536,
+ vkGetPhysicalDeviceFormatProperties2KHR = 537,
+ vkGetPhysicalDeviceFragmentShadingRatesKHR = 538,
+ vkGetPhysicalDeviceImageFormatProperties = 539,
+ vkGetPhysicalDeviceImageFormatProperties2 = 540,
+ vkGetPhysicalDeviceImageFormatProperties2KHR = 541,
+ vkGetPhysicalDeviceMemoryProperties = 542,
+ vkGetPhysicalDeviceMemoryProperties2 = 543,
+ vkGetPhysicalDeviceMemoryProperties2KHR = 544,
+ vkGetPhysicalDeviceMultisamplePropertiesEXT = 545,
+ vkGetPhysicalDeviceOpticalFlowImageFormatsNV = 546,
+ vkGetPhysicalDevicePresentRectanglesKHR = 547,
+ vkGetPhysicalDeviceProperties = 548,
+ vkGetPhysicalDeviceProperties2 = 549,
+ vkGetPhysicalDeviceProperties2KHR = 550,
+ vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = 551,
+ vkGetPhysicalDeviceQueueFamilyProperties = 552,
+ vkGetPhysicalDeviceQueueFamilyProperties2 = 553,
+ vkGetPhysicalDeviceQueueFamilyProperties2KHR = 554,
+ vkGetPhysicalDeviceScreenPresentationSupportQNX = 555,
+ vkGetPhysicalDeviceSparseImageFormatProperties = 556,
+ vkGetPhysicalDeviceSparseImageFormatProperties2 = 557,
+ vkGetPhysicalDeviceSparseImageFormatProperties2KHR = 558,
+ vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = 559,
+ vkGetPhysicalDeviceSurfaceCapabilities2EXT = 560,
+ vkGetPhysicalDeviceSurfaceCapabilities2KHR = 561,
+ vkGetPhysicalDeviceSurfaceCapabilitiesKHR = 562,
+ vkGetPhysicalDeviceSurfaceFormats2KHR = 563,
+ vkGetPhysicalDeviceSurfaceFormatsKHR = 564,
+ vkGetPhysicalDeviceSurfacePresentModes2EXT = 565,
+ vkGetPhysicalDeviceSurfacePresentModesKHR = 566,
+ vkGetPhysicalDeviceSurfaceSupportKHR = 567,
+ vkGetPhysicalDeviceToolProperties = 568,
+ vkGetPhysicalDeviceToolPropertiesEXT = 569,
+ vkGetPhysicalDeviceVideoCapabilitiesKHR = 570,
+ vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR = 571,
+ vkGetPhysicalDeviceVideoFormatPropertiesKHR = 572,
+ vkGetPhysicalDeviceWaylandPresentationSupportKHR = 573,
+ vkGetPhysicalDeviceWin32PresentationSupportKHR = 574,
+ vkGetPhysicalDeviceXcbPresentationSupportKHR = 575,
+ vkGetPhysicalDeviceXlibPresentationSupportKHR = 576,
+ vkGetPipelineCacheData = 577,
+ vkGetPipelineExecutableInternalRepresentationsKHR = 578,
+ vkGetPipelineExecutablePropertiesKHR = 579,
+ vkGetPipelineExecutableStatisticsKHR = 580,
+ vkGetPipelineIndirectDeviceAddressNV = 581,
+ vkGetPipelineIndirectMemoryRequirementsNV = 582,
+ vkGetPipelinePropertiesEXT = 583,
+ vkGetPrivateData = 584,
+ vkGetPrivateDataEXT = 585,
+ vkGetQueryPoolResults = 586,
+ vkGetQueueCheckpointData2NV = 587,
+ vkGetQueueCheckpointDataNV = 588,
+ vkGetRandROutputDisplayEXT = 589,
+ vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = 590,
+ vkGetRayTracingShaderGroupHandlesKHR = 591,
+ vkGetRayTracingShaderGroupHandlesNV = 592,
+ vkGetRayTracingShaderGroupStackSizeKHR = 593,
+ vkGetRefreshCycleDurationGOOGLE = 594,
+ vkGetRenderAreaGranularity = 595,
+ vkGetRenderingAreaGranularityKHR = 596,
+ vkGetSamplerOpaqueCaptureDescriptorDataEXT = 597,
+ vkGetScreenBufferPropertiesQNX = 598,
+ vkGetSemaphoreCounterValue = 599,
+ vkGetSemaphoreCounterValueKHR = 600,
+ vkGetSemaphoreFdKHR = 601,
+ vkGetSemaphoreWin32HandleKHR = 602,
+ vkGetSemaphoreZirconHandleFUCHSIA = 603,
+ vkGetShaderBinaryDataEXT = 604,
+ vkGetShaderInfoAMD = 605,
+ vkGetShaderModuleCreateInfoIdentifierEXT = 606,
+ vkGetShaderModuleIdentifierEXT = 607,
+ vkGetSwapchainCounterEXT = 608,
+ vkGetSwapchainGrallocUsageOHOS = 609,
+ vkGetSwapchainImagesKHR = 610,
+ vkGetSwapchainStatusKHR = 611,
+ vkGetValidationCacheDataEXT = 612,
+ vkGetVideoSessionMemoryRequirementsKHR = 613,
+ vkGetWinrtDisplayNV = 614,
+ vkImportFenceFdKHR = 615,
+ vkImportFenceWin32HandleKHR = 616,
+ vkImportSemaphoreFdKHR = 617,
+ vkImportSemaphoreWin32HandleKHR = 618,
+ vkImportSemaphoreZirconHandleFUCHSIA = 619,
+ vkInitializePerformanceApiINTEL = 620,
+ vkInvalidateMappedMemoryRanges = 621,
+ vkLatencySleepNV = 622,
+ vkMapMemory = 623,
+ vkMapMemory2KHR = 624,
+ vkMergePipelineCaches = 625,
+ vkMergeValidationCachesEXT = 626,
+ vkQueueBeginDebugUtilsLabelEXT = 627,
+ vkQueueBindSparse = 628,
+ vkQueueEndDebugUtilsLabelEXT = 629,
+ vkQueueInsertDebugUtilsLabelEXT = 630,
+ vkQueueNotifyOutOfBandNV = 631,
+ vkQueuePresentKHR = 632,
+ vkQueueSetPerformanceConfigurationINTEL = 633,
+ vkQueueSignalReleaseImageOHOS = 634,
+ vkQueueSubmit = 635,
+ vkQueueSubmit2 = 636,
+ vkQueueSubmit2KHR = 637,
+ vkQueueWaitIdle = 638,
+ vkRegisterDeviceEventEXT = 639,
+ vkRegisterDisplayEventEXT = 640,
+ vkReleaseDisplayEXT = 641,
+ vkReleaseFullScreenExclusiveModeEXT = 642,
+ vkReleasePerformanceConfigurationINTEL = 643,
+ vkReleaseProfilingLockKHR = 644,
+ vkReleaseSwapchainImagesEXT = 645,
+ vkResetCommandBuffer = 646,
+ vkResetCommandPool = 647,
+ vkResetDescriptorPool = 648,
+ vkResetEvent = 649,
+ vkResetFences = 650,
+ vkResetQueryPool = 651,
+ vkResetQueryPoolEXT = 652,
+ vkSetBufferCollectionBufferConstraintsFUCHSIA = 653,
+ vkSetBufferCollectionImageConstraintsFUCHSIA = 654,
+ vkSetDebugUtilsObjectNameEXT = 655,
+ vkSetDebugUtilsObjectTagEXT = 656,
+ vkSetDeviceMemoryPriorityEXT = 657,
+ vkSetEvent = 658,
+ vkSetHdrMetadataEXT = 659,
+ vkSetLatencyMarkerNV = 660,
+ vkSetLatencySleepModeNV = 661,
+ vkSetLocalDimmingAMD = 662,
+ vkSetPrivateData = 663,
+ vkSetPrivateDataEXT = 664,
+ vkSignalSemaphore = 665,
+ vkSignalSemaphoreKHR = 666,
+ vkSubmitDebugUtilsMessageEXT = 667,
+ vkTransitionImageLayoutEXT = 668,
+ vkTrimCommandPool = 669,
+ vkTrimCommandPoolKHR = 670,
+ vkUninitializePerformanceApiINTEL = 671,
+ vkUnmapMemory = 672,
+ vkUnmapMemory2KHR = 673,
+ vkUpdateDescriptorSetWithTemplate = 674,
+ vkUpdateDescriptorSetWithTemplateKHR = 675,
+ vkUpdateDescriptorSets = 676,
+ vkUpdateVideoSessionParametersKHR = 677,
+ vkWaitForFences = 678,
+ vkWaitForPresentKHR = 679,
+ vkWaitSemaphores = 680,
+ vkWaitSemaphoresKHR = 681,
+ vkWriteAccelerationStructuresPropertiesKHR = 682,
+ vkWriteMicromapsPropertiesEXT = 683,
};
enum class Struct {
@@ -969,6 +975,7 @@ enum class Struct {
VkExternalBufferProperties,
VkExternalFenceProperties,
VkExternalFormatANDROID,
+ VkExternalFormatOHOS,
VkExternalFormatQNX,
VkExternalImageFormatProperties,
VkExternalImageFormatPropertiesNV,
@@ -1060,6 +1067,7 @@ enum class Struct {
VkImportMetalIOSurfaceInfoEXT,
VkImportMetalSharedEventInfoEXT,
VkImportMetalTextureInfoEXT,
+ VkImportNativeBufferInfoOHOS,
VkImportScreenBufferInfoQNX,
VkImportSemaphoreFdInfoKHR,
VkImportSemaphoreWin32HandleInfoKHR,
@@ -1089,6 +1097,7 @@ enum class Struct {
VkMemoryFdPropertiesKHR,
VkMemoryGetAndroidHardwareBufferInfoANDROID,
VkMemoryGetFdInfoKHR,
+ VkMemoryGetNativeBufferInfoOHOS,
VkMemoryGetRemoteAddressInfoNV,
VkMemoryGetWin32HandleInfoKHR,
VkMemoryGetZirconHandleInfoFUCHSIA,
@@ -1119,6 +1128,10 @@ enum class Struct {
VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM,
VkMutableDescriptorTypeCreateInfoEXT,
VkMutableDescriptorTypeListEXT,
+ VkNativeBufferFormatPropertiesOHOS,
+ VkNativeBufferOHOS,
+ VkNativeBufferPropertiesOHOS,
+ VkNativeBufferUsageOHOS,
VkOffset2D,
VkOffset3D,
VkOpaqueCaptureDescriptorDataCreateInfoEXT,
@@ -1320,6 +1333,7 @@ enum class Struct {
VkPhysicalDevicePresentBarrierFeaturesNV,
VkPhysicalDevicePresentIdFeaturesKHR,
VkPhysicalDevicePresentWaitFeaturesKHR,
+ VkPhysicalDevicePresentationPropertiesOHOS,
VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT,
VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT,
VkPhysicalDevicePrivateDataFeatures,
@@ -1612,6 +1626,7 @@ enum class Struct {
VkSurfaceCapabilitiesFullScreenExclusiveEXT,
VkSurfaceCapabilitiesKHR,
VkSurfaceCapabilitiesPresentBarrierNV,
+ VkSurfaceCreateInfoOHOS,
VkSurfaceFormat2KHR,
VkSurfaceFormatKHR,
VkSurfaceFullScreenExclusiveInfoEXT,
@@ -1623,6 +1638,7 @@ enum class Struct {
VkSwapchainCounterCreateInfoEXT,
VkSwapchainCreateInfoKHR,
VkSwapchainDisplayNativeHdrCreateInfoAMD,
+ VkSwapchainImageCreateInfoOHOS,
VkSwapchainLatencyCreateInfoNV,
VkSwapchainPresentBarrierCreateInfoNV,
VkSwapchainPresentFenceInfoEXT,
@@ -1740,6 +1756,7 @@ enum class Field {
KSize,
MSize,
NSize,
+ OHOSNativeBufferUsage,
ResultType,
a,
aabbData,
@@ -2358,6 +2375,7 @@ enum class Field {
gopRemainingP,
gpuRenderEndTimeUs,
gpuRenderStartTimeUs,
+ grallocUsage,
graphicsPipelineLibrary,
graphicsPipelineLibraryFastLinking,
graphicsPipelineLibraryIndependentInterpolationDecoration,
@@ -2951,6 +2969,7 @@ enum class Field {
naluSliceEntryCount,
naluSliceSegmentEntryCount,
name,
+ nativeFenceFd,
negativeOneToOne,
nestedCommandBuffer,
nestedCommandBufferRendering,
@@ -3278,6 +3297,7 @@ enum class Field {
pNaluSliceSegmentEntries,
pName,
pNameInfo,
+ pNativeFenceFd,
pNext,
pNodeIndex,
pNodeInfo,
@@ -3958,6 +3978,7 @@ enum class Field {
shadingRatePaletteSize,
shadingRateTexelSize,
shadingRateType,
+ sharedImage,
sharedMemBytes,
sharedPresentSupportedUsageFlags,
sharingMode,
diff --git a/layers/vulkan/generated/layer_chassis_dispatch.cpp b/layers/vulkan/generated/layer_chassis_dispatch.cpp
index 40c75d168c8b566a640065f5656f06cd576cc201..2d33b68c81aa9ee0250d01aa8d1c975da600e23c 100644
--- a/layers/vulkan/generated/layer_chassis_dispatch.cpp
+++ b/layers/vulkan/generated/layer_chassis_dispatch.cpp
@@ -8756,6 +8756,97 @@ VkResult DispatchGetScreenBufferPropertiesQNX(VkDevice device, const struct _scr
return result;
}
#endif // VK_USE_PLATFORM_SCREEN_QNX
+#ifdef VK_USE_PLATFORM_OHOS
+
+VkResult DispatchCreateSurfaceOHOS(VkInstance instance, const VkSurfaceCreateInfoOHOS* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) {
+ auto layer_data = GetLayerDataPtr(get_dispatch_key(instance), layer_data_map);
+ if (!wrap_handles) return layer_data->instance_dispatch_table.CreateSurfaceOHOS(instance, pCreateInfo, pAllocator, pSurface);
+
+ VkResult result = layer_data->instance_dispatch_table.CreateSurfaceOHOS(instance, pCreateInfo, pAllocator, pSurface);
+ if (VK_SUCCESS == result) {
+ *pSurface = layer_data->WrapNew(*pSurface);
+ }
+ return result;
+}
+
+VkResult DispatchGetSwapchainGrallocUsageOHOS(VkDevice device, VkFormat format, VkImageUsageFlags imageUsage,
+ uint64_t* grallocUsage) {
+ auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
+
+ VkResult result = layer_data->device_dispatch_table.GetSwapchainGrallocUsageOHOS(device, format, imageUsage, grallocUsage);
+
+ return result;
+}
+
+VkResult DispatchAcquireImageOHOS(VkDevice device, VkImage image, int32_t nativeFenceFd, VkSemaphore semaphore, VkFence fence) {
+ auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
+ if (!wrap_handles) return layer_data->device_dispatch_table.AcquireImageOHOS(device, image, nativeFenceFd, semaphore, fence);
+ {
+ image = layer_data->Unwrap(image);
+ semaphore = layer_data->Unwrap(semaphore);
+ fence = layer_data->Unwrap(fence);
+ }
+ VkResult result = layer_data->device_dispatch_table.AcquireImageOHOS(device, image, nativeFenceFd, semaphore, fence);
+
+ return result;
+}
+
+VkResult DispatchQueueSignalReleaseImageOHOS(VkQueue queue, uint32_t waitSemaphoreCount, const VkSemaphore* pWaitSemaphores,
+ VkImage image, int32_t* pNativeFenceFd) {
+ auto layer_data = GetLayerDataPtr(get_dispatch_key(queue), layer_data_map);
+ if (!wrap_handles)
+ return layer_data->device_dispatch_table.QueueSignalReleaseImageOHOS(queue, waitSemaphoreCount, pWaitSemaphores, image,
+ pNativeFenceFd);
+ VkSemaphore var_local_pWaitSemaphores[DISPATCH_MAX_STACK_ALLOCATIONS];
+ VkSemaphore* local_pWaitSemaphores = nullptr;
+ {
+ if (pWaitSemaphores) {
+ local_pWaitSemaphores = waitSemaphoreCount > DISPATCH_MAX_STACK_ALLOCATIONS ? new VkSemaphore[waitSemaphoreCount]
+ : var_local_pWaitSemaphores;
+ for (uint32_t index0 = 0; index0 < waitSemaphoreCount; ++index0) {
+ local_pWaitSemaphores[index0] = layer_data->Unwrap(pWaitSemaphores[index0]);
+ }
+ }
+ image = layer_data->Unwrap(image);
+ }
+ VkResult result = layer_data->device_dispatch_table.QueueSignalReleaseImageOHOS(
+ queue, waitSemaphoreCount, (const VkSemaphore*)local_pWaitSemaphores, image, pNativeFenceFd);
+ if (local_pWaitSemaphores != var_local_pWaitSemaphores) delete[] local_pWaitSemaphores;
+ return result;
+}
+
+VkResult DispatchGetNativeBufferPropertiesOHOS(VkDevice device, const struct OH_NativeBuffer* buffer,
+ VkNativeBufferPropertiesOHOS* pProperties) {
+ auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
+
+ VkResult result = layer_data->device_dispatch_table.GetNativeBufferPropertiesOHOS(device, buffer, pProperties);
+
+ return result;
+}
+
+VkResult DispatchGetMemoryNativeBufferOHOS(VkDevice device, const VkMemoryGetNativeBufferInfoOHOS* pInfo,
+ struct OH_NativeBuffer** pBuffer) {
+ auto layer_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
+ if (!wrap_handles) return layer_data->device_dispatch_table.GetMemoryNativeBufferOHOS(device, pInfo, pBuffer);
+ safe_VkMemoryGetNativeBufferInfoOHOS var_local_pInfo;
+ safe_VkMemoryGetNativeBufferInfoOHOS* local_pInfo = nullptr;
+ {
+ if (pInfo) {
+ local_pInfo = &var_local_pInfo;
+ local_pInfo->initialize(pInfo);
+
+ if (pInfo->memory) {
+ local_pInfo->memory = layer_data->Unwrap(pInfo->memory);
+ }
+ }
+ }
+ VkResult result = layer_data->device_dispatch_table.GetMemoryNativeBufferOHOS(
+ device, (const VkMemoryGetNativeBufferInfoOHOS*)local_pInfo, pBuffer);
+
+ return result;
+}
+#endif // VK_USE_PLATFORM_OHOS
VkResult DispatchCreateAccelerationStructureKHR(VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
diff --git a/layers/vulkan/generated/layer_chassis_dispatch.h b/layers/vulkan/generated/layer_chassis_dispatch.h
index 9c7d4e963563f77621365dcd26e4cc7ed8a62f97..aedacd02f6520d1436a2487527c6cd5761566961 100644
--- a/layers/vulkan/generated/layer_chassis_dispatch.h
+++ b/layers/vulkan/generated/layer_chassis_dispatch.h
@@ -1165,6 +1165,19 @@ void DispatchCmdSetAttachmentFeedbackLoopEnableEXT(VkCommandBuffer commandBuffer
VkResult DispatchGetScreenBufferPropertiesQNX(VkDevice device, const struct _screen_buffer* buffer,
VkScreenBufferPropertiesQNX* pProperties);
#endif // VK_USE_PLATFORM_SCREEN_QNX
+#ifdef VK_USE_PLATFORM_OHOS
+VkResult DispatchCreateSurfaceOHOS(VkInstance instance, const VkSurfaceCreateInfoOHOS* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
+VkResult DispatchGetSwapchainGrallocUsageOHOS(VkDevice device, VkFormat format, VkImageUsageFlags imageUsage,
+ uint64_t* grallocUsage);
+VkResult DispatchAcquireImageOHOS(VkDevice device, VkImage image, int32_t nativeFenceFd, VkSemaphore semaphore, VkFence fence);
+VkResult DispatchQueueSignalReleaseImageOHOS(VkQueue queue, uint32_t waitSemaphoreCount, const VkSemaphore* pWaitSemaphores,
+ VkImage image, int32_t* pNativeFenceFd);
+VkResult DispatchGetNativeBufferPropertiesOHOS(VkDevice device, const struct OH_NativeBuffer* buffer,
+ VkNativeBufferPropertiesOHOS* pProperties);
+VkResult DispatchGetMemoryNativeBufferOHOS(VkDevice device, const VkMemoryGetNativeBufferInfoOHOS* pInfo,
+ struct OH_NativeBuffer** pBuffer);
+#endif // VK_USE_PLATFORM_OHOS
VkResult DispatchCreateAccelerationStructureKHR(VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkAccelerationStructureKHR* pAccelerationStructure);
diff --git a/layers/vulkan/generated/object_tracker.cpp b/layers/vulkan/generated/object_tracker.cpp
index 789312f117de9880e626fab1eedffbdee184c162..30d41cfd52f824594ceffe4118bbc484d8f41622 100644
--- a/layers/vulkan/generated/object_tracker.cpp
+++ b/layers/vulkan/generated/object_tracker.cpp
@@ -7320,6 +7320,72 @@ bool ObjectLifetimes::PreCallValidateGetLatencyTimingsNV(VkDevice device, VkSwap
// Checked by chassis: device: "VUID-vkGetScreenBufferPropertiesQNX-device-parameter"
#endif // VK_USE_PLATFORM_SCREEN_QNX
+#ifdef VK_USE_PLATFORM_OHOS
+
+// vkCreateSurfaceOHOS:
+// Checked by chassis: instance: "VUID-vkCreateSurfaceOHOS-instance-parameter"
+
+void ObjectLifetimes::PostCallRecordCreateSurfaceOHOS(VkInstance instance, const VkSurfaceCreateInfoOHOS* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface,
+ const RecordObject& record_obj) {
+ if (record_obj.result != VK_SUCCESS) return;
+ CreateObject(*pSurface, kVulkanObjectTypeSurfaceKHR, pAllocator, record_obj.location);
+}
+
+// vkGetSwapchainGrallocUsageOHOS:
+// Checked by chassis: device: kVUIDUndefined
+
+bool ObjectLifetimes::PreCallValidateAcquireImageOHOS(VkDevice device, VkImage image, int32_t nativeFenceFd, VkSemaphore semaphore,
+ VkFence fence, const ErrorObject& error_obj) const {
+ bool skip = false;
+ // Checked by chassis: device: kVUIDUndefined
+ skip |= ValidateObject(image, kVulkanObjectTypeImage, false, kVUIDUndefined, "UNASSIGNED-vkAcquireImageOHOS-commonparent",
+ error_obj.location.dot(Field::image));
+ skip |= ValidateObject(semaphore, kVulkanObjectTypeSemaphore, false, kVUIDUndefined,
+ "UNASSIGNED-vkAcquireImageOHOS-commonparent", error_obj.location.dot(Field::semaphore));
+ skip |= ValidateObject(fence, kVulkanObjectTypeFence, false, kVUIDUndefined, "UNASSIGNED-vkAcquireImageOHOS-commonparent",
+ error_obj.location.dot(Field::fence));
+
+ return skip;
+}
+
+bool ObjectLifetimes::PreCallValidateQueueSignalReleaseImageOHOS(VkQueue queue, uint32_t waitSemaphoreCount,
+ const VkSemaphore* pWaitSemaphores, VkImage image,
+ int32_t* pNativeFenceFd, const ErrorObject& error_obj) const {
+ bool skip = false;
+ // Checked by chassis: queue: kVUIDUndefined
+ // Checked by chassis: queue: "UNASSIGNED-vkQueueSignalReleaseImageOHOS-commonparent"
+
+ if ((waitSemaphoreCount > 0) && (pWaitSemaphores)) {
+ for (uint32_t index0 = 0; index0 < waitSemaphoreCount; ++index0) {
+ skip |= ValidateObject(pWaitSemaphores[index0], kVulkanObjectTypeSemaphore, false, kVUIDUndefined,
+ "UNASSIGNED-vkQueueSignalReleaseImageOHOS-commonparent",
+ error_obj.location.dot(Field::pWaitSemaphores, index0));
+ }
+ }
+ skip |= ValidateObject(image, kVulkanObjectTypeImage, false, kVUIDUndefined,
+ "UNASSIGNED-vkQueueSignalReleaseImageOHOS-commonparent", error_obj.location.dot(Field::image));
+
+ return skip;
+}
+
+// vkGetNativeBufferPropertiesOHOS:
+// Checked by chassis: device: kVUIDUndefined
+
+bool ObjectLifetimes::PreCallValidateGetMemoryNativeBufferOHOS(VkDevice device, const VkMemoryGetNativeBufferInfoOHOS* pInfo,
+ struct OH_NativeBuffer** pBuffer,
+ const ErrorObject& error_obj) const {
+ bool skip = false;
+ // Checked by chassis: device: kVUIDUndefined
+ if (pInfo) {
+ [[maybe_unused]] const Location pInfo_loc = error_obj.location.dot(Field::pInfo);
+ skip |= ValidateObject(pInfo->memory, kVulkanObjectTypeDeviceMemory, false, kVUIDUndefined,
+ "UNASSIGNED-VkMemoryGetNativeBufferInfoOHOS-memory-parent", pInfo_loc.dot(Field::memory));
+ }
+
+ return skip;
+}
+#endif // VK_USE_PLATFORM_OHOS
bool ObjectLifetimes::PreCallValidateCreateAccelerationStructureKHR(VkDevice device,
const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
diff --git a/layers/vulkan/generated/object_tracker.h b/layers/vulkan/generated/object_tracker.h
index 00345297e4b8bb7a734a35b384a0217cd2678045..8910a5ed0ba2e43117d3fcf674581e43f69805b6 100644
--- a/layers/vulkan/generated/object_tracker.h
+++ b/layers/vulkan/generated/object_tracker.h
@@ -1365,6 +1365,18 @@ bool PreCallValidateGetLatencyTimingsNV(VkDevice device, VkSwapchainKHR swapchai
const ErrorObject& error_obj) const override;
#ifdef VK_USE_PLATFORM_SCREEN_QNX
#endif // VK_USE_PLATFORM_SCREEN_QNX
+#ifdef VK_USE_PLATFORM_OHOS
+void PostCallRecordCreateSurfaceOHOS(VkInstance instance, const VkSurfaceCreateInfoOHOS* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface,
+ const RecordObject& record_obj) override;
+bool PreCallValidateAcquireImageOHOS(VkDevice device, VkImage image, int32_t nativeFenceFd, VkSemaphore semaphore, VkFence fence,
+ const ErrorObject& error_obj) const override;
+bool PreCallValidateQueueSignalReleaseImageOHOS(VkQueue queue, uint32_t waitSemaphoreCount, const VkSemaphore* pWaitSemaphores,
+ VkImage image, int32_t* pNativeFenceFd,
+ const ErrorObject& error_obj) const override;
+bool PreCallValidateGetMemoryNativeBufferOHOS(VkDevice device, const VkMemoryGetNativeBufferInfoOHOS* pInfo,
+ struct OH_NativeBuffer** pBuffer, const ErrorObject& error_obj) const override;
+#endif // VK_USE_PLATFORM_OHOS
bool PreCallValidateCreateAccelerationStructureKHR(VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkAccelerationStructureKHR* pAccelerationStructure,
diff --git a/layers/vulkan/generated/pnext_chain_extraction.cpp b/layers/vulkan/generated/pnext_chain_extraction.cpp
index 6675d3573204b5adb33e9f51ee139c2d9d405578..76a78feedd3aeb443dcaf1c71b67c1f6df33f1a8 100644
--- a/layers/vulkan/generated/pnext_chain_extraction.cpp
+++ b/layers/vulkan/generated/pnext_chain_extraction.cpp
@@ -2818,6 +2818,28 @@ void PnextChainFree(void *chain) {
header->pNext = nullptr;
delete reinterpret_cast(header);
break;
+#ifdef VK_USE_PLATFORM_OHOS
+ case VK_STRUCTURE_TYPE_NATIVE_BUFFER_USAGE_OHOS:
+ PnextChainFree(header->pNext);
+ header->pNext = nullptr;
+ delete reinterpret_cast(header);
+ break;
+ case VK_STRUCTURE_TYPE_NATIVE_BUFFER_FORMAT_PROPERTIES_OHOS:
+ PnextChainFree(header->pNext);
+ header->pNext = nullptr;
+ delete reinterpret_cast(header);
+ break;
+ case VK_STRUCTURE_TYPE_IMPORT_NATIVE_BUFFER_INFO_OHOS:
+ PnextChainFree(header->pNext);
+ header->pNext = nullptr;
+ delete reinterpret_cast(header);
+ break;
+ case VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_OHOS:
+ PnextChainFree(header->pNext);
+ header->pNext = nullptr;
+ delete reinterpret_cast(header);
+ break;
+#endif // VK_USE_PLATFORM_OHOS
case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR:
PnextChainFree(header->pNext);
header->pNext = nullptr;
diff --git a/layers/vulkan/generated/stateless_validation_helper.cpp b/layers/vulkan/generated/stateless_validation_helper.cpp
index bb21eb8d2c529f3c055b752916e2fc329a391589..503a517933af0e04b23f7787a28b33f352945fb2 100644
--- a/layers/vulkan/generated/stateless_validation_helper.cpp
+++ b/layers/vulkan/generated/stateless_validation_helper.cpp
@@ -7234,6 +7234,24 @@ bool StatelessValidation::ValidatePnextStructContents(const Location& loc, const
skip |= ValidateBool32(pNext_loc.dot(Field::descriptorPoolOverallocation), structure->descriptorPoolOverallocation);
}
} break;
+#ifdef VK_USE_PLATFORM_OHOS
+
+ // No Validation code for VkNativeBufferUsageOHOS structure members -- Covers VUID-VkNativeBufferUsageOHOS-sType-sType
+
+ // No Validation code for VkNativeBufferFormatPropertiesOHOS structure members -- Covers
+ // VUID-VkNativeBufferFormatPropertiesOHOS-sType-sType
+
+ // Validation code for VkImportNativeBufferInfoOHOS structure members
+ case VK_STRUCTURE_TYPE_IMPORT_NATIVE_BUFFER_INFO_OHOS: { // Covers VUID-VkImportNativeBufferInfoOHOS-sType-sType
+ if (is_const_param) {
+ [[maybe_unused]] const Location pNext_loc = loc.pNext(Struct::VkImportNativeBufferInfoOHOS);
+ VkImportNativeBufferInfoOHOS* structure = (VkImportNativeBufferInfoOHOS*)header;
+ skip |= ValidateRequiredPointer(pNext_loc.dot(Field::buffer), structure->buffer, kVUIDUndefined);
+ }
+ } break;
+
+ // No Validation code for VkExternalFormatOHOS structure members -- Covers VUID-VkExternalFormatOHOS-sType-sType
+#endif // VK_USE_PLATFORM_OHOS
// Validation code for VkWriteDescriptorSetAccelerationStructureKHR structure members
case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR: { // Covers
@@ -8111,6 +8129,7 @@ bool StatelessValidation::PreCallValidateAllocateMemory(VkDevice device, const V
VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV,
VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA,
VK_STRUCTURE_TYPE_IMPORT_METAL_BUFFER_INFO_EXT,
+ VK_STRUCTURE_TYPE_IMPORT_NATIVE_BUFFER_INFO_OHOS,
VK_STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX,
VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO,
VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO,
@@ -9086,6 +9105,7 @@ bool StatelessValidation::PreCallValidateCreateImage(VkDevice device, const VkIm
VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV,
VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT,
VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID,
+ VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_OHOS,
VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX,
VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO,
VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV,
@@ -12028,6 +12048,7 @@ bool StatelessValidation::PreCallValidateGetPhysicalDeviceImageFormatProperties2
VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT,
VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT,
VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT,
+ VK_STRUCTURE_TYPE_NATIVE_BUFFER_USAGE_OHOS,
VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES,
VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD};
@@ -12196,8 +12217,8 @@ bool StatelessValidation::PreCallValidateCreateSamplerYcbcrConversion(VkDevice d
if (pCreateInfo != nullptr) {
[[maybe_unused]] const Location pCreateInfo_loc = loc.dot(Field::pCreateInfo);
constexpr std::array allowed_structs_VkSamplerYcbcrConversionCreateInfo = {
- VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID, VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX,
- VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM};
+ VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID, VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_OHOS,
+ VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX, VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM};
skip |= ValidateStructPnext(pCreateInfo_loc, pCreateInfo->pNext, allowed_structs_VkSamplerYcbcrConversionCreateInfo.size(),
allowed_structs_VkSamplerYcbcrConversionCreateInfo.data(), GeneratedVulkanHeaderVersion,
@@ -14556,6 +14577,7 @@ bool StatelessValidation::PreCallValidateGetDeviceImageMemoryRequirements(VkDevi
VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV,
VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT,
VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID,
+ VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_OHOS,
VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX,
VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO,
VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV,
@@ -14650,6 +14672,7 @@ bool StatelessValidation::PreCallValidateGetDeviceImageSparseMemoryRequirements(
VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV,
VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT,
VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID,
+ VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_OHOS,
VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX,
VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO,
VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV,
@@ -18272,6 +18295,7 @@ bool StatelessValidation::PreCallValidateGetDeviceImageSubresourceLayoutKHR(VkDe
VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV,
VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT,
VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID,
+ VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_OHOS,
VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX,
VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO,
VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV,
@@ -23354,6 +23378,7 @@ bool StatelessValidation::PreCallValidateSetBufferCollectionImageConstraintsFUCH
VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV,
VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT,
VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID,
+ VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_OHOS,
VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX,
VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO,
VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV,
@@ -25602,6 +25627,132 @@ bool StatelessValidation::PreCallValidateGetScreenBufferPropertiesQNX(VkDevice d
}
#endif // VK_USE_PLATFORM_SCREEN_QNX
+#ifdef VK_USE_PLATFORM_OHOS
+bool StatelessValidation::PreCallValidateCreateSurfaceOHOS(VkInstance instance, const VkSurfaceCreateInfoOHOS* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface,
+ const ErrorObject& error_obj) const {
+ bool skip = false;
+ [[maybe_unused]] const Location loc = error_obj.location;
+ if (!instance_extensions.vk_ohos_surface) skip |= OutputExtensionError(loc, "VK_OHOS_surface");
+ skip |= ValidateStructType(loc.dot(Field::pCreateInfo), "VK_STRUCTURE_TYPE_SURFACE_CREATE_INFO_OHOS", pCreateInfo,
+ VK_STRUCTURE_TYPE_SURFACE_CREATE_INFO_OHOS, true, "VUID-vkCreateSurfaceOHOS-pCreateInfo-parameter",
+ "VUID-VkSurfaceCreateInfoOHOS-sType-sType");
+ if (pCreateInfo != nullptr) {
+ [[maybe_unused]] const Location pCreateInfo_loc = loc.dot(Field::pCreateInfo);
+ skip |= ValidateStructPnext(pCreateInfo_loc, pCreateInfo->pNext, 0, nullptr, GeneratedVulkanHeaderVersion,
+ "VUID-VkSurfaceCreateInfoOHOS-pNext-pNext", kVUIDUndefined, false, true);
+
+ skip |= ValidateReservedFlags(pCreateInfo_loc.dot(Field::flags), pCreateInfo->flags,
+ "VUID-VkSurfaceCreateInfoOHOS-flags-zerobitmask");
+ }
+ if (pAllocator != nullptr) {
+ [[maybe_unused]] const Location pAllocator_loc = loc.dot(Field::pAllocator);
+ skip |= ValidateRequiredPointer(pAllocator_loc.dot(Field::pfnAllocation),
+ reinterpret_cast(pAllocator->pfnAllocation),
+ "VUID-VkAllocationCallbacks-pfnAllocation-00632");
+
+ skip |= ValidateRequiredPointer(pAllocator_loc.dot(Field::pfnReallocation),
+ reinterpret_cast(pAllocator->pfnReallocation),
+ "VUID-VkAllocationCallbacks-pfnReallocation-00633");
+
+ skip |= ValidateRequiredPointer(pAllocator_loc.dot(Field::pfnFree), reinterpret_cast(pAllocator->pfnFree),
+ "VUID-VkAllocationCallbacks-pfnFree-00634");
+
+ if (pAllocator->pfnInternalAllocation != nullptr) {
+ skip |= ValidateRequiredPointer(pAllocator_loc.dot(Field::pfnInternalAllocation),
+ reinterpret_cast(pAllocator->pfnInternalFree),
+ "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
+ }
+
+ if (pAllocator->pfnInternalFree != nullptr) {
+ skip |= ValidateRequiredPointer(pAllocator_loc.dot(Field::pfnInternalFree),
+ reinterpret_cast(pAllocator->pfnInternalAllocation),
+ "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635");
+ }
+ }
+ skip |= ValidateRequiredPointer(loc.dot(Field::pSurface), pSurface, "VUID-vkCreateSurfaceOHOS-pSurface-parameter");
+ return skip;
+}
+
+bool StatelessValidation::PreCallValidateGetSwapchainGrallocUsageOHOS(VkDevice device, VkFormat format,
+ VkImageUsageFlags imageUsage, uint64_t* grallocUsage,
+ const ErrorObject& error_obj) const {
+ bool skip = false;
+ [[maybe_unused]] const Location loc = error_obj.location;
+ if (!IsExtEnabled(device_extensions.vk_ohos_native_buffer)) skip |= OutputExtensionError(loc, "VK_OHOS_native_buffer");
+ skip |= ValidateRangedEnum(loc.dot(Field::format), "VkFormat", format, kVUIDUndefined);
+ skip |= ValidateFlags(loc.dot(Field::imageUsage), "VkImageUsageFlagBits", AllVkImageUsageFlagBits, imageUsage, kRequiredFlags,
+ kVUIDUndefined, kVUIDUndefined);
+ skip |= ValidateRequiredPointer(loc.dot(Field::grallocUsage), grallocUsage, kVUIDUndefined);
+ return skip;
+}
+
+bool StatelessValidation::PreCallValidateAcquireImageOHOS(VkDevice device, VkImage image, int32_t nativeFenceFd,
+ VkSemaphore semaphore, VkFence fence,
+ const ErrorObject& error_obj) const {
+ bool skip = false;
+ [[maybe_unused]] const Location loc = error_obj.location;
+ if (!IsExtEnabled(device_extensions.vk_ohos_native_buffer)) skip |= OutputExtensionError(loc, "VK_OHOS_native_buffer");
+ skip |= ValidateRequiredHandle(loc.dot(Field::image), image);
+ skip |= ValidateRequiredHandle(loc.dot(Field::semaphore), semaphore);
+ skip |= ValidateRequiredHandle(loc.dot(Field::fence), fence);
+ return skip;
+}
+
+bool StatelessValidation::PreCallValidateQueueSignalReleaseImageOHOS(VkQueue queue, uint32_t waitSemaphoreCount,
+ const VkSemaphore* pWaitSemaphores, VkImage image,
+ int32_t* pNativeFenceFd, const ErrorObject& error_obj) const {
+ bool skip = false;
+ [[maybe_unused]] const Location loc = error_obj.location;
+ if (!IsExtEnabled(device_extensions.vk_ohos_native_buffer)) skip |= OutputExtensionError(loc, "VK_OHOS_native_buffer");
+ skip |= ValidateHandleArray(loc.dot(Field::waitSemaphoreCount), loc.dot(Field::pWaitSemaphores), waitSemaphoreCount,
+ pWaitSemaphores, true, true, kVUIDUndefined);
+ skip |= ValidateRequiredHandle(loc.dot(Field::image), image);
+ skip |= ValidateRequiredPointer(loc.dot(Field::pNativeFenceFd), pNativeFenceFd, kVUIDUndefined);
+ return skip;
+}
+
+bool StatelessValidation::PreCallValidateGetNativeBufferPropertiesOHOS(VkDevice device, const struct OH_NativeBuffer* buffer,
+ VkNativeBufferPropertiesOHOS* pProperties,
+ const ErrorObject& error_obj) const {
+ bool skip = false;
+ [[maybe_unused]] const Location loc = error_obj.location;
+ if (!IsExtEnabled(device_extensions.vk_ohos_external_memory)) skip |= OutputExtensionError(loc, "VK_OHOS_external_memory");
+ skip |= ValidateRequiredPointer(loc.dot(Field::buffer), buffer, kVUIDUndefined);
+ skip |= ValidateStructType(loc.dot(Field::pProperties), "VK_STRUCTURE_TYPE_NATIVE_BUFFER_PROPERTIES_OHOS", pProperties,
+ VK_STRUCTURE_TYPE_NATIVE_BUFFER_PROPERTIES_OHOS, true, kVUIDUndefined, kVUIDUndefined);
+ if (pProperties != nullptr) {
+ [[maybe_unused]] const Location pProperties_loc = loc.dot(Field::pProperties);
+ constexpr std::array allowed_structs_VkNativeBufferPropertiesOHOS = {
+ VK_STRUCTURE_TYPE_NATIVE_BUFFER_FORMAT_PROPERTIES_OHOS};
+
+ skip |= ValidateStructPnext(pProperties_loc, pProperties->pNext, allowed_structs_VkNativeBufferPropertiesOHOS.size(),
+ allowed_structs_VkNativeBufferPropertiesOHOS.data(), GeneratedVulkanHeaderVersion,
+ kVUIDUndefined, kVUIDUndefined, false, false);
+ }
+ return skip;
+}
+
+bool StatelessValidation::PreCallValidateGetMemoryNativeBufferOHOS(VkDevice device, const VkMemoryGetNativeBufferInfoOHOS* pInfo,
+ struct OH_NativeBuffer** pBuffer,
+ const ErrorObject& error_obj) const {
+ bool skip = false;
+ [[maybe_unused]] const Location loc = error_obj.location;
+ if (!IsExtEnabled(device_extensions.vk_ohos_external_memory)) skip |= OutputExtensionError(loc, "VK_OHOS_external_memory");
+ skip |= ValidateStructType(loc.dot(Field::pInfo), "VK_STRUCTURE_TYPE_MEMORY_GET_NATIVE_BUFFER_INFO_OHOS", pInfo,
+ VK_STRUCTURE_TYPE_MEMORY_GET_NATIVE_BUFFER_INFO_OHOS, true, kVUIDUndefined, kVUIDUndefined);
+ if (pInfo != nullptr) {
+ [[maybe_unused]] const Location pInfo_loc = loc.dot(Field::pInfo);
+ skip |= ValidateStructPnext(pInfo_loc, pInfo->pNext, 0, nullptr, GeneratedVulkanHeaderVersion, kVUIDUndefined,
+ kVUIDUndefined, false, true);
+
+ skip |= ValidateRequiredHandle(pInfo_loc.dot(Field::memory), pInfo->memory);
+ }
+ skip |= ValidateRequiredPointer(loc.dot(Field::pBuffer), pBuffer, kVUIDUndefined);
+ return skip;
+}
+#endif // VK_USE_PLATFORM_OHOS
+
bool StatelessValidation::PreCallValidateCreateAccelerationStructureKHR(VkDevice device,
const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
diff --git a/layers/vulkan/generated/stateless_validation_helper.h b/layers/vulkan/generated/stateless_validation_helper.h
index 63787b2db9b53fa64fa94ee642cd7228e342ad22..2ee704dff3ea54161755c68b4015363de7f0e19b 100644
--- a/layers/vulkan/generated/stateless_validation_helper.h
+++ b/layers/vulkan/generated/stateless_validation_helper.h
@@ -1722,6 +1722,23 @@ bool PreCallValidateGetScreenBufferPropertiesQNX(VkDevice device, const struct _
VkScreenBufferPropertiesQNX* pProperties,
const ErrorObject& error_obj) const override;
#endif // VK_USE_PLATFORM_SCREEN_QNX
+#ifdef VK_USE_PLATFORM_OHOS
+bool PreCallValidateCreateSurfaceOHOS(VkInstance instance, const VkSurfaceCreateInfoOHOS* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface,
+ const ErrorObject& error_obj) const override;
+bool PreCallValidateGetSwapchainGrallocUsageOHOS(VkDevice device, VkFormat format, VkImageUsageFlags imageUsage,
+ uint64_t* grallocUsage, const ErrorObject& error_obj) const override;
+bool PreCallValidateAcquireImageOHOS(VkDevice device, VkImage image, int32_t nativeFenceFd, VkSemaphore semaphore, VkFence fence,
+ const ErrorObject& error_obj) const override;
+bool PreCallValidateQueueSignalReleaseImageOHOS(VkQueue queue, uint32_t waitSemaphoreCount, const VkSemaphore* pWaitSemaphores,
+ VkImage image, int32_t* pNativeFenceFd,
+ const ErrorObject& error_obj) const override;
+bool PreCallValidateGetNativeBufferPropertiesOHOS(VkDevice device, const struct OH_NativeBuffer* buffer,
+ VkNativeBufferPropertiesOHOS* pProperties,
+ const ErrorObject& error_obj) const override;
+bool PreCallValidateGetMemoryNativeBufferOHOS(VkDevice device, const VkMemoryGetNativeBufferInfoOHOS* pInfo,
+ struct OH_NativeBuffer** pBuffer, const ErrorObject& error_obj) const override;
+#endif // VK_USE_PLATFORM_OHOS
bool PreCallValidateCreateAccelerationStructureKHR(VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkAccelerationStructureKHR* pAccelerationStructure,
diff --git a/layers/vulkan/generated/thread_safety.cpp b/layers/vulkan/generated/thread_safety.cpp
index fbec2b479e3427f05348d2c5a07fb74052050abc..ec299d6966c8f303613e4844fa088ce386eb5caf 100644
--- a/layers/vulkan/generated/thread_safety.cpp
+++ b/layers/vulkan/generated/thread_safety.cpp
@@ -7768,6 +7768,97 @@ void ThreadSafety::PostCallRecordGetScreenBufferPropertiesQNX(VkDevice device, c
}
#endif // VK_USE_PLATFORM_SCREEN_QNX
+#ifdef VK_USE_PLATFORM_OHOS
+void ThreadSafety::PreCallRecordCreateSurfaceOHOS(VkInstance instance, const VkSurfaceCreateInfoOHOS* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface,
+ const RecordObject& record_obj) {
+ StartReadObjectParentInstance(instance, record_obj.location);
+}
+
+void ThreadSafety::PostCallRecordCreateSurfaceOHOS(VkInstance instance, const VkSurfaceCreateInfoOHOS* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface,
+ const RecordObject& record_obj) {
+ FinishReadObjectParentInstance(instance, record_obj.location);
+ if (record_obj.result == VK_SUCCESS) {
+ CreateObjectParentInstance(*pSurface);
+ }
+}
+
+void ThreadSafety::PreCallRecordGetSwapchainGrallocUsageOHOS(VkDevice device, VkFormat format, VkImageUsageFlags imageUsage,
+ uint64_t* grallocUsage, const RecordObject& record_obj) {
+ StartReadObjectParentInstance(device, record_obj.location);
+}
+
+void ThreadSafety::PostCallRecordGetSwapchainGrallocUsageOHOS(VkDevice device, VkFormat format, VkImageUsageFlags imageUsage,
+ uint64_t* grallocUsage, const RecordObject& record_obj) {
+ FinishReadObjectParentInstance(device, record_obj.location);
+}
+
+void ThreadSafety::PreCallRecordAcquireImageOHOS(VkDevice device, VkImage image, int32_t nativeFenceFd, VkSemaphore semaphore,
+ VkFence fence, const RecordObject& record_obj) {
+ StartReadObjectParentInstance(device, record_obj.location);
+ StartReadObject(image, record_obj.location);
+ StartReadObject(semaphore, record_obj.location);
+ StartReadObject(fence, record_obj.location);
+}
+
+void ThreadSafety::PostCallRecordAcquireImageOHOS(VkDevice device, VkImage image, int32_t nativeFenceFd, VkSemaphore semaphore,
+ VkFence fence, const RecordObject& record_obj) {
+ FinishReadObjectParentInstance(device, record_obj.location);
+ FinishReadObject(image, record_obj.location);
+ FinishReadObject(semaphore, record_obj.location);
+ FinishReadObject(fence, record_obj.location);
+}
+
+void ThreadSafety::PreCallRecordQueueSignalReleaseImageOHOS(VkQueue queue, uint32_t waitSemaphoreCount,
+ const VkSemaphore* pWaitSemaphores, VkImage image,
+ int32_t* pNativeFenceFd, const RecordObject& record_obj) {
+ StartReadObject(queue, record_obj.location);
+
+ if (pWaitSemaphores) {
+ for (uint32_t index = 0; index < waitSemaphoreCount; index++) {
+ StartReadObject(pWaitSemaphores[index], record_obj.location);
+ }
+ }
+ StartReadObject(image, record_obj.location);
+}
+
+void ThreadSafety::PostCallRecordQueueSignalReleaseImageOHOS(VkQueue queue, uint32_t waitSemaphoreCount,
+ const VkSemaphore* pWaitSemaphores, VkImage image,
+ int32_t* pNativeFenceFd, const RecordObject& record_obj) {
+ FinishReadObject(queue, record_obj.location);
+
+ if (pWaitSemaphores) {
+ for (uint32_t index = 0; index < waitSemaphoreCount; index++) {
+ FinishReadObject(pWaitSemaphores[index], record_obj.location);
+ }
+ }
+ FinishReadObject(image, record_obj.location);
+}
+
+void ThreadSafety::PreCallRecordGetNativeBufferPropertiesOHOS(VkDevice device, const struct OH_NativeBuffer* buffer,
+ VkNativeBufferPropertiesOHOS* pProperties,
+ const RecordObject& record_obj) {
+ StartReadObjectParentInstance(device, record_obj.location);
+}
+
+void ThreadSafety::PostCallRecordGetNativeBufferPropertiesOHOS(VkDevice device, const struct OH_NativeBuffer* buffer,
+ VkNativeBufferPropertiesOHOS* pProperties,
+ const RecordObject& record_obj) {
+ FinishReadObjectParentInstance(device, record_obj.location);
+}
+
+void ThreadSafety::PreCallRecordGetMemoryNativeBufferOHOS(VkDevice device, const VkMemoryGetNativeBufferInfoOHOS* pInfo,
+ struct OH_NativeBuffer** pBuffer, const RecordObject& record_obj) {
+ StartReadObjectParentInstance(device, record_obj.location);
+}
+
+void ThreadSafety::PostCallRecordGetMemoryNativeBufferOHOS(VkDevice device, const VkMemoryGetNativeBufferInfoOHOS* pInfo,
+ struct OH_NativeBuffer** pBuffer, const RecordObject& record_obj) {
+ FinishReadObjectParentInstance(device, record_obj.location);
+}
+
+#endif // VK_USE_PLATFORM_OHOS
void ThreadSafety::PreCallRecordCreateAccelerationStructureKHR(VkDevice device,
const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
diff --git a/layers/vulkan/generated/thread_safety_commands.h b/layers/vulkan/generated/thread_safety_commands.h
index 1746dbb617d529f9bb6b586dbf314c2a27ab30c9..8934ba7d0a52a66af815c659c5b03b36d9dd330c 100644
--- a/layers/vulkan/generated/thread_safety_commands.h
+++ b/layers/vulkan/generated/thread_safety_commands.h
@@ -3977,6 +3977,47 @@ void PostCallRecordGetScreenBufferPropertiesQNX(VkDevice device, const struct _s
VkScreenBufferPropertiesQNX* pProperties, const RecordObject& record_obj) override;
#endif // VK_USE_PLATFORM_SCREEN_QNX
+#ifdef VK_USE_PLATFORM_OHOS
+void PreCallRecordCreateSurfaceOHOS(VkInstance instance, const VkSurfaceCreateInfoOHOS* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface,
+ const RecordObject& record_obj) override;
+
+void PostCallRecordCreateSurfaceOHOS(VkInstance instance, const VkSurfaceCreateInfoOHOS* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface,
+ const RecordObject& record_obj) override;
+
+void PreCallRecordGetSwapchainGrallocUsageOHOS(VkDevice device, VkFormat format, VkImageUsageFlags imageUsage,
+ uint64_t* grallocUsage, const RecordObject& record_obj) override;
+
+void PostCallRecordGetSwapchainGrallocUsageOHOS(VkDevice device, VkFormat format, VkImageUsageFlags imageUsage,
+ uint64_t* grallocUsage, const RecordObject& record_obj) override;
+
+void PreCallRecordAcquireImageOHOS(VkDevice device, VkImage image, int32_t nativeFenceFd, VkSemaphore semaphore, VkFence fence,
+ const RecordObject& record_obj) override;
+
+void PostCallRecordAcquireImageOHOS(VkDevice device, VkImage image, int32_t nativeFenceFd, VkSemaphore semaphore, VkFence fence,
+ const RecordObject& record_obj) override;
+
+void PreCallRecordQueueSignalReleaseImageOHOS(VkQueue queue, uint32_t waitSemaphoreCount, const VkSemaphore* pWaitSemaphores,
+ VkImage image, int32_t* pNativeFenceFd, const RecordObject& record_obj) override;
+
+void PostCallRecordQueueSignalReleaseImageOHOS(VkQueue queue, uint32_t waitSemaphoreCount, const VkSemaphore* pWaitSemaphores,
+ VkImage image, int32_t* pNativeFenceFd, const RecordObject& record_obj) override;
+
+void PreCallRecordGetNativeBufferPropertiesOHOS(VkDevice device, const struct OH_NativeBuffer* buffer,
+ VkNativeBufferPropertiesOHOS* pProperties, const RecordObject& record_obj) override;
+
+void PostCallRecordGetNativeBufferPropertiesOHOS(VkDevice device, const struct OH_NativeBuffer* buffer,
+ VkNativeBufferPropertiesOHOS* pProperties,
+ const RecordObject& record_obj) override;
+
+void PreCallRecordGetMemoryNativeBufferOHOS(VkDevice device, const VkMemoryGetNativeBufferInfoOHOS* pInfo,
+ struct OH_NativeBuffer** pBuffer, const RecordObject& record_obj) override;
+
+void PostCallRecordGetMemoryNativeBufferOHOS(VkDevice device, const VkMemoryGetNativeBufferInfoOHOS* pInfo,
+ struct OH_NativeBuffer** pBuffer, const RecordObject& record_obj) override;
+
+#endif // VK_USE_PLATFORM_OHOS
void PreCallRecordCreateAccelerationStructureKHR(VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkAccelerationStructureKHR* pAccelerationStructure,
diff --git a/layers/vulkan/generated/vk_dispatch_table_helper.h b/layers/vulkan/generated/vk_dispatch_table_helper.h
index b306ac0863a3eaf93d5a0aede363394abf5f5276..97ed3b17aff7d482908d43f81a6133684cb6ef5d 100644
--- a/layers/vulkan/generated/vk_dispatch_table_helper.h
+++ b/layers/vulkan/generated/vk_dispatch_table_helper.h
@@ -1689,6 +1689,33 @@ static VKAPI_ATTR VkResult VKAPI_CALL StubGetScreenBufferPropertiesQNX(VkDevice
return VK_SUCCESS;
}
#endif // VK_USE_PLATFORM_SCREEN_QNX
+#ifdef VK_USE_PLATFORM_OHOS
+static VKAPI_ATTR VkResult VKAPI_CALL StubCreateSurfaceOHOS(VkInstance instance, const VkSurfaceCreateInfoOHOS* pCreateInfo,
+ const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) {
+ return VK_SUCCESS;
+}
+static VKAPI_ATTR VkResult VKAPI_CALL StubGetSwapchainGrallocUsageOHOS(VkDevice device, VkFormat format,
+ VkImageUsageFlags imageUsage, uint64_t* grallocUsage) {
+ return VK_SUCCESS;
+}
+static VKAPI_ATTR VkResult VKAPI_CALL StubAcquireImageOHOS(VkDevice device, VkImage image, int32_t nativeFenceFd,
+ VkSemaphore semaphore, VkFence fence) {
+ return VK_SUCCESS;
+}
+static VKAPI_ATTR VkResult VKAPI_CALL StubQueueSignalReleaseImageOHOS(VkQueue queue, uint32_t waitSemaphoreCount,
+ const VkSemaphore* pWaitSemaphores, VkImage image,
+ int32_t* pNativeFenceFd) {
+ return VK_SUCCESS;
+}
+static VKAPI_ATTR VkResult VKAPI_CALL StubGetNativeBufferPropertiesOHOS(VkDevice device, const struct OH_NativeBuffer* buffer,
+ VkNativeBufferPropertiesOHOS* pProperties) {
+ return VK_SUCCESS;
+}
+static VKAPI_ATTR VkResult VKAPI_CALL StubGetMemoryNativeBufferOHOS(VkDevice device, const VkMemoryGetNativeBufferInfoOHOS* pInfo,
+ struct OH_NativeBuffer** pBuffer) {
+ return VK_SUCCESS;
+}
+#endif // VK_USE_PLATFORM_OHOS
static VKAPI_ATTR VkResult VKAPI_CALL StubCreateAccelerationStructureKHR(VkDevice device,
const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
@@ -2210,6 +2237,11 @@ const vvl::unordered_map> api_
{"vkQueueNotifyOutOfBandNV", {"VK_NV_low_latency2"}},
{"vkCmdSetAttachmentFeedbackLoopEnableEXT", {"VK_EXT_attachment_feedback_loop_dynamic_state"}},
{"vkGetScreenBufferPropertiesQNX", {"VK_QNX_external_memory_screen_buffer"}},
+ {"vkGetSwapchainGrallocUsageOHOS", {"VK_OHOS_native_buffer"}},
+ {"vkAcquireImageOHOS", {"VK_OHOS_native_buffer"}},
+ {"vkQueueSignalReleaseImageOHOS", {"VK_OHOS_native_buffer"}},
+ {"vkGetNativeBufferPropertiesOHOS", {"VK_OHOS_external_memory"}},
+ {"vkGetMemoryNativeBufferOHOS", {"VK_OHOS_external_memory"}},
{"vkCreateAccelerationStructureKHR", {"VK_KHR_acceleration_structure"}},
{"vkDestroyAccelerationStructureKHR", {"VK_KHR_acceleration_structure"}},
{"vkCmdBuildAccelerationStructuresKHR", {"VK_KHR_acceleration_structure"}},
@@ -4280,6 +4312,28 @@ static inline void layer_init_device_dispatch_table(VkDevice device, VkLayerDisp
table->GetScreenBufferPropertiesQNX = (PFN_vkGetScreenBufferPropertiesQNX)StubGetScreenBufferPropertiesQNX;
}
#endif // VK_USE_PLATFORM_SCREEN_QNX
+#ifdef VK_USE_PLATFORM_OHOS
+ table->GetSwapchainGrallocUsageOHOS = (PFN_vkGetSwapchainGrallocUsageOHOS)gpa(device, "vkGetSwapchainGrallocUsageOHOS");
+ if (table->GetSwapchainGrallocUsageOHOS == nullptr) {
+ table->GetSwapchainGrallocUsageOHOS = (PFN_vkGetSwapchainGrallocUsageOHOS)StubGetSwapchainGrallocUsageOHOS;
+ }
+ table->AcquireImageOHOS = (PFN_vkAcquireImageOHOS)gpa(device, "vkAcquireImageOHOS");
+ if (table->AcquireImageOHOS == nullptr) {
+ table->AcquireImageOHOS = (PFN_vkAcquireImageOHOS)StubAcquireImageOHOS;
+ }
+ table->QueueSignalReleaseImageOHOS = (PFN_vkQueueSignalReleaseImageOHOS)gpa(device, "vkQueueSignalReleaseImageOHOS");
+ if (table->QueueSignalReleaseImageOHOS == nullptr) {
+ table->QueueSignalReleaseImageOHOS = (PFN_vkQueueSignalReleaseImageOHOS)StubQueueSignalReleaseImageOHOS;
+ }
+ table->GetNativeBufferPropertiesOHOS = (PFN_vkGetNativeBufferPropertiesOHOS)gpa(device, "vkGetNativeBufferPropertiesOHOS");
+ if (table->GetNativeBufferPropertiesOHOS == nullptr) {
+ table->GetNativeBufferPropertiesOHOS = (PFN_vkGetNativeBufferPropertiesOHOS)StubGetNativeBufferPropertiesOHOS;
+ }
+ table->GetMemoryNativeBufferOHOS = (PFN_vkGetMemoryNativeBufferOHOS)gpa(device, "vkGetMemoryNativeBufferOHOS");
+ if (table->GetMemoryNativeBufferOHOS == nullptr) {
+ table->GetMemoryNativeBufferOHOS = (PFN_vkGetMemoryNativeBufferOHOS)StubGetMemoryNativeBufferOHOS;
+ }
+#endif // VK_USE_PLATFORM_OHOS
table->CreateAccelerationStructureKHR = (PFN_vkCreateAccelerationStructureKHR)gpa(device, "vkCreateAccelerationStructureKHR");
if (table->CreateAccelerationStructureKHR == nullptr) {
table->CreateAccelerationStructureKHR = (PFN_vkCreateAccelerationStructureKHR)StubCreateAccelerationStructureKHR;
@@ -4946,5 +5000,11 @@ static inline void layer_init_instance_dispatch_table(VkInstance instance, VkLay
table->GetPhysicalDeviceOpticalFlowImageFormatsNV =
(PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV)StubGetPhysicalDeviceOpticalFlowImageFormatsNV;
}
+#ifdef VK_USE_PLATFORM_OHOS
+ table->CreateSurfaceOHOS = (PFN_vkCreateSurfaceOHOS)gpa(instance, "vkCreateSurfaceOHOS");
+ if (table->CreateSurfaceOHOS == nullptr) {
+ table->CreateSurfaceOHOS = (PFN_vkCreateSurfaceOHOS)StubCreateSurfaceOHOS;
+ }
+#endif // VK_USE_PLATFORM_OHOS
}
// NOLINTEND
diff --git a/layers/vulkan/generated/vk_extension_helper.h b/layers/vulkan/generated/vk_extension_helper.h
index 39c14c3162ebedc370092929c41a2273919c9f6e..69138f02698c46a3c2d7c446df0ada04ab444550 100644
--- a/layers/vulkan/generated/vk_extension_helper.h
+++ b/layers/vulkan/generated/vk_extension_helper.h
@@ -114,6 +114,7 @@ struct InstanceExtensions {
ExtEnabled vk_google_surfaceless_query{kNotEnabled};
ExtEnabled vk_lunarg_direct_driver_loading{kNotEnabled};
ExtEnabled vk_ext_layer_settings{kNotEnabled};
+ ExtEnabled vk_ohos_surface{kNotEnabled};
static const PromotedExtensionInfoMap &get_promotion_info_map() {
static const PromotedExtensionInfoMap promoted_map = {
@@ -281,6 +282,9 @@ struct InstanceExtensions {
{VK_LUNARG_DIRECT_DRIVER_LOADING_EXTENSION_NAME,
InstanceInfo(&InstanceExtensions::vk_lunarg_direct_driver_loading, {})},
{VK_EXT_LAYER_SETTINGS_EXTENSION_NAME, InstanceInfo(&InstanceExtensions::vk_ext_layer_settings, {})},
+#ifdef VK_USE_PLATFORM_OHOS
+ {VK_OHOS_SURFACE_EXTENSION_NAME, InstanceInfo(&InstanceExtensions::vk_ohos_surface, {})},
+#endif // VK_USE_PLATFORM_OHOS
};
return info_map;
@@ -393,6 +397,9 @@ static const std::set kInstanceExtensionNames = {
VK_GOOGLE_SURFACELESS_QUERY_EXTENSION_NAME,
VK_LUNARG_DIRECT_DRIVER_LOADING_EXTENSION_NAME,
VK_EXT_LAYER_SETTINGS_EXTENSION_NAME,
+#ifdef VK_USE_PLATFORM_OHOS
+ VK_OHOS_SURFACE_EXTENSION_NAME,
+#endif // VK_USE_PLATFORM_OHOS
};
struct DeviceExtensions : public InstanceExtensions {
@@ -712,6 +719,8 @@ struct DeviceExtensions : public InstanceExtensions {
ExtEnabled vk_qnx_external_memory_screen_buffer{kNotEnabled};
ExtEnabled vk_msft_layered_driver{kNotEnabled};
ExtEnabled vk_nv_descriptor_pool_overallocation{kNotEnabled};
+ ExtEnabled vk_ohos_native_buffer{kNotEnabled};
+ ExtEnabled vk_ohos_external_memory{kNotEnabled};
ExtEnabled vk_khr_acceleration_structure{kNotEnabled};
ExtEnabled vk_khr_ray_tracing_pipeline{kNotEnabled};
ExtEnabled vk_khr_ray_query{kNotEnabled};
@@ -1830,6 +1839,10 @@ struct DeviceExtensions : public InstanceExtensions {
{VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_EXTENSION_NAME,
DeviceInfo(&DeviceExtensions::vk_nv_descriptor_pool_overallocation,
{{{&DeviceExtensions::vk_feature_version_1_1, "VK_VERSION_1_1"}}})},
+#ifdef VK_USE_PLATFORM_OHOS
+ {VK_OHOS_NATIVE_BUFFER_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ohos_native_buffer, {})},
+ {VK_OHOS_EXTERNAL_MEMORY_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_ohos_external_memory, {})},
+#endif // VK_USE_PLATFORM_OHOS
{VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME,
DeviceInfo(&DeviceExtensions::vk_khr_acceleration_structure,
{{{&DeviceExtensions::vk_feature_version_1_1, "VK_VERSION_1_1"},
@@ -2271,6 +2284,10 @@ static const std::set kDeviceExtensionNames = {
#endif // VK_USE_PLATFORM_SCREEN_QNX
VK_MSFT_LAYERED_DRIVER_EXTENSION_NAME,
VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_EXTENSION_NAME,
+#ifdef VK_USE_PLATFORM_OHOS
+ VK_OHOS_NATIVE_BUFFER_EXTENSION_NAME,
+ VK_OHOS_EXTERNAL_MEMORY_EXTENSION_NAME,
+#endif // VK_USE_PLATFORM_OHOS
VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME,
VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME,
VK_KHR_RAY_QUERY_EXTENSION_NAME,
diff --git a/layers/vulkan/generated/vk_function_pointers.cpp b/layers/vulkan/generated/vk_function_pointers.cpp
index db157bdd6c5e07def0b18ecdce628c0a335f2a24..190df4bfb9b0db3e86e4c2b425fe102c6f87bd7f 100644
--- a/layers/vulkan/generated/vk_function_pointers.cpp
+++ b/layers/vulkan/generated/vk_function_pointers.cpp
@@ -778,6 +778,14 @@ PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT CmdSetAttachmentFeedbackLoopEnableEX
#ifdef VK_USE_PLATFORM_SCREEN_QNX
PFN_vkGetScreenBufferPropertiesQNX GetScreenBufferPropertiesQNX;
#endif // VK_USE_PLATFORM_SCREEN_QNX
+#ifdef VK_USE_PLATFORM_OHOS
+PFN_vkCreateSurfaceOHOS CreateSurfaceOHOS;
+PFN_vkGetSwapchainGrallocUsageOHOS GetSwapchainGrallocUsageOHOS;
+PFN_vkAcquireImageOHOS AcquireImageOHOS;
+PFN_vkQueueSignalReleaseImageOHOS QueueSignalReleaseImageOHOS;
+PFN_vkGetNativeBufferPropertiesOHOS GetNativeBufferPropertiesOHOS;
+PFN_vkGetMemoryNativeBufferOHOS GetMemoryNativeBufferOHOS;
+#endif // VK_USE_PLATFORM_OHOS
PFN_vkCreateAccelerationStructureKHR CreateAccelerationStructureKHR;
PFN_vkDestroyAccelerationStructureKHR DestroyAccelerationStructureKHR;
PFN_vkCmdBuildAccelerationStructuresKHR CmdBuildAccelerationStructuresKHR;
@@ -1461,6 +1469,13 @@ void InitInstanceExtension(VkInstance instance, const char* extension_name) {
}
},
#endif // VK_USE_PLATFORM_SCREEN_QNX
+#ifdef VK_USE_PLATFORM_OHOS
+ {
+ "VK_OHOS_surface", [](VkInstance instance) {
+ CreateSurfaceOHOS = reinterpret_cast(GetInstanceProcAddr(instance, "vkCreateSurfaceOHOS"));
+ }
+ },
+#endif // VK_USE_PLATFORM_OHOS
};
@@ -2365,6 +2380,21 @@ void InitDeviceExtension(VkInstance instance, VkDevice device, const char* exten
}
},
#endif // VK_USE_PLATFORM_SCREEN_QNX
+#ifdef VK_USE_PLATFORM_OHOS
+ {
+ "VK_OHOS_native_buffer", [](VkInstance , VkDevice device) {
+ GetSwapchainGrallocUsageOHOS = reinterpret_cast(GetDeviceProcAddr(device, "vkGetSwapchainGrallocUsageOHOS"));
+ AcquireImageOHOS = reinterpret_cast(GetDeviceProcAddr(device, "vkAcquireImageOHOS"));
+ QueueSignalReleaseImageOHOS = reinterpret_cast(GetDeviceProcAddr(device, "vkQueueSignalReleaseImageOHOS"));
+ }
+ },
+ {
+ "VK_OHOS_external_memory", [](VkInstance , VkDevice device) {
+ GetNativeBufferPropertiesOHOS = reinterpret_cast(GetDeviceProcAddr(device, "vkGetNativeBufferPropertiesOHOS"));
+ GetMemoryNativeBufferOHOS = reinterpret_cast(GetDeviceProcAddr(device, "vkGetMemoryNativeBufferOHOS"));
+ }
+ },
+#endif // VK_USE_PLATFORM_OHOS
{
"VK_KHR_acceleration_structure", [](VkInstance , VkDevice device) {
CreateAccelerationStructureKHR = reinterpret_cast(GetDeviceProcAddr(device, "vkCreateAccelerationStructureKHR"));
@@ -2897,6 +2927,14 @@ void ResetAllExtensions() {
#ifdef VK_USE_PLATFORM_SCREEN_QNX
GetScreenBufferPropertiesQNX = nullptr;
#endif // VK_USE_PLATFORM_SCREEN_QNX
+#ifdef VK_USE_PLATFORM_OHOS
+ CreateSurfaceOHOS = nullptr;
+ GetSwapchainGrallocUsageOHOS = nullptr;
+ AcquireImageOHOS = nullptr;
+ QueueSignalReleaseImageOHOS = nullptr;
+ GetNativeBufferPropertiesOHOS = nullptr;
+ GetMemoryNativeBufferOHOS = nullptr;
+#endif // VK_USE_PLATFORM_OHOS
CreateAccelerationStructureKHR = nullptr;
DestroyAccelerationStructureKHR = nullptr;
CmdBuildAccelerationStructuresKHR = nullptr;
diff --git a/layers/vulkan/generated/vk_function_pointers.h b/layers/vulkan/generated/vk_function_pointers.h
index 96a29930929369118356e93506953bce5d986bdb..83bff7f64c54e2d15235b2962cabb60851668a59 100644
--- a/layers/vulkan/generated/vk_function_pointers.h
+++ b/layers/vulkan/generated/vk_function_pointers.h
@@ -741,6 +741,14 @@ extern PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT CmdSetAttachmentFeedbackLoopE
#ifdef VK_USE_PLATFORM_SCREEN_QNX
extern PFN_vkGetScreenBufferPropertiesQNX GetScreenBufferPropertiesQNX;
#endif // VK_USE_PLATFORM_SCREEN_QNX
+#ifdef VK_USE_PLATFORM_OHOS
+extern PFN_vkCreateSurfaceOHOS CreateSurfaceOHOS;
+extern PFN_vkGetSwapchainGrallocUsageOHOS GetSwapchainGrallocUsageOHOS;
+extern PFN_vkAcquireImageOHOS AcquireImageOHOS;
+extern PFN_vkQueueSignalReleaseImageOHOS QueueSignalReleaseImageOHOS;
+extern PFN_vkGetNativeBufferPropertiesOHOS GetNativeBufferPropertiesOHOS;
+extern PFN_vkGetMemoryNativeBufferOHOS GetMemoryNativeBufferOHOS;
+#endif // VK_USE_PLATFORM_OHOS
extern PFN_vkCreateAccelerationStructureKHR CreateAccelerationStructureKHR;
extern PFN_vkDestroyAccelerationStructureKHR DestroyAccelerationStructureKHR;
extern PFN_vkCmdBuildAccelerationStructuresKHR CmdBuildAccelerationStructuresKHR;
diff --git a/layers/vulkan/generated/vk_layer_dispatch_table.h b/layers/vulkan/generated/vk_layer_dispatch_table.h
index ca1cbba104d56d5d5269c00b5fa986f749212e8d..ff815d5dda0ed797e25732705143838135a7f668 100644
--- a/layers/vulkan/generated/vk_layer_dispatch_table.h
+++ b/layers/vulkan/generated/vk_layer_dispatch_table.h
@@ -172,6 +172,9 @@ typedef struct VkLayerInstanceDispatchTable_ {
PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX GetPhysicalDeviceScreenPresentationSupportQNX;
#endif // VK_USE_PLATFORM_SCREEN_QNX
PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV GetPhysicalDeviceOpticalFlowImageFormatsNV;
+#ifdef VK_USE_PLATFORM_OHOS
+ PFN_vkCreateSurfaceOHOS CreateSurfaceOHOS;
+#endif // VK_USE_PLATFORM_OHOS
} VkLayerInstanceDispatchTable;
// Device function pointer dispatch table
@@ -739,6 +742,13 @@ typedef struct VkLayerDispatchTable_ {
#ifdef VK_USE_PLATFORM_SCREEN_QNX
PFN_vkGetScreenBufferPropertiesQNX GetScreenBufferPropertiesQNX;
#endif // VK_USE_PLATFORM_SCREEN_QNX
+#ifdef VK_USE_PLATFORM_OHOS
+ PFN_vkGetSwapchainGrallocUsageOHOS GetSwapchainGrallocUsageOHOS;
+ PFN_vkAcquireImageOHOS AcquireImageOHOS;
+ PFN_vkQueueSignalReleaseImageOHOS QueueSignalReleaseImageOHOS;
+ PFN_vkGetNativeBufferPropertiesOHOS GetNativeBufferPropertiesOHOS;
+ PFN_vkGetMemoryNativeBufferOHOS GetMemoryNativeBufferOHOS;
+#endif // VK_USE_PLATFORM_OHOS
PFN_vkCreateAccelerationStructureKHR CreateAccelerationStructureKHR;
PFN_vkDestroyAccelerationStructureKHR DestroyAccelerationStructureKHR;
PFN_vkCmdBuildAccelerationStructuresKHR CmdBuildAccelerationStructuresKHR;
diff --git a/layers/vulkan/generated/vk_safe_struct.h b/layers/vulkan/generated/vk_safe_struct.h
index f04c0db2f90e745c644b92561371212c540de7c9..1d310529dfeb8feb8d28642ec0fc85ffbfa21b87 100644
--- a/layers/vulkan/generated/vk_safe_struct.h
+++ b/layers/vulkan/generated/vk_safe_struct.h
@@ -17688,6 +17688,179 @@ struct safe_VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV {
return reinterpret_cast(this);
}
};
+#ifdef VK_USE_PLATFORM_OHOS
+struct safe_VkSurfaceCreateInfoOHOS {
+ VkStructureType sType;
+ const void* pNext{};
+ VkSurfaceCreateFlagsOHOS flags;
+ OHNativeWindow* window{};
+
+ safe_VkSurfaceCreateInfoOHOS(const VkSurfaceCreateInfoOHOS* in_struct, PNextCopyState* copy_state = {}, bool copy_pnext = true);
+ safe_VkSurfaceCreateInfoOHOS(const safe_VkSurfaceCreateInfoOHOS& copy_src);
+ safe_VkSurfaceCreateInfoOHOS& operator=(const safe_VkSurfaceCreateInfoOHOS& copy_src);
+ safe_VkSurfaceCreateInfoOHOS();
+ ~safe_VkSurfaceCreateInfoOHOS();
+ void initialize(const VkSurfaceCreateInfoOHOS* in_struct, PNextCopyState* copy_state = {});
+ void initialize(const safe_VkSurfaceCreateInfoOHOS* copy_src, PNextCopyState* copy_state = {});
+ VkSurfaceCreateInfoOHOS* ptr() { return reinterpret_cast(this); }
+ VkSurfaceCreateInfoOHOS const* ptr() const { return reinterpret_cast(this); }
+};
+struct safe_VkNativeBufferOHOS {
+ VkStructureType sType;
+ const void* pNext{};
+ BufferHandle* handle{};
+
+ safe_VkNativeBufferOHOS(const VkNativeBufferOHOS* in_struct, PNextCopyState* copy_state = {}, bool copy_pnext = true);
+ safe_VkNativeBufferOHOS(const safe_VkNativeBufferOHOS& copy_src);
+ safe_VkNativeBufferOHOS& operator=(const safe_VkNativeBufferOHOS& copy_src);
+ safe_VkNativeBufferOHOS();
+ ~safe_VkNativeBufferOHOS();
+ void initialize(const VkNativeBufferOHOS* in_struct, PNextCopyState* copy_state = {});
+ void initialize(const safe_VkNativeBufferOHOS* copy_src, PNextCopyState* copy_state = {});
+ VkNativeBufferOHOS* ptr() { return reinterpret_cast(this); }
+ VkNativeBufferOHOS const* ptr() const { return reinterpret_cast(this); }
+};
+struct safe_VkSwapchainImageCreateInfoOHOS {
+ VkStructureType sType;
+ const void* pNext{};
+ VkSwapchainImageUsageFlagsOHOS usage;
+
+ safe_VkSwapchainImageCreateInfoOHOS(const VkSwapchainImageCreateInfoOHOS* in_struct, PNextCopyState* copy_state = {},
+ bool copy_pnext = true);
+ safe_VkSwapchainImageCreateInfoOHOS(const safe_VkSwapchainImageCreateInfoOHOS& copy_src);
+ safe_VkSwapchainImageCreateInfoOHOS& operator=(const safe_VkSwapchainImageCreateInfoOHOS& copy_src);
+ safe_VkSwapchainImageCreateInfoOHOS();
+ ~safe_VkSwapchainImageCreateInfoOHOS();
+ void initialize(const VkSwapchainImageCreateInfoOHOS* in_struct, PNextCopyState* copy_state = {});
+ void initialize(const safe_VkSwapchainImageCreateInfoOHOS* copy_src, PNextCopyState* copy_state = {});
+ VkSwapchainImageCreateInfoOHOS* ptr() { return reinterpret_cast(this); }
+ VkSwapchainImageCreateInfoOHOS const* ptr() const { return reinterpret_cast(this); }
+};
+struct safe_VkPhysicalDevicePresentationPropertiesOHOS {
+ VkStructureType sType;
+ const void* pNext{};
+ VkBool32 sharedImage;
+
+ safe_VkPhysicalDevicePresentationPropertiesOHOS(const VkPhysicalDevicePresentationPropertiesOHOS* in_struct,
+ PNextCopyState* copy_state = {}, bool copy_pnext = true);
+ safe_VkPhysicalDevicePresentationPropertiesOHOS(const safe_VkPhysicalDevicePresentationPropertiesOHOS& copy_src);
+ safe_VkPhysicalDevicePresentationPropertiesOHOS& operator=(const safe_VkPhysicalDevicePresentationPropertiesOHOS& copy_src);
+ safe_VkPhysicalDevicePresentationPropertiesOHOS();
+ ~safe_VkPhysicalDevicePresentationPropertiesOHOS();
+ void initialize(const VkPhysicalDevicePresentationPropertiesOHOS* in_struct, PNextCopyState* copy_state = {});
+ void initialize(const safe_VkPhysicalDevicePresentationPropertiesOHOS* copy_src, PNextCopyState* copy_state = {});
+ VkPhysicalDevicePresentationPropertiesOHOS* ptr() {
+ return reinterpret_cast(this);
+ }
+ VkPhysicalDevicePresentationPropertiesOHOS const* ptr() const {
+ return reinterpret_cast(this);
+ }
+};
+struct safe_VkNativeBufferUsageOHOS {
+ VkStructureType sType;
+ void* pNext{};
+ uint64_t OHOSNativeBufferUsage;
+
+ safe_VkNativeBufferUsageOHOS(const VkNativeBufferUsageOHOS* in_struct, PNextCopyState* copy_state = {}, bool copy_pnext = true);
+ safe_VkNativeBufferUsageOHOS(const safe_VkNativeBufferUsageOHOS& copy_src);
+ safe_VkNativeBufferUsageOHOS& operator=(const safe_VkNativeBufferUsageOHOS& copy_src);
+ safe_VkNativeBufferUsageOHOS();
+ ~safe_VkNativeBufferUsageOHOS();
+ void initialize(const VkNativeBufferUsageOHOS* in_struct, PNextCopyState* copy_state = {});
+ void initialize(const safe_VkNativeBufferUsageOHOS* copy_src, PNextCopyState* copy_state = {});
+ VkNativeBufferUsageOHOS* ptr() { return reinterpret_cast(this); }
+ VkNativeBufferUsageOHOS const* ptr() const { return reinterpret_cast(this); }
+};
+struct safe_VkNativeBufferPropertiesOHOS {
+ VkStructureType sType;
+ void* pNext{};
+ VkDeviceSize allocationSize;
+ uint32_t memoryTypeBits;
+
+ safe_VkNativeBufferPropertiesOHOS(const VkNativeBufferPropertiesOHOS* in_struct, PNextCopyState* copy_state = {},
+ bool copy_pnext = true);
+ safe_VkNativeBufferPropertiesOHOS(const safe_VkNativeBufferPropertiesOHOS& copy_src);
+ safe_VkNativeBufferPropertiesOHOS& operator=(const safe_VkNativeBufferPropertiesOHOS& copy_src);
+ safe_VkNativeBufferPropertiesOHOS();
+ ~safe_VkNativeBufferPropertiesOHOS();
+ void initialize(const VkNativeBufferPropertiesOHOS* in_struct, PNextCopyState* copy_state = {});
+ void initialize(const safe_VkNativeBufferPropertiesOHOS* copy_src, PNextCopyState* copy_state = {});
+ VkNativeBufferPropertiesOHOS* ptr() { return reinterpret_cast(this); }
+ VkNativeBufferPropertiesOHOS const* ptr() const { return reinterpret_cast(this); }
+};
+struct safe_VkNativeBufferFormatPropertiesOHOS {
+ VkStructureType sType;
+ void* pNext{};
+ VkFormat format;
+ uint64_t externalFormat;
+ VkFormatFeatureFlags formatFeatures;
+ VkComponentMapping samplerYcbcrConversionComponents;
+ VkSamplerYcbcrModelConversion suggestedYcbcrModel;
+ VkSamplerYcbcrRange suggestedYcbcrRange;
+ VkChromaLocation suggestedXChromaOffset;
+ VkChromaLocation suggestedYChromaOffset;
+
+ safe_VkNativeBufferFormatPropertiesOHOS(const VkNativeBufferFormatPropertiesOHOS* in_struct, PNextCopyState* copy_state = {},
+ bool copy_pnext = true);
+ safe_VkNativeBufferFormatPropertiesOHOS(const safe_VkNativeBufferFormatPropertiesOHOS& copy_src);
+ safe_VkNativeBufferFormatPropertiesOHOS& operator=(const safe_VkNativeBufferFormatPropertiesOHOS& copy_src);
+ safe_VkNativeBufferFormatPropertiesOHOS();
+ ~safe_VkNativeBufferFormatPropertiesOHOS();
+ void initialize(const VkNativeBufferFormatPropertiesOHOS* in_struct, PNextCopyState* copy_state = {});
+ void initialize(const safe_VkNativeBufferFormatPropertiesOHOS* copy_src, PNextCopyState* copy_state = {});
+ VkNativeBufferFormatPropertiesOHOS* ptr() { return reinterpret_cast(this); }
+ VkNativeBufferFormatPropertiesOHOS const* ptr() const {
+ return reinterpret_cast(this);
+ }
+};
+struct safe_VkImportNativeBufferInfoOHOS {
+ VkStructureType sType;
+ const void* pNext{};
+ struct OH_NativeBuffer* buffer{};
+
+ safe_VkImportNativeBufferInfoOHOS(const VkImportNativeBufferInfoOHOS* in_struct, PNextCopyState* copy_state = {},
+ bool copy_pnext = true);
+ safe_VkImportNativeBufferInfoOHOS(const safe_VkImportNativeBufferInfoOHOS& copy_src);
+ safe_VkImportNativeBufferInfoOHOS& operator=(const safe_VkImportNativeBufferInfoOHOS& copy_src);
+ safe_VkImportNativeBufferInfoOHOS();
+ ~safe_VkImportNativeBufferInfoOHOS();
+ void initialize(const VkImportNativeBufferInfoOHOS* in_struct, PNextCopyState* copy_state = {});
+ void initialize(const safe_VkImportNativeBufferInfoOHOS* copy_src, PNextCopyState* copy_state = {});
+ VkImportNativeBufferInfoOHOS* ptr() { return reinterpret_cast(this); }
+ VkImportNativeBufferInfoOHOS const* ptr() const { return reinterpret_cast(this); }
+};
+struct safe_VkMemoryGetNativeBufferInfoOHOS {
+ VkStructureType sType;
+ const void* pNext{};
+ VkDeviceMemory memory;
+
+ safe_VkMemoryGetNativeBufferInfoOHOS(const VkMemoryGetNativeBufferInfoOHOS* in_struct, PNextCopyState* copy_state = {},
+ bool copy_pnext = true);
+ safe_VkMemoryGetNativeBufferInfoOHOS(const safe_VkMemoryGetNativeBufferInfoOHOS& copy_src);
+ safe_VkMemoryGetNativeBufferInfoOHOS& operator=(const safe_VkMemoryGetNativeBufferInfoOHOS& copy_src);
+ safe_VkMemoryGetNativeBufferInfoOHOS();
+ ~safe_VkMemoryGetNativeBufferInfoOHOS();
+ void initialize(const VkMemoryGetNativeBufferInfoOHOS* in_struct, PNextCopyState* copy_state = {});
+ void initialize(const safe_VkMemoryGetNativeBufferInfoOHOS* copy_src, PNextCopyState* copy_state = {});
+ VkMemoryGetNativeBufferInfoOHOS* ptr() { return reinterpret_cast(this); }
+ VkMemoryGetNativeBufferInfoOHOS const* ptr() const { return reinterpret_cast(this); }
+};
+struct safe_VkExternalFormatOHOS {
+ VkStructureType sType;
+ void* pNext{};
+ uint64_t externalFormat;
+
+ safe_VkExternalFormatOHOS(const VkExternalFormatOHOS* in_struct, PNextCopyState* copy_state = {}, bool copy_pnext = true);
+ safe_VkExternalFormatOHOS(const safe_VkExternalFormatOHOS& copy_src);
+ safe_VkExternalFormatOHOS& operator=(const safe_VkExternalFormatOHOS& copy_src);
+ safe_VkExternalFormatOHOS();
+ ~safe_VkExternalFormatOHOS();
+ void initialize(const VkExternalFormatOHOS* in_struct, PNextCopyState* copy_state = {});
+ void initialize(const safe_VkExternalFormatOHOS* copy_src, PNextCopyState* copy_state = {});
+ VkExternalFormatOHOS* ptr() { return reinterpret_cast(this); }
+ VkExternalFormatOHOS const* ptr() const { return reinterpret_cast(this); }
+};
+#endif // VK_USE_PLATFORM_OHOS
struct safe_VkAccelerationStructureGeometryTrianglesDataKHR {
VkStructureType sType;
const void* pNext{};
diff --git a/layers/vulkan/generated/vk_safe_struct_utils.cpp b/layers/vulkan/generated/vk_safe_struct_utils.cpp
index d4e0688f2f6bb187d92751166e416f309199e4c8..3ca4129555cd1a2a130d8ac0fb905ca90f844a51 100644
--- a/layers/vulkan/generated/vk_safe_struct_utils.cpp
+++ b/layers/vulkan/generated/vk_safe_struct_utils.cpp
@@ -1732,6 +1732,20 @@ void *SafePnextCopy(const void *pNext, PNextCopyState* copy_state) {
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV:
safe_pNext = new safe_VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV(reinterpret_cast(pNext), copy_state, false);
break;
+#ifdef VK_USE_PLATFORM_OHOS
+ case VK_STRUCTURE_TYPE_NATIVE_BUFFER_USAGE_OHOS:
+ safe_pNext = new safe_VkNativeBufferUsageOHOS(reinterpret_cast(pNext), copy_state, false);
+ break;
+ case VK_STRUCTURE_TYPE_NATIVE_BUFFER_FORMAT_PROPERTIES_OHOS:
+ safe_pNext = new safe_VkNativeBufferFormatPropertiesOHOS(reinterpret_cast(pNext), copy_state, false);
+ break;
+ case VK_STRUCTURE_TYPE_IMPORT_NATIVE_BUFFER_INFO_OHOS:
+ safe_pNext = new safe_VkImportNativeBufferInfoOHOS(reinterpret_cast(pNext), copy_state, false);
+ break;
+ case VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_OHOS:
+ safe_pNext = new safe_VkExternalFormatOHOS(reinterpret_cast(pNext), copy_state, false);
+ break;
+#endif // VK_USE_PLATFORM_OHOS
case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR:
safe_pNext = new safe_VkWriteDescriptorSetAccelerationStructureKHR(reinterpret_cast(pNext), copy_state, false);
break;
@@ -3468,6 +3482,20 @@ void FreePnextChain(const void *pNext) {
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV:
delete reinterpret_cast(header);
break;
+#ifdef VK_USE_PLATFORM_OHOS
+ case VK_STRUCTURE_TYPE_NATIVE_BUFFER_USAGE_OHOS:
+ delete reinterpret_cast(header);
+ break;
+ case VK_STRUCTURE_TYPE_NATIVE_BUFFER_FORMAT_PROPERTIES_OHOS:
+ delete reinterpret_cast(header);
+ break;
+ case VK_STRUCTURE_TYPE_IMPORT_NATIVE_BUFFER_INFO_OHOS:
+ delete reinterpret_cast(header);
+ break;
+ case VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_OHOS:
+ delete reinterpret_cast(header);
+ break;
+#endif // VK_USE_PLATFORM_OHOS
case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR:
delete reinterpret_cast(header);
break;
diff --git a/layers/vulkan/generated/vk_safe_struct_vendor.cpp b/layers/vulkan/generated/vk_safe_struct_vendor.cpp
index 8050dea437840db48a478d0b2c300096a4bdedf3..1ab3731455d7870b8168c10c8c35430dcc245cf5 100644
--- a/layers/vulkan/generated/vk_safe_struct_vendor.cpp
+++ b/layers/vulkan/generated/vk_safe_struct_vendor.cpp
@@ -15263,5 +15263,595 @@ void safe_VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV::initialize(
descriptorPoolOverallocation = copy_src->descriptorPoolOverallocation;
pNext = SafePnextCopy(copy_src->pNext);
}
+#ifdef VK_USE_PLATFORM_OHOS
+
+safe_VkSurfaceCreateInfoOHOS::safe_VkSurfaceCreateInfoOHOS(const VkSurfaceCreateInfoOHOS* in_struct,
+ [[maybe_unused]] PNextCopyState* copy_state, bool copy_pnext)
+ : sType(in_struct->sType), flags(in_struct->flags), window(nullptr) {
+ if (copy_pnext) {
+ pNext = SafePnextCopy(in_struct->pNext, copy_state);
+ }
+ if (in_struct->window) {
+ window = new OHNativeWindow(*in_struct->window);
+ }
+}
+
+safe_VkSurfaceCreateInfoOHOS::safe_VkSurfaceCreateInfoOHOS()
+ : sType(VK_STRUCTURE_TYPE_SURFACE_CREATE_INFO_OHOS), pNext(nullptr), flags(), window(nullptr) {}
+
+safe_VkSurfaceCreateInfoOHOS::safe_VkSurfaceCreateInfoOHOS(const safe_VkSurfaceCreateInfoOHOS& copy_src) {
+ sType = copy_src.sType;
+ flags = copy_src.flags;
+ window = nullptr;
+ pNext = SafePnextCopy(copy_src.pNext);
+
+ if (copy_src.window) {
+ window = new OHNativeWindow(*copy_src.window);
+ }
+}
+
+safe_VkSurfaceCreateInfoOHOS& safe_VkSurfaceCreateInfoOHOS::operator=(const safe_VkSurfaceCreateInfoOHOS& copy_src) {
+ if (©_src == this) return *this;
+
+ if (window) delete window;
+ FreePnextChain(pNext);
+
+ sType = copy_src.sType;
+ flags = copy_src.flags;
+ window = nullptr;
+ pNext = SafePnextCopy(copy_src.pNext);
+
+ if (copy_src.window) {
+ window = new OHNativeWindow(*copy_src.window);
+ }
+
+ return *this;
+}
+
+safe_VkSurfaceCreateInfoOHOS::~safe_VkSurfaceCreateInfoOHOS() {
+ if (window) delete window;
+ FreePnextChain(pNext);
+}
+
+void safe_VkSurfaceCreateInfoOHOS::initialize(const VkSurfaceCreateInfoOHOS* in_struct,
+ [[maybe_unused]] PNextCopyState* copy_state) {
+ if (window) delete window;
+ FreePnextChain(pNext);
+ sType = in_struct->sType;
+ flags = in_struct->flags;
+ window = nullptr;
+ pNext = SafePnextCopy(in_struct->pNext, copy_state);
+
+ if (in_struct->window) {
+ window = new OHNativeWindow(*in_struct->window);
+ }
+}
+
+void safe_VkSurfaceCreateInfoOHOS::initialize(const safe_VkSurfaceCreateInfoOHOS* copy_src,
+ [[maybe_unused]] PNextCopyState* copy_state) {
+ sType = copy_src->sType;
+ flags = copy_src->flags;
+ window = nullptr;
+ pNext = SafePnextCopy(copy_src->pNext);
+
+ if (copy_src->window) {
+ window = new OHNativeWindow(*copy_src->window);
+ }
+}
+
+safe_VkNativeBufferOHOS::safe_VkNativeBufferOHOS(const VkNativeBufferOHOS* in_struct, [[maybe_unused]] PNextCopyState* copy_state,
+ bool copy_pnext)
+ : sType(in_struct->sType), handle(nullptr) {
+ if (copy_pnext) {
+ pNext = SafePnextCopy(in_struct->pNext, copy_state);
+ }
+ if (in_struct->handle) {
+ handle = new BufferHandle(*in_struct->handle);
+ }
+}
+
+safe_VkNativeBufferOHOS::safe_VkNativeBufferOHOS() : sType(VK_STRUCTURE_TYPE_NATIVE_BUFFER_OHOS), pNext(nullptr), handle(nullptr) {}
+
+safe_VkNativeBufferOHOS::safe_VkNativeBufferOHOS(const safe_VkNativeBufferOHOS& copy_src) {
+ sType = copy_src.sType;
+ handle = nullptr;
+ pNext = SafePnextCopy(copy_src.pNext);
+
+ if (copy_src.handle) {
+ handle = new BufferHandle(*copy_src.handle);
+ }
+}
+
+safe_VkNativeBufferOHOS& safe_VkNativeBufferOHOS::operator=(const safe_VkNativeBufferOHOS& copy_src) {
+ if (©_src == this) return *this;
+
+ if (handle) delete handle;
+ FreePnextChain(pNext);
+
+ sType = copy_src.sType;
+ handle = nullptr;
+ pNext = SafePnextCopy(copy_src.pNext);
+
+ if (copy_src.handle) {
+ handle = new BufferHandle(*copy_src.handle);
+ }
+
+ return *this;
+}
+
+safe_VkNativeBufferOHOS::~safe_VkNativeBufferOHOS() {
+ if (handle) delete handle;
+ FreePnextChain(pNext);
+}
+
+void safe_VkNativeBufferOHOS::initialize(const VkNativeBufferOHOS* in_struct, [[maybe_unused]] PNextCopyState* copy_state) {
+ if (handle) delete handle;
+ FreePnextChain(pNext);
+ sType = in_struct->sType;
+ handle = nullptr;
+ pNext = SafePnextCopy(in_struct->pNext, copy_state);
+
+ if (in_struct->handle) {
+ handle = new BufferHandle(*in_struct->handle);
+ }
+}
+
+void safe_VkNativeBufferOHOS::initialize(const safe_VkNativeBufferOHOS* copy_src, [[maybe_unused]] PNextCopyState* copy_state) {
+ sType = copy_src->sType;
+ handle = nullptr;
+ pNext = SafePnextCopy(copy_src->pNext);
+
+ if (copy_src->handle) {
+ handle = new BufferHandle(*copy_src->handle);
+ }
+}
+
+safe_VkSwapchainImageCreateInfoOHOS::safe_VkSwapchainImageCreateInfoOHOS(const VkSwapchainImageCreateInfoOHOS* in_struct,
+ [[maybe_unused]] PNextCopyState* copy_state,
+ bool copy_pnext)
+ : sType(in_struct->sType), usage(in_struct->usage) {
+ if (copy_pnext) {
+ pNext = SafePnextCopy(in_struct->pNext, copy_state);
+ }
+}
+
+safe_VkSwapchainImageCreateInfoOHOS::safe_VkSwapchainImageCreateInfoOHOS()
+ : sType(VK_STRUCTURE_TYPE_SWAPCHAIN_IMAGE_CREATE_INFO_OHOS), pNext(nullptr), usage() {}
+
+safe_VkSwapchainImageCreateInfoOHOS::safe_VkSwapchainImageCreateInfoOHOS(const safe_VkSwapchainImageCreateInfoOHOS& copy_src) {
+ sType = copy_src.sType;
+ usage = copy_src.usage;
+ pNext = SafePnextCopy(copy_src.pNext);
+}
+
+safe_VkSwapchainImageCreateInfoOHOS& safe_VkSwapchainImageCreateInfoOHOS::operator=(
+ const safe_VkSwapchainImageCreateInfoOHOS& copy_src) {
+ if (©_src == this) return *this;
+
+ FreePnextChain(pNext);
+
+ sType = copy_src.sType;
+ usage = copy_src.usage;
+ pNext = SafePnextCopy(copy_src.pNext);
+
+ return *this;
+}
+
+safe_VkSwapchainImageCreateInfoOHOS::~safe_VkSwapchainImageCreateInfoOHOS() { FreePnextChain(pNext); }
+
+void safe_VkSwapchainImageCreateInfoOHOS::initialize(const VkSwapchainImageCreateInfoOHOS* in_struct,
+ [[maybe_unused]] PNextCopyState* copy_state) {
+ FreePnextChain(pNext);
+ sType = in_struct->sType;
+ usage = in_struct->usage;
+ pNext = SafePnextCopy(in_struct->pNext, copy_state);
+}
+
+void safe_VkSwapchainImageCreateInfoOHOS::initialize(const safe_VkSwapchainImageCreateInfoOHOS* copy_src,
+ [[maybe_unused]] PNextCopyState* copy_state) {
+ sType = copy_src->sType;
+ usage = copy_src->usage;
+ pNext = SafePnextCopy(copy_src->pNext);
+}
+
+safe_VkPhysicalDevicePresentationPropertiesOHOS::safe_VkPhysicalDevicePresentationPropertiesOHOS(
+ const VkPhysicalDevicePresentationPropertiesOHOS* in_struct, [[maybe_unused]] PNextCopyState* copy_state, bool copy_pnext)
+ : sType(in_struct->sType), sharedImage(in_struct->sharedImage) {
+ if (copy_pnext) {
+ pNext = SafePnextCopy(in_struct->pNext, copy_state);
+ }
+}
+
+safe_VkPhysicalDevicePresentationPropertiesOHOS::safe_VkPhysicalDevicePresentationPropertiesOHOS()
+ : sType(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENTATION_PROPERTIES_OHOS), pNext(nullptr), sharedImage() {}
+
+safe_VkPhysicalDevicePresentationPropertiesOHOS::safe_VkPhysicalDevicePresentationPropertiesOHOS(
+ const safe_VkPhysicalDevicePresentationPropertiesOHOS& copy_src) {
+ sType = copy_src.sType;
+ sharedImage = copy_src.sharedImage;
+ pNext = SafePnextCopy(copy_src.pNext);
+}
+
+safe_VkPhysicalDevicePresentationPropertiesOHOS& safe_VkPhysicalDevicePresentationPropertiesOHOS::operator=(
+ const safe_VkPhysicalDevicePresentationPropertiesOHOS& copy_src) {
+ if (©_src == this) return *this;
+
+ FreePnextChain(pNext);
+
+ sType = copy_src.sType;
+ sharedImage = copy_src.sharedImage;
+ pNext = SafePnextCopy(copy_src.pNext);
+
+ return *this;
+}
+
+safe_VkPhysicalDevicePresentationPropertiesOHOS::~safe_VkPhysicalDevicePresentationPropertiesOHOS() { FreePnextChain(pNext); }
+
+void safe_VkPhysicalDevicePresentationPropertiesOHOS::initialize(const VkPhysicalDevicePresentationPropertiesOHOS* in_struct,
+ [[maybe_unused]] PNextCopyState* copy_state) {
+ FreePnextChain(pNext);
+ sType = in_struct->sType;
+ sharedImage = in_struct->sharedImage;
+ pNext = SafePnextCopy(in_struct->pNext, copy_state);
+}
+
+void safe_VkPhysicalDevicePresentationPropertiesOHOS::initialize(const safe_VkPhysicalDevicePresentationPropertiesOHOS* copy_src,
+ [[maybe_unused]] PNextCopyState* copy_state) {
+ sType = copy_src->sType;
+ sharedImage = copy_src->sharedImage;
+ pNext = SafePnextCopy(copy_src->pNext);
+}
+
+safe_VkNativeBufferUsageOHOS::safe_VkNativeBufferUsageOHOS(const VkNativeBufferUsageOHOS* in_struct,
+ [[maybe_unused]] PNextCopyState* copy_state, bool copy_pnext)
+ : sType(in_struct->sType), OHOSNativeBufferUsage(in_struct->OHOSNativeBufferUsage) {
+ if (copy_pnext) {
+ pNext = SafePnextCopy(in_struct->pNext, copy_state);
+ }
+}
+
+safe_VkNativeBufferUsageOHOS::safe_VkNativeBufferUsageOHOS()
+ : sType(VK_STRUCTURE_TYPE_NATIVE_BUFFER_USAGE_OHOS), pNext(nullptr), OHOSNativeBufferUsage() {}
+
+safe_VkNativeBufferUsageOHOS::safe_VkNativeBufferUsageOHOS(const safe_VkNativeBufferUsageOHOS& copy_src) {
+ sType = copy_src.sType;
+ OHOSNativeBufferUsage = copy_src.OHOSNativeBufferUsage;
+ pNext = SafePnextCopy(copy_src.pNext);
+}
+
+safe_VkNativeBufferUsageOHOS& safe_VkNativeBufferUsageOHOS::operator=(const safe_VkNativeBufferUsageOHOS& copy_src) {
+ if (©_src == this) return *this;
+
+ FreePnextChain(pNext);
+
+ sType = copy_src.sType;
+ OHOSNativeBufferUsage = copy_src.OHOSNativeBufferUsage;
+ pNext = SafePnextCopy(copy_src.pNext);
+
+ return *this;
+}
+
+safe_VkNativeBufferUsageOHOS::~safe_VkNativeBufferUsageOHOS() { FreePnextChain(pNext); }
+
+void safe_VkNativeBufferUsageOHOS::initialize(const VkNativeBufferUsageOHOS* in_struct,
+ [[maybe_unused]] PNextCopyState* copy_state) {
+ FreePnextChain(pNext);
+ sType = in_struct->sType;
+ OHOSNativeBufferUsage = in_struct->OHOSNativeBufferUsage;
+ pNext = SafePnextCopy(in_struct->pNext, copy_state);
+}
+
+void safe_VkNativeBufferUsageOHOS::initialize(const safe_VkNativeBufferUsageOHOS* copy_src,
+ [[maybe_unused]] PNextCopyState* copy_state) {
+ sType = copy_src->sType;
+ OHOSNativeBufferUsage = copy_src->OHOSNativeBufferUsage;
+ pNext = SafePnextCopy(copy_src->pNext);
+}
+
+safe_VkNativeBufferPropertiesOHOS::safe_VkNativeBufferPropertiesOHOS(const VkNativeBufferPropertiesOHOS* in_struct,
+ [[maybe_unused]] PNextCopyState* copy_state, bool copy_pnext)
+ : sType(in_struct->sType), allocationSize(in_struct->allocationSize), memoryTypeBits(in_struct->memoryTypeBits) {
+ if (copy_pnext) {
+ pNext = SafePnextCopy(in_struct->pNext, copy_state);
+ }
+}
+
+safe_VkNativeBufferPropertiesOHOS::safe_VkNativeBufferPropertiesOHOS()
+ : sType(VK_STRUCTURE_TYPE_NATIVE_BUFFER_PROPERTIES_OHOS), pNext(nullptr), allocationSize(), memoryTypeBits() {}
+
+safe_VkNativeBufferPropertiesOHOS::safe_VkNativeBufferPropertiesOHOS(const safe_VkNativeBufferPropertiesOHOS& copy_src) {
+ sType = copy_src.sType;
+ allocationSize = copy_src.allocationSize;
+ memoryTypeBits = copy_src.memoryTypeBits;
+ pNext = SafePnextCopy(copy_src.pNext);
+}
+
+safe_VkNativeBufferPropertiesOHOS& safe_VkNativeBufferPropertiesOHOS::operator=(const safe_VkNativeBufferPropertiesOHOS& copy_src) {
+ if (©_src == this) return *this;
+
+ FreePnextChain(pNext);
+
+ sType = copy_src.sType;
+ allocationSize = copy_src.allocationSize;
+ memoryTypeBits = copy_src.memoryTypeBits;
+ pNext = SafePnextCopy(copy_src.pNext);
+
+ return *this;
+}
+
+safe_VkNativeBufferPropertiesOHOS::~safe_VkNativeBufferPropertiesOHOS() { FreePnextChain(pNext); }
+
+void safe_VkNativeBufferPropertiesOHOS::initialize(const VkNativeBufferPropertiesOHOS* in_struct,
+ [[maybe_unused]] PNextCopyState* copy_state) {
+ FreePnextChain(pNext);
+ sType = in_struct->sType;
+ allocationSize = in_struct->allocationSize;
+ memoryTypeBits = in_struct->memoryTypeBits;
+ pNext = SafePnextCopy(in_struct->pNext, copy_state);
+}
+
+void safe_VkNativeBufferPropertiesOHOS::initialize(const safe_VkNativeBufferPropertiesOHOS* copy_src,
+ [[maybe_unused]] PNextCopyState* copy_state) {
+ sType = copy_src->sType;
+ allocationSize = copy_src->allocationSize;
+ memoryTypeBits = copy_src->memoryTypeBits;
+ pNext = SafePnextCopy(copy_src->pNext);
+}
+
+safe_VkNativeBufferFormatPropertiesOHOS::safe_VkNativeBufferFormatPropertiesOHOS(
+ const VkNativeBufferFormatPropertiesOHOS* in_struct, [[maybe_unused]] PNextCopyState* copy_state, bool copy_pnext)
+ : sType(in_struct->sType),
+ format(in_struct->format),
+ externalFormat(in_struct->externalFormat),
+ formatFeatures(in_struct->formatFeatures),
+ samplerYcbcrConversionComponents(in_struct->samplerYcbcrConversionComponents),
+ suggestedYcbcrModel(in_struct->suggestedYcbcrModel),
+ suggestedYcbcrRange(in_struct->suggestedYcbcrRange),
+ suggestedXChromaOffset(in_struct->suggestedXChromaOffset),
+ suggestedYChromaOffset(in_struct->suggestedYChromaOffset) {
+ if (copy_pnext) {
+ pNext = SafePnextCopy(in_struct->pNext, copy_state);
+ }
+}
+
+safe_VkNativeBufferFormatPropertiesOHOS::safe_VkNativeBufferFormatPropertiesOHOS()
+ : sType(VK_STRUCTURE_TYPE_NATIVE_BUFFER_FORMAT_PROPERTIES_OHOS),
+ pNext(nullptr),
+ format(),
+ externalFormat(),
+ formatFeatures(),
+ samplerYcbcrConversionComponents(),
+ suggestedYcbcrModel(),
+ suggestedYcbcrRange(),
+ suggestedXChromaOffset(),
+ suggestedYChromaOffset() {}
+
+safe_VkNativeBufferFormatPropertiesOHOS::safe_VkNativeBufferFormatPropertiesOHOS(
+ const safe_VkNativeBufferFormatPropertiesOHOS& copy_src) {
+ sType = copy_src.sType;
+ format = copy_src.format;
+ externalFormat = copy_src.externalFormat;
+ formatFeatures = copy_src.formatFeatures;
+ samplerYcbcrConversionComponents = copy_src.samplerYcbcrConversionComponents;
+ suggestedYcbcrModel = copy_src.suggestedYcbcrModel;
+ suggestedYcbcrRange = copy_src.suggestedYcbcrRange;
+ suggestedXChromaOffset = copy_src.suggestedXChromaOffset;
+ suggestedYChromaOffset = copy_src.suggestedYChromaOffset;
+ pNext = SafePnextCopy(copy_src.pNext);
+}
+
+safe_VkNativeBufferFormatPropertiesOHOS& safe_VkNativeBufferFormatPropertiesOHOS::operator=(
+ const safe_VkNativeBufferFormatPropertiesOHOS& copy_src) {
+ if (©_src == this) return *this;
+
+ FreePnextChain(pNext);
+
+ sType = copy_src.sType;
+ format = copy_src.format;
+ externalFormat = copy_src.externalFormat;
+ formatFeatures = copy_src.formatFeatures;
+ samplerYcbcrConversionComponents = copy_src.samplerYcbcrConversionComponents;
+ suggestedYcbcrModel = copy_src.suggestedYcbcrModel;
+ suggestedYcbcrRange = copy_src.suggestedYcbcrRange;
+ suggestedXChromaOffset = copy_src.suggestedXChromaOffset;
+ suggestedYChromaOffset = copy_src.suggestedYChromaOffset;
+ pNext = SafePnextCopy(copy_src.pNext);
+
+ return *this;
+}
+
+safe_VkNativeBufferFormatPropertiesOHOS::~safe_VkNativeBufferFormatPropertiesOHOS() { FreePnextChain(pNext); }
+
+void safe_VkNativeBufferFormatPropertiesOHOS::initialize(const VkNativeBufferFormatPropertiesOHOS* in_struct,
+ [[maybe_unused]] PNextCopyState* copy_state) {
+ FreePnextChain(pNext);
+ sType = in_struct->sType;
+ format = in_struct->format;
+ externalFormat = in_struct->externalFormat;
+ formatFeatures = in_struct->formatFeatures;
+ samplerYcbcrConversionComponents = in_struct->samplerYcbcrConversionComponents;
+ suggestedYcbcrModel = in_struct->suggestedYcbcrModel;
+ suggestedYcbcrRange = in_struct->suggestedYcbcrRange;
+ suggestedXChromaOffset = in_struct->suggestedXChromaOffset;
+ suggestedYChromaOffset = in_struct->suggestedYChromaOffset;
+ pNext = SafePnextCopy(in_struct->pNext, copy_state);
+}
+
+void safe_VkNativeBufferFormatPropertiesOHOS::initialize(const safe_VkNativeBufferFormatPropertiesOHOS* copy_src,
+ [[maybe_unused]] PNextCopyState* copy_state) {
+ sType = copy_src->sType;
+ format = copy_src->format;
+ externalFormat = copy_src->externalFormat;
+ formatFeatures = copy_src->formatFeatures;
+ samplerYcbcrConversionComponents = copy_src->samplerYcbcrConversionComponents;
+ suggestedYcbcrModel = copy_src->suggestedYcbcrModel;
+ suggestedYcbcrRange = copy_src->suggestedYcbcrRange;
+ suggestedXChromaOffset = copy_src->suggestedXChromaOffset;
+ suggestedYChromaOffset = copy_src->suggestedYChromaOffset;
+ pNext = SafePnextCopy(copy_src->pNext);
+}
+
+safe_VkImportNativeBufferInfoOHOS::safe_VkImportNativeBufferInfoOHOS(const VkImportNativeBufferInfoOHOS* in_struct,
+ [[maybe_unused]] PNextCopyState* copy_state, bool copy_pnext)
+ : sType(in_struct->sType), buffer(nullptr) {
+ if (copy_pnext) {
+ pNext = SafePnextCopy(in_struct->pNext, copy_state);
+ }
+ if (in_struct->buffer) {
+ buffer = new OH_NativeBuffer(*in_struct->buffer);
+ }
+}
+
+safe_VkImportNativeBufferInfoOHOS::safe_VkImportNativeBufferInfoOHOS()
+ : sType(VK_STRUCTURE_TYPE_IMPORT_NATIVE_BUFFER_INFO_OHOS), pNext(nullptr), buffer(nullptr) {}
+
+safe_VkImportNativeBufferInfoOHOS::safe_VkImportNativeBufferInfoOHOS(const safe_VkImportNativeBufferInfoOHOS& copy_src) {
+ sType = copy_src.sType;
+ buffer = nullptr;
+ pNext = SafePnextCopy(copy_src.pNext);
+
+ if (copy_src.buffer) {
+ buffer = new OH_NativeBuffer(*copy_src.buffer);
+ }
+}
+
+safe_VkImportNativeBufferInfoOHOS& safe_VkImportNativeBufferInfoOHOS::operator=(const safe_VkImportNativeBufferInfoOHOS& copy_src) {
+ if (©_src == this) return *this;
+
+ if (buffer) delete buffer;
+ FreePnextChain(pNext);
+
+ sType = copy_src.sType;
+ buffer = nullptr;
+ pNext = SafePnextCopy(copy_src.pNext);
+
+ if (copy_src.buffer) {
+ buffer = new OH_NativeBuffer(*copy_src.buffer);
+ }
+
+ return *this;
+}
+
+safe_VkImportNativeBufferInfoOHOS::~safe_VkImportNativeBufferInfoOHOS() {
+ if (buffer) delete buffer;
+ FreePnextChain(pNext);
+}
+
+void safe_VkImportNativeBufferInfoOHOS::initialize(const VkImportNativeBufferInfoOHOS* in_struct,
+ [[maybe_unused]] PNextCopyState* copy_state) {
+ if (buffer) delete buffer;
+ FreePnextChain(pNext);
+ sType = in_struct->sType;
+ buffer = nullptr;
+ pNext = SafePnextCopy(in_struct->pNext, copy_state);
+
+ if (in_struct->buffer) {
+ buffer = new OH_NativeBuffer(*in_struct->buffer);
+ }
+}
+
+void safe_VkImportNativeBufferInfoOHOS::initialize(const safe_VkImportNativeBufferInfoOHOS* copy_src,
+ [[maybe_unused]] PNextCopyState* copy_state) {
+ sType = copy_src->sType;
+ buffer = nullptr;
+ pNext = SafePnextCopy(copy_src->pNext);
+
+ if (copy_src->buffer) {
+ buffer = new OH_NativeBuffer(*copy_src->buffer);
+ }
+}
+
+safe_VkMemoryGetNativeBufferInfoOHOS::safe_VkMemoryGetNativeBufferInfoOHOS(const VkMemoryGetNativeBufferInfoOHOS* in_struct,
+ [[maybe_unused]] PNextCopyState* copy_state,
+ bool copy_pnext)
+ : sType(in_struct->sType), memory(in_struct->memory) {
+ if (copy_pnext) {
+ pNext = SafePnextCopy(in_struct->pNext, copy_state);
+ }
+}
+
+safe_VkMemoryGetNativeBufferInfoOHOS::safe_VkMemoryGetNativeBufferInfoOHOS()
+ : sType(VK_STRUCTURE_TYPE_MEMORY_GET_NATIVE_BUFFER_INFO_OHOS), pNext(nullptr), memory() {}
+
+safe_VkMemoryGetNativeBufferInfoOHOS::safe_VkMemoryGetNativeBufferInfoOHOS(const safe_VkMemoryGetNativeBufferInfoOHOS& copy_src) {
+ sType = copy_src.sType;
+ memory = copy_src.memory;
+ pNext = SafePnextCopy(copy_src.pNext);
+}
+
+safe_VkMemoryGetNativeBufferInfoOHOS& safe_VkMemoryGetNativeBufferInfoOHOS::operator=(
+ const safe_VkMemoryGetNativeBufferInfoOHOS& copy_src) {
+ if (©_src == this) return *this;
+
+ FreePnextChain(pNext);
+
+ sType = copy_src.sType;
+ memory = copy_src.memory;
+ pNext = SafePnextCopy(copy_src.pNext);
+
+ return *this;
+}
+
+safe_VkMemoryGetNativeBufferInfoOHOS::~safe_VkMemoryGetNativeBufferInfoOHOS() { FreePnextChain(pNext); }
+
+void safe_VkMemoryGetNativeBufferInfoOHOS::initialize(const VkMemoryGetNativeBufferInfoOHOS* in_struct,
+ [[maybe_unused]] PNextCopyState* copy_state) {
+ FreePnextChain(pNext);
+ sType = in_struct->sType;
+ memory = in_struct->memory;
+ pNext = SafePnextCopy(in_struct->pNext, copy_state);
+}
+
+void safe_VkMemoryGetNativeBufferInfoOHOS::initialize(const safe_VkMemoryGetNativeBufferInfoOHOS* copy_src,
+ [[maybe_unused]] PNextCopyState* copy_state) {
+ sType = copy_src->sType;
+ memory = copy_src->memory;
+ pNext = SafePnextCopy(copy_src->pNext);
+}
+
+safe_VkExternalFormatOHOS::safe_VkExternalFormatOHOS(const VkExternalFormatOHOS* in_struct,
+ [[maybe_unused]] PNextCopyState* copy_state, bool copy_pnext)
+ : sType(in_struct->sType), externalFormat(in_struct->externalFormat) {
+ if (copy_pnext) {
+ pNext = SafePnextCopy(in_struct->pNext, copy_state);
+ }
+}
+
+safe_VkExternalFormatOHOS::safe_VkExternalFormatOHOS()
+ : sType(VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_OHOS), pNext(nullptr), externalFormat() {}
+
+safe_VkExternalFormatOHOS::safe_VkExternalFormatOHOS(const safe_VkExternalFormatOHOS& copy_src) {
+ sType = copy_src.sType;
+ externalFormat = copy_src.externalFormat;
+ pNext = SafePnextCopy(copy_src.pNext);
+}
+
+safe_VkExternalFormatOHOS& safe_VkExternalFormatOHOS::operator=(const safe_VkExternalFormatOHOS& copy_src) {
+ if (©_src == this) return *this;
+
+ FreePnextChain(pNext);
+
+ sType = copy_src.sType;
+ externalFormat = copy_src.externalFormat;
+ pNext = SafePnextCopy(copy_src.pNext);
+
+ return *this;
+}
+
+safe_VkExternalFormatOHOS::~safe_VkExternalFormatOHOS() { FreePnextChain(pNext); }
+
+void safe_VkExternalFormatOHOS::initialize(const VkExternalFormatOHOS* in_struct, [[maybe_unused]] PNextCopyState* copy_state) {
+ FreePnextChain(pNext);
+ sType = in_struct->sType;
+ externalFormat = in_struct->externalFormat;
+ pNext = SafePnextCopy(in_struct->pNext, copy_state);
+}
+
+void safe_VkExternalFormatOHOS::initialize(const safe_VkExternalFormatOHOS* copy_src, [[maybe_unused]] PNextCopyState* copy_state) {
+ sType = copy_src->sType;
+ externalFormat = copy_src->externalFormat;
+ pNext = SafePnextCopy(copy_src->pNext);
+}
+#endif // VK_USE_PLATFORM_OHOS
// NOLINTEND
diff --git a/layers/vulkan/generated/vk_validation_error_messages.h b/layers/vulkan/generated/vk_validation_error_messages.h
index a9067942ee9ab234283c45e594f61c9d0610136d..2589652882f86632461e2c4232817c4e0770758f 100644
--- a/layers/vulkan/generated/vk_validation_error_messages.h
+++ b/layers/vulkan/generated/vk_validation_error_messages.h
@@ -6487,6 +6487,10 @@ static const vuid_spec_text_pair vuid_spec_text[] = {
{"VUID-VkSurfaceCapabilities2KHR-sType-unique", "The sType value of each struct in the pNext chain must be unique", "1.3-extensions"},
{"VUID-VkSurfaceCapabilitiesFullScreenExclusiveEXT-sType-sType", "sType must be VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT", "1.3-extensions"},
{"VUID-VkSurfaceCapabilitiesPresentBarrierNV-sType-sType", "sType must be VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_BARRIER_NV", "1.3-extensions"},
+ {"VUID-VkSurfaceCreateInfoOHOS-flags-zerobitmask", "flags must be 0", "1.3-extensions"},
+ {"VUID-VkSurfaceCreateInfoOHOS-pNext-pNext", "pNext must be NULL", "1.3-extensions"},
+ {"VUID-VkSurfaceCreateInfoOHOS-sType-sType", "sType must be VK_STRUCTURE_TYPE_SURFACE_CREATE_INFO_OHOS", "1.3-extensions"},
+ {"VUID-VkSurfaceCreateInfoOHOS-window-01248", "window must point to a valid OHOS NativeWindow", "1.3-extensions"},
{"VUID-VkSurfaceFormat2KHR-pNext-06750", "If the imageCompressionControlSwapchain feature is not enabled, the pNext chain must not include an VkImageCompressionPropertiesEXT structure", "1.3-extensions"},
{"VUID-VkSurfaceFormat2KHR-pNext-pNext", "pNext must be NULL or a pointer to a valid instance of VkImageCompressionPropertiesEXT", "1.3-extensions"},
{"VUID-VkSurfaceFormat2KHR-sType-sType", "sType must be VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR", "1.3-extensions"},
@@ -17767,6 +17771,10 @@ static const vuid_spec_text_pair vuid_spec_text[] = {
{"VUID-vkCreateStreamDescriptorSurfaceGGP-pAllocator-parameter", "If pAllocator is not NULL, pAllocator must be a valid pointer to a valid VkAllocationCallbacks structure", "1.3-extensions"},
{"VUID-vkCreateStreamDescriptorSurfaceGGP-pCreateInfo-parameter", "pCreateInfo must be a valid pointer to a valid VkStreamDescriptorSurfaceCreateInfoGGP structure", "1.3-extensions"},
{"VUID-vkCreateStreamDescriptorSurfaceGGP-pSurface-parameter", "pSurface must be a valid pointer to a VkSurfaceKHR handle", "1.3-extensions"},
+ {"VUID-vkCreateSurfaceOHOS-instance-parameter", "instance must be a valid VkInstance handle", "1.3-extensions"},
+ {"VUID-vkCreateSurfaceOHOS-pAllocator-parameter", "If pAllocator is not NULL, pAllocator must be a valid pointer to a valid VkAllocationCallbacks structure", "1.3-extensions"},
+ {"VUID-vkCreateSurfaceOHOS-pCreateInfo-parameter", "pCreateInfo must be a valid pointer to a valid VkSurfaceCreateInfoOHOS structure", "1.3-extensions"},
+ {"VUID-vkCreateSurfaceOHOS-pSurface-parameter", "pSurface must be a valid pointer to a VkSurfaceKHR handle", "1.3-extensions"},
{"VUID-vkCreateSwapchainKHR-device-parameter", "device must be a valid VkDevice handle", "1.3-extensions"},
{"VUID-vkCreateSwapchainKHR-pAllocator-parameter", "If pAllocator is not NULL, pAllocator must be a valid pointer to a valid VkAllocationCallbacks structure", "1.3-extensions"},
{"VUID-vkCreateSwapchainKHR-pCreateInfo-parameter", "pCreateInfo must be a valid pointer to a valid VkSwapchainCreateInfoKHR structure", "1.3-extensions"},
diff --git a/scripts/gn/layers-ohos.gni b/scripts/gn/layers-ohos.gni
new file mode 100644
index 0000000000000000000000000000000000000000..983a057973259b1f4c1b7565742a3a92327ef495
--- /dev/null
+++ b/scripts/gn/layers-ohos.gni
@@ -0,0 +1,25 @@
+import("//build/ohos.gni")
+
+# import("//build_overrides/vulkan_validation_layers.gni")
+# Paths to validation layer dependencies
+vulkan_headers_dir = "//third_party/vulkan-headers"
+vulkan_utility_libraries_dir = "//third_party/vulkan-utility-libraries"
+vvl_spirv_tools_dir = "//third_party//spirv-tools"
+vvl_spirv_headers_dir = "//third_party/spirv-headers"
+vvl_glslang_dir = "//third_party/glslang"
+# robin_hood_headers_dir = "external/robin-hood-hashing/src/include"
+
+# Subdirectories for generated files
+vulkan_data_subdir = ""
+vulkan_gen_subdir = ""
+
+# Build options
+ozone_platform_x11 = false
+
+is_ohos = current_os == "ohos"
+is_android = current_os == "android"
+is_ios = current_os == "ios"
+is_mac = current_os == "tvos" || current_os == "mac"
+is_win = current_os == "win" || current_os == "mingw"
+is_linux = current_os == "linux"
+is_fuchsia = current_os == "fuchsia"
diff --git a/scripts/gn/secondary/build_overrides/spirv_tools.gni b/scripts/gn/secondary/build_overrides/spirv_tools.gni
index 6df1a96f3e89c8822296adcc89ac9537994aa5fe..f2019dde388375cb6ef7bc9b2dfc44fbe202f56d 100644
--- a/scripts/gn/secondary/build_overrides/spirv_tools.gni
+++ b/scripts/gn/secondary/build_overrides/spirv_tools.gni
@@ -16,5 +16,5 @@
spirv_tools_standalone = false
# Paths to SPIRV-Tools dependencies
-spirv_tools_googletest_dir = "//external/googletest"
-spirv_tools_spirv_headers_dir = "//external/SPIRV-Headers"
+spirv_tools_googletest_dir = "//third_party/vulkan-validationlayers/external/googletest"
+spirv_tools_spirv_headers_dir = "//third_party/vulkan-validationlayers/external/SPIRV-Headers"
diff --git a/scripts/gn/secondary/build_overrides/vulkan_headers.gni b/scripts/gn/secondary/build_overrides/vulkan_headers.gni
index 5f24b39eed64cb385dde3e259bfba8d20a496fc9..72b0859c8fbdfeb1e0b2eb904557bf99bd3d88bb 100644
--- a/scripts/gn/secondary/build_overrides/vulkan_headers.gni
+++ b/scripts/gn/secondary/build_overrides/vulkan_headers.gni
@@ -12,4 +12,4 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-vulkan_use_x11 = true
+vulkan_use_x11 = false
diff --git a/scripts/gn/secondary/build_overrides/vulkan_utility_libraries.gni b/scripts/gn/secondary/build_overrides/vulkan_utility_libraries.gni
index 6cf79d067caf3b8a7eb0eef6351ee486a1fc378e..a4a78db59c844a84d1999b9b4d6278f2153d2589 100644
--- a/scripts/gn/secondary/build_overrides/vulkan_utility_libraries.gni
+++ b/scripts/gn/secondary/build_overrides/vulkan_utility_libraries.gni
@@ -2,4 +2,4 @@
#
# SPDX-License-Identifier: Apache-2.0
-vulkan_headers_dir = "//external/Vulkan-Headers"
+vulkan_headers_dir = "//third_party/vulkan-headers"
diff --git a/scripts/gn/secondary/build_overrides/vulkan_validation_layers.gni b/scripts/gn/secondary/build_overrides/vulkan_validation_layers.gni
index 3f144fc5290a4d444cd1bd1788454f754e8d02ce..812ba11b1b1429d31f4e73beb9e058229c3a9948 100644
--- a/scripts/gn/secondary/build_overrides/vulkan_validation_layers.gni
+++ b/scripts/gn/secondary/build_overrides/vulkan_validation_layers.gni
@@ -13,12 +13,12 @@
# limitations under the License.
# Paths to validation layer dependencies
-vulkan_headers_dir = "//external/Vulkan-Headers"
-vulkan_utility_libraries_dir = "//external/Vulkan-Utility-Libraries"
-vvl_spirv_tools_dir = "//external/SPIRV-Tools"
-vvl_spirv_headers_dir = "//external/SPIRV-Headers"
-vvl_glslang_dir = "//external/glslang/"
-robin_hood_headers_dir = "//external/robin-hood-hashing/src/include"
+vulkan_headers_dir = "//third_party/vulkan-headers"
+vulkan_utility_libraries_dir = "//third_party/vulkan-utility-libraries"
+vvl_spirv_tools_dir = "//third_party/spirv-tools"
+vvl_spirv_headers_dir = "//third_party/spirv-headers"
+vvl_glslang_dir = "//third_party/glslang/"
+# robin_hood_headers_dir = "//external/robin-hood-hashing/src/include"
# Subdirectories for generated files
vulkan_data_subdir = ""
diff --git a/tests/openharmony/systemtest/BUILD.gn b/tests/openharmony/systemtest/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..6b19cc70caa515a74431590f8c11feab89ac88cc
--- /dev/null
+++ b/tests/openharmony/systemtest/BUILD.gn
@@ -0,0 +1,54 @@
+# Copyright (c) 2023 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.
+
+import("//build/test.gni")
+
+module_out_path = "third_party/vulkan-validationlayers"
+
+group("systemtest") {
+ testonly = true
+
+ deps = [ ":vulkan_validation_layers_system_test" ]
+}
+
+ohos_systemtest("vulkan_validation_layers_system_test") {
+ defines = [ "VK_USE_PLATFORM_OHOS" ]
+ module_out_path = module_out_path
+ sources = [ "vulkan_validation_layers_system_test.cpp" ]
+ deps = [ ":vulkan_validation_layers_test_common" ]
+}
+
+ohos_static_library("vulkan_validation_layers_test_common") {
+ visibility = [ ":*" ]
+ testonly = true
+
+ public_deps = [
+ "//third_party/googletest:gtest_main",
+ "//third_party/vulkan-headers:vulkan_headers",
+ "//third_party/zlib:libz",
+ ]
+ external_deps = [
+ "c_utils:utils",
+ ]
+
+ cflags = [
+ "-Wall",
+ "-Werror",
+ "-g3",
+ "-Dprivate=public",
+ "-Dprotected=public",
+ ]
+
+ subsystem_name = "graphic"
+ part_name = "graphic_2d"
+}
diff --git a/tests/openharmony/systemtest/vulkan_validation_layers_system_test.cpp b/tests/openharmony/systemtest/vulkan_validation_layers_system_test.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..042c5e3897b316d1e3d84867c388dc91a4f807f9
--- /dev/null
+++ b/tests/openharmony/systemtest/vulkan_validation_layers_system_test.cpp
@@ -0,0 +1,141 @@
+/*
+ * Copyright (c) 2023 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.
+ */
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include "refbase.h"
+
+using namespace testing;
+using namespace testing::ext;
+using namespace OHOS::Rosen;
+
+namespace vulkan::loader {
+class VulkanValidationLayersSystemTest : public testing::Test {
+public:
+ static void SetUpTestCase() {}
+ static void TearDownTestCase()
+ {
+ if (isSupportedVulkan_) {
+ fpDestroyInstance(instance_, nullptr);
+ }
+ if (libVulkan_ != nullptr) {
+ dlclose(libVulkan_);
+ libVulkan_ = nullptr;
+ }
+ }
+ static inline void DLOpenLibVulkan();
+
+ static inline PFN_vkCreateInstance vkCreateInstance;
+ static inline PFN_vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties;
+
+ static inline PFN_vkDestroyInstance fpDestroyInstance;
+
+ static inline void *libVulkan_ = nullptr;
+ static inline VkInstance instance_ = nullptr;
+ static inline bool isSupportedVulkan_ = false;
+};
+
+void VulkanValidationLayersSystemTest::DLOpenLibVulkan()
+{
+#if (defined(__aarch64__) || defined(__x86_64__))
+ const char *path = "/system/lib64/platformsdk/libvulkan.so";
+#else
+ const char *path = "/system/lib/platformsdk/libvulkan.so";
+#endif
+ libVulkan_ = dlopen(path, RTLD_NOW | RTLD_LOCAL);
+ if (libVulkan_ == nullptr) {
+ std::cout << "dlerror: " << dlerror() << std::endl;
+ isSupportedVulkan_ = false;
+ return;
+ }
+ isSupportedVulkan_ = true;
+}
+
+/**
+ * @tc.name: Enable Vulkan Validation Layers
+ * @tc.desc: Enable Vulkan Validation Layers
+ * @tc.type: FUNC
+ * @tc.require: issue
+ */
+HWTEST_F(VulkanValidationLayersSystemTest, EnableVVL, TestSize.Level1)
+{
+ DLOpenLibVulkan();
+ if (isSupportedVulkan_) {
+ EXPECT_NE(libVulkan_, nullptr);
+
+ // Load base functions
+ vkEnumerateInstanceLayerProperties = reinterpret_cast(
+ dlsym(libVulkan_, "vkEnumerateInstanceLayerProperties"));
+ EXPECT_NE(vkEnumerateInstanceLayerProperties, nullptr);
+ vkCreateInstance = reinterpret_cast(dlsym(libVulkan_, "vkCreateInstance"));
+ EXPECT_NE(vkCreateInstance, nullptr);
+ VkApplicationInfo appInfo = {};
+ appInfo.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
+ appInfo.pApplicationName = "pApplicationName";
+ appInfo.pEngineName = "pEngineName";
+ appInfo.apiVersion = VK_API_VERSION_1_0;
+
+ std::vector instanceExtensions = {
+ VK_KHR_SURFACE_EXTENSION_NAME,
+ VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME
+ };
+
+ VkInstanceCreateInfo instanceCreateInfo = {};
+ instanceCreateInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
+ instanceCreateInfo.pNext = NULL;
+ instanceCreateInfo.pApplicationInfo = &appInfo;
+
+ instanceCreateInfo.enabledExtensionCount = static_cast(instanceExtensions.size());
+ instanceCreateInfo.ppEnabledExtensionNames = instanceExtensions.data();
+
+ const char* validationLayerName = "VK_LAYER_KHRONOS_validation";
+ // Check if this layer is available at instance level
+ uint32_t instanceLayerCount;
+ vkEnumerateInstanceLayerProperties(&instanceLayerCount, nullptr);
+ std::vector instanceLayerProperties(instanceLayerCount);
+ vkEnumerateInstanceLayerProperties(&instanceLayerCount, instanceLayerProperties.data());
+ bool validationLayerPresent = false;
+ for (VkLayerProperties layer : instanceLayerProperties) {
+ if (strcmp(layer.layerName, validationLayerName) == 0) {
+ validationLayerPresent = true;
+ break;
+ }
+ }
+ if (validationLayerPresent) {
+ instanceCreateInfo.ppEnabledLayerNames = &validationLayerName;
+ instanceCreateInfo.enabledLayerCount = 1;
+ } else {
+ std::cerr << "Validation layer VK_LAYER_KHRONOS_validation not present, validation is disabled";
+ }
+
+ EXPECT_NE(validationLayerPresent, false);
+
+ VkResult result = vkCreateInstance(&instanceCreateInfo, nullptr, &instance_);
+ if (result == VK_ERROR_INCOMPATIBLE_DRIVER) {
+ isSupportedVulkan_ = false;
+ } else {
+ isSupportedVulkan_ = true;
+ }
+ EXPECT_NE(result, VK_SUCCESS);
+ std::cout << "TrytoCreateVkInstance result: " << result << std::endl;
+ }
+}