From 5025f29378bfbaf0bf5de102370a8a096f1dd0c4 Mon Sep 17 00:00:00 2001 From: Zihao Mu Date: Fri, 19 May 2023 01:02:27 +0800 Subject: [PATCH] speed up vulkan dnn, and support ios and apple m1 chip. (#23349) --- 3rdparty/include/vulkan/vk_platform.h | 20 +- 3rdparty/include/vulkan/vulkan.h | 52 +- 3rdparty/include/vulkan/vulkan_android.h | 45 +- 3rdparty/include/vulkan/vulkan_beta.h | 492 + 3rdparty/include/vulkan/vulkan_core.h | 12090 +++++++++++++--- 3rdparty/include/vulkan/vulkan_directfb.h | 54 + 3rdparty/include/vulkan/vulkan_fuchsia.h | 238 +- 3rdparty/include/vulkan/vulkan_ggp.h | 58 + 3rdparty/include/vulkan/vulkan_ios.h | 29 +- 3rdparty/include/vulkan/vulkan_macos.h | 29 +- 3rdparty/include/vulkan/vulkan_metal.h | 193 + 3rdparty/include/vulkan/vulkan_mir.h | 65 - 3rdparty/include/vulkan/vulkan_screen.h | 54 + 3rdparty/include/vulkan/vulkan_vi.h | 27 +- 3rdparty/include/vulkan/vulkan_wayland.h | 27 +- 3rdparty/include/vulkan/vulkan_win32.h | 119 +- 3rdparty/include/vulkan/vulkan_xcb.h | 27 +- 3rdparty/include/vulkan/vulkan_xlib.h | 27 +- 3rdparty/include/vulkan/vulkan_xlib_xrandr.h | 25 +- cmake/OpenCVDetectVulkan.cmake | 2 +- modules/dnn/include/opencv2/dnn/dnn.hpp | 2 +- modules/dnn/src/dnn_common.hpp | 1 + .../dnn/src/int8layers/convolution_layer.cpp | 10 +- modules/dnn/src/int8layers/pooling_layer.cpp | 8 +- modules/dnn/src/layer.cpp | 3 +- modules/dnn/src/layers/concat_layer.cpp | 12 - modules/dnn/src/layers/convolution_layer.cpp | 94 +- modules/dnn/src/layers/elementwise_layers.cpp | 48 - .../dnn/src/layers/fully_connected_layer.cpp | 86 +- modules/dnn/src/layers/lrn_layer.cpp | 10 - .../dnn/src/layers/not_implemented_layer.cpp | 3 +- modules/dnn/src/layers/permute_layer.cpp | 10 - modules/dnn/src/layers/pooling_layer.cpp | 51 +- modules/dnn/src/layers/prior_box_layer.cpp | 17 +- modules/dnn/src/layers/softmax_layer.cpp | 14 - modules/dnn/src/net_impl.cpp | 13 +- modules/dnn/src/net_impl.hpp | 1 + modules/dnn/src/net_impl_fuse.cpp | 28 +- modules/dnn/src/op_vkcom.cpp | 291 +- modules/dnn/src/op_vkcom.hpp | 77 +- modules/dnn/src/precomp.hpp | 2 +- modules/dnn/src/vkcom/include/buffer.hpp | 8 +- modules/dnn/src/vkcom/include/command.hpp | 82 + modules/dnn/src/vkcom/include/context.hpp | 184 + modules/dnn/src/vkcom/include/fence.hpp | 33 + modules/dnn/src/vkcom/include/op_base.hpp | 26 +- modules/dnn/src/vkcom/include/op_concat.hpp | 55 - modules/dnn/src/vkcom/include/op_conv.hpp | 81 +- modules/dnn/src/vkcom/include/op_lrn.hpp | 70 - modules/dnn/src/vkcom/include/op_matmul.hpp | 47 + modules/dnn/src/vkcom/include/op_permute.hpp | 50 - modules/dnn/src/vkcom/include/op_pool.hpp | 70 - .../dnn/src/vkcom/include/op_prior_box.hpp | 66 - modules/dnn/src/vkcom/include/op_relu.hpp | 37 - modules/dnn/src/vkcom/include/op_softmax.hpp | 56 - modules/dnn/src/vkcom/include/pipeline.hpp | 104 + modules/dnn/src/vkcom/include/tensor.hpp | 14 +- modules/dnn/src/vkcom/include/vkcom.hpp | 33 +- modules/dnn/src/vkcom/shader/avg_pool.comp | 69 - modules/dnn/src/vkcom/shader/avg_pool_spv.cpp | 208 - modules/dnn/src/vkcom/shader/concat.comp | 29 - modules/dnn/src/vkcom/shader/concat_spv.cpp | 83 - modules/dnn/src/vkcom/shader/conv.comp | 76 - modules/dnn/src/vkcom/shader/conv48.comp | 140 - .../dnn/src/vkcom/shader/conv48_nobias.comp | 134 - .../src/vkcom/shader/conv48_nobias_spv.cpp | 913 -- modules/dnn/src/vkcom/shader/conv48_spv.cpp | 948 -- .../dnn/src/vkcom/shader/conv_1x1_fast.comp | 175 + .../src/vkcom/shader/conv_1x1_fast_spv.cpp | 404 + .../dnn/src/vkcom/shader/conv_depthwise.comp | 125 + .../src/vkcom/shader/conv_depthwise_3x3.comp | 121 + .../vkcom/shader/conv_depthwise_3x3_spv.cpp | 260 + .../src/vkcom/shader/conv_depthwise_spv.cpp | 274 + .../src/vkcom/shader/conv_implicit_gemm.comp | 188 + .../vkcom/shader/conv_implicit_gemm_spv.cpp | 458 + modules/dnn/src/vkcom/shader/conv_spv.cpp | 252 - modules/dnn/src/vkcom/shader/dw_conv.comp | 77 - modules/dnn/src/vkcom/shader/dw_conv_spv.cpp | 235 - modules/dnn/src/vkcom/shader/gemm.comp | 168 + modules/dnn/src/vkcom/shader/gemm_spv.cpp | 375 + modules/dnn/src/vkcom/shader/lrn.comp | 63 - modules/dnn/src/vkcom/shader/lrn_spv.cpp | 246 - modules/dnn/src/vkcom/shader/max_pool.comp | 64 - modules/dnn/src/vkcom/shader/max_pool_spv.cpp | 197 - modules/dnn/src/vkcom/shader/permute.comp | 44 - modules/dnn/src/vkcom/shader/permute_spv.cpp | 111 - modules/dnn/src/vkcom/shader/prior_box.comp | 78 - .../dnn/src/vkcom/shader/prior_box_spv.cpp | 200 - modules/dnn/src/vkcom/shader/relu.comp | 24 - modules/dnn/src/vkcom/shader/relu_spv.cpp | 78 - modules/dnn/src/vkcom/shader/softmax.comp | 78 - modules/dnn/src/vkcom/shader/softmax_spv.cpp | 202 - .../dnn/src/vkcom/shader/spirv_generator.py | 51 +- modules/dnn/src/vkcom/shader/spv_shader.cpp | 21 + modules/dnn/src/vkcom/shader/spv_shader.hpp | 24 +- modules/dnn/src/vkcom/src/buffer.cpp | 48 +- modules/dnn/src/vkcom/src/command.cpp | 182 + modules/dnn/src/vkcom/src/common.hpp | 87 - modules/dnn/src/vkcom/src/context.cpp | 910 +- modules/dnn/src/vkcom/src/context.hpp | 28 - modules/dnn/src/vkcom/src/fence.cpp | 49 + modules/dnn/src/vkcom/src/internal.cpp | 145 +- modules/dnn/src/vkcom/src/internal.hpp | 134 +- modules/dnn/src/vkcom/src/op_base.cpp | 167 - modules/dnn/src/vkcom/src/op_concat.cpp | 138 - modules/dnn/src/vkcom/src/op_conv.cpp | 485 +- modules/dnn/src/vkcom/src/op_lrn.cpp | 115 - modules/dnn/src/vkcom/src/op_matmul.cpp | 132 + modules/dnn/src/vkcom/src/op_permute.cpp | 163 - modules/dnn/src/vkcom/src/op_pool.cpp | 154 - modules/dnn/src/vkcom/src/op_prior_box.cpp | 151 - modules/dnn/src/vkcom/src/op_relu.cpp | 74 - modules/dnn/src/vkcom/src/op_softmax.cpp | 111 - modules/dnn/src/vkcom/src/pipeline.cpp | 309 + modules/dnn/src/vkcom/src/tensor.cpp | 25 +- modules/dnn/src/vkcom/vulkan/vk_loader.cpp | 28 +- modules/dnn/test/test_backends.cpp | 5 + 117 files changed, 16867 insertions(+), 9436 deletions(-) create mode 100644 3rdparty/include/vulkan/vulkan_beta.h create mode 100644 3rdparty/include/vulkan/vulkan_directfb.h create mode 100644 3rdparty/include/vulkan/vulkan_ggp.h create mode 100644 3rdparty/include/vulkan/vulkan_metal.h delete mode 100644 3rdparty/include/vulkan/vulkan_mir.h create mode 100644 3rdparty/include/vulkan/vulkan_screen.h create mode 100644 modules/dnn/src/vkcom/include/command.hpp create mode 100644 modules/dnn/src/vkcom/include/context.hpp create mode 100644 modules/dnn/src/vkcom/include/fence.hpp delete mode 100644 modules/dnn/src/vkcom/include/op_concat.hpp delete mode 100644 modules/dnn/src/vkcom/include/op_lrn.hpp create mode 100644 modules/dnn/src/vkcom/include/op_matmul.hpp delete mode 100644 modules/dnn/src/vkcom/include/op_permute.hpp delete mode 100644 modules/dnn/src/vkcom/include/op_pool.hpp delete mode 100644 modules/dnn/src/vkcom/include/op_prior_box.hpp delete mode 100644 modules/dnn/src/vkcom/include/op_relu.hpp delete mode 100644 modules/dnn/src/vkcom/include/op_softmax.hpp create mode 100644 modules/dnn/src/vkcom/include/pipeline.hpp delete mode 100644 modules/dnn/src/vkcom/shader/avg_pool.comp delete mode 100644 modules/dnn/src/vkcom/shader/avg_pool_spv.cpp delete mode 100644 modules/dnn/src/vkcom/shader/concat.comp delete mode 100644 modules/dnn/src/vkcom/shader/concat_spv.cpp delete mode 100644 modules/dnn/src/vkcom/shader/conv.comp delete mode 100644 modules/dnn/src/vkcom/shader/conv48.comp delete mode 100644 modules/dnn/src/vkcom/shader/conv48_nobias.comp delete mode 100644 modules/dnn/src/vkcom/shader/conv48_nobias_spv.cpp delete mode 100644 modules/dnn/src/vkcom/shader/conv48_spv.cpp create mode 100644 modules/dnn/src/vkcom/shader/conv_1x1_fast.comp create mode 100644 modules/dnn/src/vkcom/shader/conv_1x1_fast_spv.cpp create mode 100644 modules/dnn/src/vkcom/shader/conv_depthwise.comp create mode 100644 modules/dnn/src/vkcom/shader/conv_depthwise_3x3.comp create mode 100644 modules/dnn/src/vkcom/shader/conv_depthwise_3x3_spv.cpp create mode 100644 modules/dnn/src/vkcom/shader/conv_depthwise_spv.cpp create mode 100644 modules/dnn/src/vkcom/shader/conv_implicit_gemm.comp create mode 100644 modules/dnn/src/vkcom/shader/conv_implicit_gemm_spv.cpp delete mode 100644 modules/dnn/src/vkcom/shader/conv_spv.cpp delete mode 100644 modules/dnn/src/vkcom/shader/dw_conv.comp delete mode 100644 modules/dnn/src/vkcom/shader/dw_conv_spv.cpp create mode 100644 modules/dnn/src/vkcom/shader/gemm.comp create mode 100644 modules/dnn/src/vkcom/shader/gemm_spv.cpp delete mode 100644 modules/dnn/src/vkcom/shader/lrn.comp delete mode 100644 modules/dnn/src/vkcom/shader/lrn_spv.cpp delete mode 100644 modules/dnn/src/vkcom/shader/max_pool.comp delete mode 100644 modules/dnn/src/vkcom/shader/max_pool_spv.cpp delete mode 100644 modules/dnn/src/vkcom/shader/permute.comp delete mode 100644 modules/dnn/src/vkcom/shader/permute_spv.cpp delete mode 100644 modules/dnn/src/vkcom/shader/prior_box.comp delete mode 100644 modules/dnn/src/vkcom/shader/prior_box_spv.cpp delete mode 100644 modules/dnn/src/vkcom/shader/relu.comp delete mode 100644 modules/dnn/src/vkcom/shader/relu_spv.cpp delete mode 100644 modules/dnn/src/vkcom/shader/softmax.comp delete mode 100644 modules/dnn/src/vkcom/shader/softmax_spv.cpp create mode 100644 modules/dnn/src/vkcom/shader/spv_shader.cpp create mode 100644 modules/dnn/src/vkcom/src/command.cpp delete mode 100644 modules/dnn/src/vkcom/src/common.hpp delete mode 100644 modules/dnn/src/vkcom/src/context.hpp create mode 100644 modules/dnn/src/vkcom/src/fence.cpp delete mode 100644 modules/dnn/src/vkcom/src/op_concat.cpp delete mode 100644 modules/dnn/src/vkcom/src/op_lrn.cpp create mode 100644 modules/dnn/src/vkcom/src/op_matmul.cpp delete mode 100644 modules/dnn/src/vkcom/src/op_permute.cpp delete mode 100644 modules/dnn/src/vkcom/src/op_pool.cpp delete mode 100644 modules/dnn/src/vkcom/src/op_prior_box.cpp delete mode 100644 modules/dnn/src/vkcom/src/op_relu.cpp delete mode 100644 modules/dnn/src/vkcom/src/op_softmax.cpp create mode 100644 modules/dnn/src/vkcom/src/pipeline.cpp diff --git a/3rdparty/include/vulkan/vk_platform.h b/3rdparty/include/vulkan/vk_platform.h index 7289299240..ed67a6004a 100644 --- a/3rdparty/include/vulkan/vk_platform.h +++ b/3rdparty/include/vulkan/vk_platform.h @@ -2,19 +2,9 @@ // File: vk_platform.h // /* -** Copyright (c) 2014-2017 The Khronos Group Inc. +** Copyright 2014-2023 The Khronos Group Inc. ** -** 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. +** SPDX-License-Identifier: Apache-2.0 */ @@ -52,7 +42,7 @@ extern "C" #define VKAPI_CALL __stdcall #define VKAPI_PTR VKAPI_CALL #elif defined(__ANDROID__) && defined(__ARM_ARCH) && __ARM_ARCH < 7 - #error "Vulkan isn't supported for the 'armeabi' NDK ABI" + #error "Vulkan is not supported for the 'armeabi' NDK ABI" #elif defined(__ANDROID__) && defined(__ARM_ARCH) && __ARM_ARCH >= 7 && defined(__ARM_32BIT_STATE) // On Android 32-bit ARM targets, Vulkan functions use the "hardfloat" // calling convention, i.e. float parameters are passed in registers. This @@ -68,7 +58,9 @@ extern "C" #define VKAPI_PTR #endif -#include +#if !defined(VK_NO_STDDEF_H) + #include +#endif // !defined(VK_NO_STDDEF_H) #if !defined(VK_NO_STDINT_H) #if defined(_MSC_VER) && (_MSC_VER < 1600) diff --git a/3rdparty/include/vulkan/vulkan.h b/3rdparty/include/vulkan/vulkan.h index cf9d85ae59..426cff58d7 100644 --- a/3rdparty/include/vulkan/vulkan.h +++ b/3rdparty/include/vulkan/vulkan.h @@ -2,19 +2,9 @@ #define VULKAN_H_ 1 /* -** Copyright (c) 2015-2018 The Khronos Group Inc. +** Copyright 2015-2023 The Khronos Group Inc. ** -** 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. +** SPDX-License-Identifier: Apache-2.0 */ #include "vk_platform.h" @@ -38,20 +28,16 @@ #include "vulkan_macos.h" #endif - -#ifdef VK_USE_PLATFORM_MIR_KHR -#include -#include "vulkan_mir.h" +#ifdef VK_USE_PLATFORM_METAL_EXT +#include "vulkan_metal.h" #endif - #ifdef VK_USE_PLATFORM_VI_NN #include "vulkan_vi.h" #endif #ifdef VK_USE_PLATFORM_WAYLAND_KHR -#include #include "vulkan_wayland.h" #endif @@ -74,10 +60,40 @@ #endif +#ifdef VK_USE_PLATFORM_DIRECTFB_EXT +#include +#include "vulkan_directfb.h" +#endif + + #ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT #include #include #include "vulkan_xlib_xrandr.h" #endif + +#ifdef VK_USE_PLATFORM_GGP +#include +#include "vulkan_ggp.h" +#endif + + +#ifdef VK_USE_PLATFORM_SCREEN_QNX +#include +#include "vulkan_screen.h" +#endif + + +#ifdef VK_USE_PLATFORM_SCI +#include +#include +#include "vulkan_sci.h" +#endif + + +#ifdef VK_ENABLE_BETA_EXTENSIONS +#include "vulkan_beta.h" +#endif + #endif // VULKAN_H_ diff --git a/3rdparty/include/vulkan/vulkan_android.h b/3rdparty/include/vulkan/vulkan_android.h index 07aaeda28e..2e1dfa9ba2 100644 --- a/3rdparty/include/vulkan/vulkan_android.h +++ b/3rdparty/include/vulkan/vulkan_android.h @@ -1,24 +1,10 @@ #ifndef VULKAN_ANDROID_H_ #define VULKAN_ANDROID_H_ 1 -#ifdef __cplusplus -extern "C" { -#endif - /* -** Copyright (c) 2015-2018 The Khronos Group Inc. +** Copyright 2015-2023 The Khronos Group Inc. ** -** 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. +** SPDX-License-Identifier: Apache-2.0 */ /* @@ -27,14 +13,17 @@ extern "C" { */ +#ifdef __cplusplus +extern "C" { +#endif + + + #define VK_KHR_android_surface 1 struct ANativeWindow; - #define VK_KHR_ANDROID_SURFACE_SPEC_VERSION 6 #define VK_KHR_ANDROID_SURFACE_EXTENSION_NAME "VK_KHR_android_surface" - typedef VkFlags VkAndroidSurfaceCreateFlagsKHR; - typedef struct VkAndroidSurfaceCreateInfoKHR { VkStructureType sType; const void* pNext; @@ -42,7 +31,6 @@ typedef struct VkAndroidSurfaceCreateInfoKHR { struct ANativeWindow* window; } VkAndroidSurfaceCreateInfoKHR; - typedef VkResult (VKAPI_PTR *PFN_vkCreateAndroidSurfaceKHR)(VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); #ifndef VK_NO_PROTOTYPES @@ -53,12 +41,11 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateAndroidSurfaceKHR( VkSurfaceKHR* pSurface); #endif + #define VK_ANDROID_external_memory_android_hardware_buffer 1 struct AHardwareBuffer; - -#define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION 3 +#define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION 5 #define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME "VK_ANDROID_external_memory_android_hardware_buffer" - typedef struct VkAndroidHardwareBufferUsageANDROID { VkStructureType sType; void* pNext; @@ -103,6 +90,18 @@ typedef struct VkExternalFormatANDROID { uint64_t externalFormat; } VkExternalFormatANDROID; +typedef struct VkAndroidHardwareBufferFormatProperties2ANDROID { + VkStructureType sType; + void* pNext; + VkFormat format; + uint64_t externalFormat; + VkFormatFeatureFlags2 formatFeatures; + VkComponentMapping samplerYcbcrConversionComponents; + VkSamplerYcbcrModelConversion suggestedYcbcrModel; + VkSamplerYcbcrRange suggestedYcbcrRange; + VkChromaLocation suggestedXChromaOffset; + VkChromaLocation suggestedYChromaOffset; +} VkAndroidHardwareBufferFormatProperties2ANDROID; typedef VkResult (VKAPI_PTR *PFN_vkGetAndroidHardwareBufferPropertiesANDROID)(VkDevice device, const struct AHardwareBuffer* buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties); typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryAndroidHardwareBufferANDROID)(VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct AHardwareBuffer** pBuffer); diff --git a/3rdparty/include/vulkan/vulkan_beta.h b/3rdparty/include/vulkan/vulkan_beta.h new file mode 100644 index 0000000000..a118d77210 --- /dev/null +++ b/3rdparty/include/vulkan/vulkan_beta.h @@ -0,0 +1,492 @@ +#ifndef VULKAN_BETA_H_ +#define VULKAN_BETA_H_ 1 + +/* +** Copyright 2015-2023 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +#define VK_KHR_portability_subset 1 +#define VK_KHR_PORTABILITY_SUBSET_SPEC_VERSION 1 +#define VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME "VK_KHR_portability_subset" +typedef struct VkPhysicalDevicePortabilitySubsetFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 constantAlphaColorBlendFactors; + VkBool32 events; + VkBool32 imageViewFormatReinterpretation; + VkBool32 imageViewFormatSwizzle; + VkBool32 imageView2DOn3DImage; + VkBool32 multisampleArrayImage; + VkBool32 mutableComparisonSamplers; + VkBool32 pointPolygons; + VkBool32 samplerMipLodBias; + VkBool32 separateStencilMaskRef; + VkBool32 shaderSampleRateInterpolationFunctions; + VkBool32 tessellationIsolines; + VkBool32 tessellationPointMode; + VkBool32 triangleFans; + VkBool32 vertexAttributeAccessBeyondStride; +} VkPhysicalDevicePortabilitySubsetFeaturesKHR; + +typedef struct VkPhysicalDevicePortabilitySubsetPropertiesKHR { + VkStructureType sType; + void* pNext; + uint32_t minVertexInputBindingStrideAlignment; +} VkPhysicalDevicePortabilitySubsetPropertiesKHR; + + + +#define VK_KHR_video_encode_queue 1 +#define VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION 8 +#define VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME "VK_KHR_video_encode_queue" + +typedef enum VkVideoEncodeTuningModeKHR { + VK_VIDEO_ENCODE_TUNING_MODE_DEFAULT_KHR = 0, + VK_VIDEO_ENCODE_TUNING_MODE_HIGH_QUALITY_KHR = 1, + VK_VIDEO_ENCODE_TUNING_MODE_LOW_LATENCY_KHR = 2, + VK_VIDEO_ENCODE_TUNING_MODE_ULTRA_LOW_LATENCY_KHR = 3, + VK_VIDEO_ENCODE_TUNING_MODE_LOSSLESS_KHR = 4, + VK_VIDEO_ENCODE_TUNING_MODE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoEncodeTuningModeKHR; +typedef VkFlags VkVideoEncodeFlagsKHR; + +typedef enum VkVideoEncodeCapabilityFlagBitsKHR { + VK_VIDEO_ENCODE_CAPABILITY_PRECEDING_EXTERNALLY_ENCODED_BYTES_BIT_KHR = 0x00000001, + VK_VIDEO_ENCODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoEncodeCapabilityFlagBitsKHR; +typedef VkFlags VkVideoEncodeCapabilityFlagsKHR; + +typedef enum VkVideoEncodeRateControlModeFlagBitsKHR { + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DEFAULT_KHR = 0, + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR = 0x00000001, + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR = 0x00000002, + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR = 0x00000004, + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoEncodeRateControlModeFlagBitsKHR; +typedef VkFlags VkVideoEncodeRateControlModeFlagsKHR; + +typedef enum VkVideoEncodeFeedbackFlagBitsKHR { + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BUFFER_OFFSET_BIT_KHR = 0x00000001, + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BYTES_WRITTEN_BIT_KHR = 0x00000002, + VK_VIDEO_ENCODE_FEEDBACK_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoEncodeFeedbackFlagBitsKHR; +typedef VkFlags VkVideoEncodeFeedbackFlagsKHR; + +typedef enum VkVideoEncodeUsageFlagBitsKHR { + VK_VIDEO_ENCODE_USAGE_DEFAULT_KHR = 0, + VK_VIDEO_ENCODE_USAGE_TRANSCODING_BIT_KHR = 0x00000001, + VK_VIDEO_ENCODE_USAGE_STREAMING_BIT_KHR = 0x00000002, + VK_VIDEO_ENCODE_USAGE_RECORDING_BIT_KHR = 0x00000004, + VK_VIDEO_ENCODE_USAGE_CONFERENCING_BIT_KHR = 0x00000008, + VK_VIDEO_ENCODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoEncodeUsageFlagBitsKHR; +typedef VkFlags VkVideoEncodeUsageFlagsKHR; + +typedef enum VkVideoEncodeContentFlagBitsKHR { + VK_VIDEO_ENCODE_CONTENT_DEFAULT_KHR = 0, + VK_VIDEO_ENCODE_CONTENT_CAMERA_BIT_KHR = 0x00000001, + VK_VIDEO_ENCODE_CONTENT_DESKTOP_BIT_KHR = 0x00000002, + VK_VIDEO_ENCODE_CONTENT_RENDERED_BIT_KHR = 0x00000004, + VK_VIDEO_ENCODE_CONTENT_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoEncodeContentFlagBitsKHR; +typedef VkFlags VkVideoEncodeContentFlagsKHR; +typedef VkFlags VkVideoEncodeRateControlFlagsKHR; +typedef struct VkVideoEncodeInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoEncodeFlagsKHR flags; + uint32_t qualityLevel; + VkBuffer dstBuffer; + VkDeviceSize dstBufferOffset; + VkDeviceSize dstBufferRange; + VkVideoPictureResourceInfoKHR srcPictureResource; + const VkVideoReferenceSlotInfoKHR* pSetupReferenceSlot; + uint32_t referenceSlotCount; + const VkVideoReferenceSlotInfoKHR* pReferenceSlots; + uint32_t precedingExternallyEncodedBytes; +} VkVideoEncodeInfoKHR; + +typedef struct VkVideoEncodeCapabilitiesKHR { + VkStructureType sType; + void* pNext; + VkVideoEncodeCapabilityFlagsKHR flags; + VkVideoEncodeRateControlModeFlagsKHR rateControlModes; + uint32_t maxRateControlLayers; + uint32_t maxQualityLevels; + VkExtent2D inputImageDataFillAlignment; + VkVideoEncodeFeedbackFlagsKHR supportedEncodeFeedbackFlags; +} VkVideoEncodeCapabilitiesKHR; + +typedef struct VkQueryPoolVideoEncodeFeedbackCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoEncodeFeedbackFlagsKHR encodeFeedbackFlags; +} VkQueryPoolVideoEncodeFeedbackCreateInfoKHR; + +typedef struct VkVideoEncodeUsageInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoEncodeUsageFlagsKHR videoUsageHints; + VkVideoEncodeContentFlagsKHR videoContentHints; + VkVideoEncodeTuningModeKHR tuningMode; +} VkVideoEncodeUsageInfoKHR; + +typedef struct VkVideoEncodeRateControlLayerInfoKHR { + VkStructureType sType; + const void* pNext; + uint64_t averageBitrate; + uint64_t maxBitrate; + uint32_t frameRateNumerator; + uint32_t frameRateDenominator; + uint32_t virtualBufferSizeInMs; + uint32_t initialVirtualBufferSizeInMs; +} VkVideoEncodeRateControlLayerInfoKHR; + +typedef struct VkVideoEncodeRateControlInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoEncodeRateControlFlagsKHR flags; + VkVideoEncodeRateControlModeFlagBitsKHR rateControlMode; + uint32_t layerCount; + const VkVideoEncodeRateControlLayerInfoKHR* pLayers; +} VkVideoEncodeRateControlInfoKHR; + +typedef void (VKAPI_PTR *PFN_vkCmdEncodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoEncodeInfoKHR* pEncodeInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdEncodeVideoKHR( + VkCommandBuffer commandBuffer, + const VkVideoEncodeInfoKHR* pEncodeInfo); +#endif + + +#define VK_EXT_video_encode_h264 1 +#include "vk_video/vulkan_video_codec_h264std.h" +#include "vk_video/vulkan_video_codec_h264std_encode.h" +#define VK_EXT_VIDEO_ENCODE_H264_SPEC_VERSION 10 +#define VK_EXT_VIDEO_ENCODE_H264_EXTENSION_NAME "VK_EXT_video_encode_h264" + +typedef enum VkVideoEncodeH264RateControlStructureEXT { + VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT = 0, + VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_FLAT_EXT = 1, + VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_DYADIC_EXT = 2, + VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkVideoEncodeH264RateControlStructureEXT; + +typedef enum VkVideoEncodeH264CapabilityFlagBitsEXT { + VK_VIDEO_ENCODE_H264_CAPABILITY_DIRECT_8X8_INFERENCE_ENABLED_BIT_EXT = 0x00000001, + VK_VIDEO_ENCODE_H264_CAPABILITY_DIRECT_8X8_INFERENCE_DISABLED_BIT_EXT = 0x00000002, + VK_VIDEO_ENCODE_H264_CAPABILITY_SEPARATE_COLOUR_PLANE_BIT_EXT = 0x00000004, + VK_VIDEO_ENCODE_H264_CAPABILITY_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_BIT_EXT = 0x00000008, + VK_VIDEO_ENCODE_H264_CAPABILITY_SCALING_LISTS_BIT_EXT = 0x00000010, + VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_EXT = 0x00000020, + VK_VIDEO_ENCODE_H264_CAPABILITY_CHROMA_QP_OFFSET_BIT_EXT = 0x00000040, + VK_VIDEO_ENCODE_H264_CAPABILITY_SECOND_CHROMA_QP_OFFSET_BIT_EXT = 0x00000080, + VK_VIDEO_ENCODE_H264_CAPABILITY_PIC_INIT_QP_MINUS26_BIT_EXT = 0x00000100, + VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_PRED_BIT_EXT = 0x00000200, + VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BIPRED_EXPLICIT_BIT_EXT = 0x00000400, + VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BIPRED_IMPLICIT_BIT_EXT = 0x00000800, + VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_PRED_NO_TABLE_BIT_EXT = 0x00001000, + VK_VIDEO_ENCODE_H264_CAPABILITY_TRANSFORM_8X8_BIT_EXT = 0x00002000, + VK_VIDEO_ENCODE_H264_CAPABILITY_CABAC_BIT_EXT = 0x00004000, + VK_VIDEO_ENCODE_H264_CAPABILITY_CAVLC_BIT_EXT = 0x00008000, + VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_DISABLED_BIT_EXT = 0x00010000, + VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_ENABLED_BIT_EXT = 0x00020000, + VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_PARTIAL_BIT_EXT = 0x00040000, + VK_VIDEO_ENCODE_H264_CAPABILITY_DISABLE_DIRECT_SPATIAL_MV_PRED_BIT_EXT = 0x00080000, + VK_VIDEO_ENCODE_H264_CAPABILITY_MULTIPLE_SLICE_PER_FRAME_BIT_EXT = 0x00100000, + VK_VIDEO_ENCODE_H264_CAPABILITY_SLICE_MB_COUNT_BIT_EXT = 0x00200000, + VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_EXT = 0x00400000, + VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_EXT = 0x00800000, + VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_EXT = 0x01000000, + VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_REFERENCE_FINAL_LISTS_BIT_EXT = 0x02000000, + VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkVideoEncodeH264CapabilityFlagBitsEXT; +typedef VkFlags VkVideoEncodeH264CapabilityFlagsEXT; +typedef struct VkVideoEncodeH264CapabilitiesEXT { + VkStructureType sType; + void* pNext; + VkVideoEncodeH264CapabilityFlagsEXT flags; + uint32_t maxPPictureL0ReferenceCount; + uint32_t maxBPictureL0ReferenceCount; + uint32_t maxL1ReferenceCount; + VkBool32 motionVectorsOverPicBoundariesFlag; + uint32_t maxBytesPerPicDenom; + uint32_t maxBitsPerMbDenom; + uint32_t log2MaxMvLengthHorizontal; + uint32_t log2MaxMvLengthVertical; +} VkVideoEncodeH264CapabilitiesEXT; + +typedef struct VkVideoEncodeH264SessionParametersAddInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t stdSPSCount; + const StdVideoH264SequenceParameterSet* pStdSPSs; + uint32_t stdPPSCount; + const StdVideoH264PictureParameterSet* pStdPPSs; +} VkVideoEncodeH264SessionParametersAddInfoEXT; + +typedef struct VkVideoEncodeH264SessionParametersCreateInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t maxStdSPSCount; + uint32_t maxStdPPSCount; + const VkVideoEncodeH264SessionParametersAddInfoEXT* pParametersAddInfo; +} VkVideoEncodeH264SessionParametersCreateInfoEXT; + +typedef struct VkVideoEncodeH264NaluSliceInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t mbCount; + const StdVideoEncodeH264ReferenceListsInfo* pStdReferenceFinalLists; + const StdVideoEncodeH264SliceHeader* pStdSliceHeader; +} VkVideoEncodeH264NaluSliceInfoEXT; + +typedef struct VkVideoEncodeH264VclFrameInfoEXT { + VkStructureType sType; + const void* pNext; + const StdVideoEncodeH264ReferenceListsInfo* pStdReferenceFinalLists; + uint32_t naluSliceEntryCount; + const VkVideoEncodeH264NaluSliceInfoEXT* pNaluSliceEntries; + const StdVideoEncodeH264PictureInfo* pStdPictureInfo; +} VkVideoEncodeH264VclFrameInfoEXT; + +typedef struct VkVideoEncodeH264DpbSlotInfoEXT { + VkStructureType sType; + const void* pNext; + const StdVideoEncodeH264ReferenceInfo* pStdReferenceInfo; +} VkVideoEncodeH264DpbSlotInfoEXT; + +typedef struct VkVideoEncodeH264ProfileInfoEXT { + VkStructureType sType; + const void* pNext; + StdVideoH264ProfileIdc stdProfileIdc; +} VkVideoEncodeH264ProfileInfoEXT; + +typedef struct VkVideoEncodeH264RateControlInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t gopFrameCount; + uint32_t idrPeriod; + uint32_t consecutiveBFrameCount; + VkVideoEncodeH264RateControlStructureEXT rateControlStructure; + uint32_t temporalLayerCount; +} VkVideoEncodeH264RateControlInfoEXT; + +typedef struct VkVideoEncodeH264QpEXT { + int32_t qpI; + int32_t qpP; + int32_t qpB; +} VkVideoEncodeH264QpEXT; + +typedef struct VkVideoEncodeH264FrameSizeEXT { + uint32_t frameISize; + uint32_t framePSize; + uint32_t frameBSize; +} VkVideoEncodeH264FrameSizeEXT; + +typedef struct VkVideoEncodeH264RateControlLayerInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t temporalLayerId; + VkBool32 useInitialRcQp; + VkVideoEncodeH264QpEXT initialRcQp; + VkBool32 useMinQp; + VkVideoEncodeH264QpEXT minQp; + VkBool32 useMaxQp; + VkVideoEncodeH264QpEXT maxQp; + VkBool32 useMaxFrameSize; + VkVideoEncodeH264FrameSizeEXT maxFrameSize; +} VkVideoEncodeH264RateControlLayerInfoEXT; + + + +#define VK_EXT_video_encode_h265 1 +#include "vk_video/vulkan_video_codec_h265std.h" +#include "vk_video/vulkan_video_codec_h265std_encode.h" +#define VK_EXT_VIDEO_ENCODE_H265_SPEC_VERSION 10 +#define VK_EXT_VIDEO_ENCODE_H265_EXTENSION_NAME "VK_EXT_video_encode_h265" + +typedef enum VkVideoEncodeH265RateControlStructureEXT { + VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT = 0, + VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_FLAT_EXT = 1, + VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_DYADIC_EXT = 2, + VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkVideoEncodeH265RateControlStructureEXT; + +typedef enum VkVideoEncodeH265CapabilityFlagBitsEXT { + VK_VIDEO_ENCODE_H265_CAPABILITY_SEPARATE_COLOUR_PLANE_BIT_EXT = 0x00000001, + VK_VIDEO_ENCODE_H265_CAPABILITY_SCALING_LISTS_BIT_EXT = 0x00000002, + VK_VIDEO_ENCODE_H265_CAPABILITY_SAMPLE_ADAPTIVE_OFFSET_ENABLED_BIT_EXT = 0x00000004, + VK_VIDEO_ENCODE_H265_CAPABILITY_PCM_ENABLE_BIT_EXT = 0x00000008, + VK_VIDEO_ENCODE_H265_CAPABILITY_SPS_TEMPORAL_MVP_ENABLED_BIT_EXT = 0x00000010, + VK_VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_EXT = 0x00000020, + VK_VIDEO_ENCODE_H265_CAPABILITY_INIT_QP_MINUS26_BIT_EXT = 0x00000040, + VK_VIDEO_ENCODE_H265_CAPABILITY_LOG2_PARALLEL_MERGE_LEVEL_MINUS2_BIT_EXT = 0x00000080, + VK_VIDEO_ENCODE_H265_CAPABILITY_SIGN_DATA_HIDING_ENABLED_BIT_EXT = 0x00000100, + VK_VIDEO_ENCODE_H265_CAPABILITY_TRANSFORM_SKIP_ENABLED_BIT_EXT = 0x00000200, + VK_VIDEO_ENCODE_H265_CAPABILITY_TRANSFORM_SKIP_DISABLED_BIT_EXT = 0x00000400, + VK_VIDEO_ENCODE_H265_CAPABILITY_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_BIT_EXT = 0x00000800, + VK_VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_PRED_BIT_EXT = 0x00001000, + VK_VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_BIPRED_BIT_EXT = 0x00002000, + VK_VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_PRED_NO_TABLE_BIT_EXT = 0x00004000, + VK_VIDEO_ENCODE_H265_CAPABILITY_TRANSQUANT_BYPASS_ENABLED_BIT_EXT = 0x00008000, + VK_VIDEO_ENCODE_H265_CAPABILITY_ENTROPY_CODING_SYNC_ENABLED_BIT_EXT = 0x00010000, + VK_VIDEO_ENCODE_H265_CAPABILITY_DEBLOCKING_FILTER_OVERRIDE_ENABLED_BIT_EXT = 0x00020000, + VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILE_PER_FRAME_BIT_EXT = 0x00040000, + VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_PER_TILE_BIT_EXT = 0x00080000, + VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILE_PER_SLICE_BIT_EXT = 0x00100000, + VK_VIDEO_ENCODE_H265_CAPABILITY_SLICE_SEGMENT_CTB_COUNT_BIT_EXT = 0x00200000, + VK_VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_EXT = 0x00400000, + VK_VIDEO_ENCODE_H265_CAPABILITY_DEPENDENT_SLICE_SEGMENT_BIT_EXT = 0x00800000, + VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_EXT = 0x01000000, + VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_EXT = 0x02000000, + VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_REFERENCE_FINAL_LISTS_BIT_EXT = 0x04000000, + VK_VIDEO_ENCODE_H265_CAPABILITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkVideoEncodeH265CapabilityFlagBitsEXT; +typedef VkFlags VkVideoEncodeH265CapabilityFlagsEXT; + +typedef enum VkVideoEncodeH265CtbSizeFlagBitsEXT { + VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_EXT = 0x00000001, + VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_EXT = 0x00000002, + VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_EXT = 0x00000004, + VK_VIDEO_ENCODE_H265_CTB_SIZE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkVideoEncodeH265CtbSizeFlagBitsEXT; +typedef VkFlags VkVideoEncodeH265CtbSizeFlagsEXT; + +typedef enum VkVideoEncodeH265TransformBlockSizeFlagBitsEXT { + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_4_BIT_EXT = 0x00000001, + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_8_BIT_EXT = 0x00000002, + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_16_BIT_EXT = 0x00000004, + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_32_BIT_EXT = 0x00000008, + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkVideoEncodeH265TransformBlockSizeFlagBitsEXT; +typedef VkFlags VkVideoEncodeH265TransformBlockSizeFlagsEXT; +typedef struct VkVideoEncodeH265CapabilitiesEXT { + VkStructureType sType; + void* pNext; + VkVideoEncodeH265CapabilityFlagsEXT flags; + VkVideoEncodeH265CtbSizeFlagsEXT ctbSizes; + VkVideoEncodeH265TransformBlockSizeFlagsEXT transformBlockSizes; + uint32_t maxPPictureL0ReferenceCount; + uint32_t maxBPictureL0ReferenceCount; + uint32_t maxL1ReferenceCount; + uint32_t maxSubLayersCount; + uint32_t minLog2MinLumaCodingBlockSizeMinus3; + uint32_t maxLog2MinLumaCodingBlockSizeMinus3; + uint32_t minLog2MinLumaTransformBlockSizeMinus2; + uint32_t maxLog2MinLumaTransformBlockSizeMinus2; + uint32_t minMaxTransformHierarchyDepthInter; + uint32_t maxMaxTransformHierarchyDepthInter; + uint32_t minMaxTransformHierarchyDepthIntra; + uint32_t maxMaxTransformHierarchyDepthIntra; + uint32_t maxDiffCuQpDeltaDepth; + uint32_t minMaxNumMergeCand; + uint32_t maxMaxNumMergeCand; +} VkVideoEncodeH265CapabilitiesEXT; + +typedef struct VkVideoEncodeH265SessionParametersAddInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t stdVPSCount; + const StdVideoH265VideoParameterSet* pStdVPSs; + uint32_t stdSPSCount; + const StdVideoH265SequenceParameterSet* pStdSPSs; + uint32_t stdPPSCount; + const StdVideoH265PictureParameterSet* pStdPPSs; +} VkVideoEncodeH265SessionParametersAddInfoEXT; + +typedef struct VkVideoEncodeH265SessionParametersCreateInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t maxStdVPSCount; + uint32_t maxStdSPSCount; + uint32_t maxStdPPSCount; + const VkVideoEncodeH265SessionParametersAddInfoEXT* pParametersAddInfo; +} VkVideoEncodeH265SessionParametersCreateInfoEXT; + +typedef struct VkVideoEncodeH265NaluSliceSegmentInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t ctbCount; + const StdVideoEncodeH265ReferenceListsInfo* pStdReferenceFinalLists; + const StdVideoEncodeH265SliceSegmentHeader* pStdSliceSegmentHeader; +} VkVideoEncodeH265NaluSliceSegmentInfoEXT; + +typedef struct VkVideoEncodeH265VclFrameInfoEXT { + VkStructureType sType; + const void* pNext; + const StdVideoEncodeH265ReferenceListsInfo* pStdReferenceFinalLists; + uint32_t naluSliceSegmentEntryCount; + const VkVideoEncodeH265NaluSliceSegmentInfoEXT* pNaluSliceSegmentEntries; + const StdVideoEncodeH265PictureInfo* pStdPictureInfo; +} VkVideoEncodeH265VclFrameInfoEXT; + +typedef struct VkVideoEncodeH265DpbSlotInfoEXT { + VkStructureType sType; + const void* pNext; + const StdVideoEncodeH265ReferenceInfo* pStdReferenceInfo; +} VkVideoEncodeH265DpbSlotInfoEXT; + +typedef struct VkVideoEncodeH265ProfileInfoEXT { + VkStructureType sType; + const void* pNext; + StdVideoH265ProfileIdc stdProfileIdc; +} VkVideoEncodeH265ProfileInfoEXT; + +typedef struct VkVideoEncodeH265RateControlInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t gopFrameCount; + uint32_t idrPeriod; + uint32_t consecutiveBFrameCount; + VkVideoEncodeH265RateControlStructureEXT rateControlStructure; + uint32_t subLayerCount; +} VkVideoEncodeH265RateControlInfoEXT; + +typedef struct VkVideoEncodeH265QpEXT { + int32_t qpI; + int32_t qpP; + int32_t qpB; +} VkVideoEncodeH265QpEXT; + +typedef struct VkVideoEncodeH265FrameSizeEXT { + uint32_t frameISize; + uint32_t framePSize; + uint32_t frameBSize; +} VkVideoEncodeH265FrameSizeEXT; + +typedef struct VkVideoEncodeH265RateControlLayerInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t temporalId; + VkBool32 useInitialRcQp; + VkVideoEncodeH265QpEXT initialRcQp; + VkBool32 useMinQp; + VkVideoEncodeH265QpEXT minQp; + VkBool32 useMaxQp; + VkVideoEncodeH265QpEXT maxQp; + VkBool32 useMaxFrameSize; + VkVideoEncodeH265FrameSizeEXT maxFrameSize; +} VkVideoEncodeH265RateControlLayerInfoEXT; + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/3rdparty/include/vulkan/vulkan_core.h b/3rdparty/include/vulkan/vulkan_core.h index 163fb1765c..804e1f1ad1 100644 --- a/3rdparty/include/vulkan/vulkan_core.h +++ b/3rdparty/include/vulkan/vulkan_core.h @@ -1,24 +1,10 @@ #ifndef VULKAN_CORE_H_ #define VULKAN_CORE_H_ 1 -#ifdef __cplusplus -extern "C" { -#endif - /* -** Copyright (c) 2015-2018 The Khronos Group Inc. +** Copyright 2015-2023 The Khronos Group Inc. ** -** 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. +** SPDX-License-Identifier: Apache-2.0 */ /* @@ -27,47 +13,90 @@ extern "C" { */ +#ifdef __cplusplus +extern "C" { +#endif + + + #define VK_VERSION_1_0 1 #include "vk_platform.h" -#define VK_MAKE_VERSION(major, minor, patch) \ - (((major) << 22) | ((minor) << 12) | (patch)) - -// DEPRECATED: This define has been removed. Specific version defines (e.g. VK_API_VERSION_1_0), or the VK_MAKE_VERSION macro, should be used instead. -//#define VK_API_VERSION VK_MAKE_VERSION(1, 0, 0) // Patch version should always be set to 0 - -// Vulkan 1.0 version number -#define VK_API_VERSION_1_0 VK_MAKE_VERSION(1, 0, 0)// Patch version should always be set to 0 - -#define VK_VERSION_MAJOR(version) ((uint32_t)(version) >> 22) -#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff) -#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff) -// Version of this file -#define VK_HEADER_VERSION 87 - - -#define VK_NULL_HANDLE 0 - - - #define VK_DEFINE_HANDLE(object) typedef struct object##_T* object; -#if !defined(VK_DEFINE_NON_DISPATCHABLE_HANDLE) -#if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__) +#ifndef VK_USE_64_BIT_PTR_DEFINES + #if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__) + #define VK_USE_64_BIT_PTR_DEFINES 1 + #else + #define VK_USE_64_BIT_PTR_DEFINES 0 + #endif +#endif + + +#ifndef VK_DEFINE_NON_DISPATCHABLE_HANDLE + #if (VK_USE_64_BIT_PTR_DEFINES==1) + #if (defined(__cplusplus) && (__cplusplus >= 201103L)) || (defined(_MSVC_LANG) && (_MSVC_LANG >= 201103L)) + #define VK_NULL_HANDLE nullptr + #else + #define VK_NULL_HANDLE ((void*)0) + #endif + #else + #define VK_NULL_HANDLE 0ULL + #endif +#endif +#ifndef VK_NULL_HANDLE + #define VK_NULL_HANDLE 0 +#endif + + +#ifndef VK_DEFINE_NON_DISPATCHABLE_HANDLE + #if (VK_USE_64_BIT_PTR_DEFINES==1) #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object; -#else + #else #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object; + #endif #endif -#endif - +#define VK_MAKE_API_VERSION(variant, major, minor, patch) \ + ((((uint32_t)(variant)) << 29U) | (((uint32_t)(major)) << 22U) | (((uint32_t)(minor)) << 12U) | ((uint32_t)(patch))) -typedef uint32_t VkFlags; +// DEPRECATED: This define has been removed. Specific version defines (e.g. VK_API_VERSION_1_0), or the VK_MAKE_VERSION macro, should be used instead. +//#define VK_API_VERSION VK_MAKE_API_VERSION(0, 1, 0, 0) // Patch version should always be set to 0 + +// Vulkan 1.0 version number +#define VK_API_VERSION_1_0 VK_MAKE_API_VERSION(0, 1, 0, 0)// Patch version should always be set to 0 + +// Version of this file +#define VK_HEADER_VERSION 243 + +// Complete version of this file +#define VK_HEADER_VERSION_COMPLETE VK_MAKE_API_VERSION(0, 1, 3, VK_HEADER_VERSION) + +// DEPRECATED: This define is deprecated. VK_MAKE_API_VERSION should be used instead. +#define VK_MAKE_VERSION(major, minor, patch) \ + ((((uint32_t)(major)) << 22U) | (((uint32_t)(minor)) << 12U) | ((uint32_t)(patch))) + +// DEPRECATED: This define is deprecated. VK_API_VERSION_MAJOR should be used instead. +#define VK_VERSION_MAJOR(version) ((uint32_t)(version) >> 22U) + +// DEPRECATED: This define is deprecated. VK_API_VERSION_MINOR should be used instead. +#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12U) & 0x3FFU) + +// DEPRECATED: This define is deprecated. VK_API_VERSION_PATCH should be used instead. +#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xFFFU) + +#define VK_API_VERSION_VARIANT(version) ((uint32_t)(version) >> 29U) +#define VK_API_VERSION_MAJOR(version) (((uint32_t)(version) >> 22U) & 0x7FU) +#define VK_API_VERSION_MINOR(version) (((uint32_t)(version) >> 12U) & 0x3FFU) +#define VK_API_VERSION_PATCH(version) ((uint32_t)(version) & 0xFFFU) typedef uint32_t VkBool32; +typedef uint64_t VkDeviceAddress; typedef uint64_t VkDeviceSize; +typedef uint32_t VkFlags; typedef uint32_t VkSampleMask; - +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBuffer) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImage) VK_DEFINE_HANDLE(VkInstance) VK_DEFINE_HANDLE(VkPhysicalDevice) VK_DEFINE_HANDLE(VkDevice) @@ -76,8 +105,6 @@ VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSemaphore) VK_DEFINE_HANDLE(VkCommandBuffer) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFence) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDeviceMemory) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBuffer) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImage) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkEvent) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkQueryPool) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferView) @@ -85,39 +112,29 @@ VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImageView) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkShaderModule) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineCache) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineLayout) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkRenderPass) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipeline) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkRenderPass) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSetLayout) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSampler) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorPool) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSet) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorPool) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFramebuffer) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCommandPool) - -#define VK_LOD_CLAMP_NONE 1000.0f -#define VK_REMAINING_MIP_LEVELS (~0U) -#define VK_REMAINING_ARRAY_LAYERS (~0U) -#define VK_WHOLE_SIZE (~0ULL) #define VK_ATTACHMENT_UNUSED (~0U) -#define VK_TRUE 1 -#define VK_FALSE 0 +#define VK_FALSE 0U +#define VK_LOD_CLAMP_NONE 1000.0F #define VK_QUEUE_FAMILY_IGNORED (~0U) +#define VK_REMAINING_ARRAY_LAYERS (~0U) +#define VK_REMAINING_MIP_LEVELS (~0U) #define VK_SUBPASS_EXTERNAL (~0U) -#define VK_MAX_PHYSICAL_DEVICE_NAME_SIZE 256 -#define VK_UUID_SIZE 16 -#define VK_MAX_MEMORY_TYPES 32 -#define VK_MAX_MEMORY_HEAPS 16 -#define VK_MAX_EXTENSION_NAME_SIZE 256 -#define VK_MAX_DESCRIPTION_SIZE 256 - - -typedef enum VkPipelineCacheHeaderVersion { - VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1, - VK_PIPELINE_CACHE_HEADER_VERSION_BEGIN_RANGE = VK_PIPELINE_CACHE_HEADER_VERSION_ONE, - VK_PIPELINE_CACHE_HEADER_VERSION_END_RANGE = VK_PIPELINE_CACHE_HEADER_VERSION_ONE, - VK_PIPELINE_CACHE_HEADER_VERSION_RANGE_SIZE = (VK_PIPELINE_CACHE_HEADER_VERSION_ONE - VK_PIPELINE_CACHE_HEADER_VERSION_ONE + 1), - VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 0x7FFFFFFF -} VkPipelineCacheHeaderVersion; +#define VK_TRUE 1U +#define VK_WHOLE_SIZE (~0ULL) +#define VK_MAX_MEMORY_TYPES 32U +#define VK_MAX_PHYSICAL_DEVICE_NAME_SIZE 256U +#define VK_UUID_SIZE 16U +#define VK_MAX_EXTENSION_NAME_SIZE 256U +#define VK_MAX_DESCRIPTION_SIZE 256U +#define VK_MAX_MEMORY_HEAPS 16U typedef enum VkResult { VK_SUCCESS = 0, @@ -138,8 +155,12 @@ typedef enum VkResult { VK_ERROR_TOO_MANY_OBJECTS = -10, VK_ERROR_FORMAT_NOT_SUPPORTED = -11, VK_ERROR_FRAGMENTED_POOL = -12, + VK_ERROR_UNKNOWN = -13, VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000, VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003, + VK_ERROR_FRAGMENTATION = -1000161000, + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000, + VK_PIPELINE_COMPILE_REQUIRED = 1000297000, VK_ERROR_SURFACE_LOST_KHR = -1000000000, VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001, VK_SUBOPTIMAL_KHR = 1000001003, @@ -147,13 +168,31 @@ typedef enum VkResult { VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001, VK_ERROR_VALIDATION_FAILED_EXT = -1000011001, VK_ERROR_INVALID_SHADER_NV = -1000012000, - VK_ERROR_FRAGMENTATION_EXT = -1000161000, - VK_ERROR_NOT_PERMITTED_EXT = -1000174001, + VK_ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR = -1000023000, + VK_ERROR_VIDEO_PICTURE_LAYOUT_NOT_SUPPORTED_KHR = -1000023001, + VK_ERROR_VIDEO_PROFILE_OPERATION_NOT_SUPPORTED_KHR = -1000023002, + VK_ERROR_VIDEO_PROFILE_FORMAT_NOT_SUPPORTED_KHR = -1000023003, + VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR = -1000023004, + VK_ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR = -1000023005, + VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000, + VK_ERROR_NOT_PERMITTED_KHR = -1000174001, + VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000, + VK_THREAD_IDLE_KHR = 1000268000, + VK_THREAD_DONE_KHR = 1000268001, + VK_OPERATION_DEFERRED_KHR = 1000268002, + VK_OPERATION_NOT_DEFERRED_KHR = 1000268003, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR = -1000299000, +#endif + VK_ERROR_COMPRESSION_EXHAUSTED_EXT = -1000338000, VK_ERROR_OUT_OF_POOL_MEMORY_KHR = VK_ERROR_OUT_OF_POOL_MEMORY, VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = VK_ERROR_INVALID_EXTERNAL_HANDLE, - VK_RESULT_BEGIN_RANGE = VK_ERROR_FRAGMENTED_POOL, - VK_RESULT_END_RANGE = VK_INCOMPLETE, - VK_RESULT_RANGE_SIZE = (VK_INCOMPLETE - VK_ERROR_FRAGMENTED_POOL + 1), + VK_ERROR_FRAGMENTATION_EXT = VK_ERROR_FRAGMENTATION, + VK_ERROR_NOT_PERMITTED_EXT = VK_ERROR_NOT_PERMITTED_KHR, + VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS, + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS, + VK_PIPELINE_COMPILE_REQUIRED_EXT = VK_PIPELINE_COMPILE_REQUIRED, + VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = VK_PIPELINE_COMPILE_REQUIRED, VK_RESULT_MAX_ENUM = 0x7FFFFFFF } VkResult; @@ -243,7 +282,7 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = 1000120000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000, VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002, @@ -271,7 +310,109 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000, VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = 1000063000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52, + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000, + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000, + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001, + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002, + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003, + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004, + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005, + VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000, + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002, + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003, + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000, + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000, + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000, + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000, + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001, + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002, + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000, + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001, + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001, + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002, + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003, + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004, + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000, + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001, + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002, + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003, + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES = 53, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES = 54, + VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO = 1000192000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES = 1000215000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES = 1000245000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES = 1000276000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES = 1000295000, + VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO = 1000295001, + VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO = 1000295002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES = 1000297000, + VK_STRUCTURE_TYPE_MEMORY_BARRIER_2 = 1000314000, + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2 = 1000314001, + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2 = 1000314002, + VK_STRUCTURE_TYPE_DEPENDENCY_INFO = 1000314003, + VK_STRUCTURE_TYPE_SUBMIT_INFO_2 = 1000314004, + VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO = 1000314005, + VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO = 1000314006, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES = 1000314007, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES = 1000325000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES = 1000335000, + VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2 = 1000337000, + VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2 = 1000337001, + VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2 = 1000337002, + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2 = 1000337003, + VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2 = 1000337004, + VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2 = 1000337005, + VK_STRUCTURE_TYPE_BUFFER_COPY_2 = 1000337006, + VK_STRUCTURE_TYPE_IMAGE_COPY_2 = 1000337007, + VK_STRUCTURE_TYPE_IMAGE_BLIT_2 = 1000337008, + VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2 = 1000337009, + VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2 = 1000337010, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES = 1000225000, + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO = 1000225001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES = 1000225002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES = 1000138000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES = 1000138001, + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK = 1000138002, + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO = 1000138003, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES = 1000066000, + VK_STRUCTURE_TYPE_RENDERING_INFO = 1000044000, + VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO = 1000044001, + VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO = 1000044002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES = 1000044003, + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO = 1000044004, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES = 1000280000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES = 1000280001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES = 1000281001, + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3 = 1000360000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES = 1000413000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES = 1000413001, + VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS = 1000413002, + VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS = 1000413003, VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000, VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001, VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007, @@ -286,7 +427,6 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000, VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000, VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000, - VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR = 1000007000, VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000, VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000, VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000, @@ -294,10 +434,103 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000, VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001, VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002, + VK_STRUCTURE_TYPE_VIDEO_PROFILE_INFO_KHR = 1000023000, + VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR = 1000023001, + VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_INFO_KHR = 1000023002, + VK_STRUCTURE_TYPE_VIDEO_SESSION_MEMORY_REQUIREMENTS_KHR = 1000023003, + VK_STRUCTURE_TYPE_BIND_VIDEO_SESSION_MEMORY_INFO_KHR = 1000023004, + VK_STRUCTURE_TYPE_VIDEO_SESSION_CREATE_INFO_KHR = 1000023005, + VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000023006, + VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR = 1000023007, + VK_STRUCTURE_TYPE_VIDEO_BEGIN_CODING_INFO_KHR = 1000023008, + VK_STRUCTURE_TYPE_VIDEO_END_CODING_INFO_KHR = 1000023009, + VK_STRUCTURE_TYPE_VIDEO_CODING_CONTROL_INFO_KHR = 1000023010, + VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_INFO_KHR = 1000023011, + VK_STRUCTURE_TYPE_QUEUE_FAMILY_VIDEO_PROPERTIES_KHR = 1000023012, + VK_STRUCTURE_TYPE_VIDEO_PROFILE_LIST_INFO_KHR = 1000023013, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR = 1000023014, + VK_STRUCTURE_TYPE_VIDEO_FORMAT_PROPERTIES_KHR = 1000023015, + VK_STRUCTURE_TYPE_QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_KHR = 1000023016, + VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR = 1000024000, + VK_STRUCTURE_TYPE_VIDEO_DECODE_CAPABILITIES_KHR = 1000024001, + VK_STRUCTURE_TYPE_VIDEO_DECODE_USAGE_INFO_KHR = 1000024002, VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000, VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001, VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001, + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002, + VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX = 1000029000, + VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX = 1000029001, + VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX = 1000029002, + VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000, + VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_EXT = 1000038000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT = 1000038001, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT = 1000038002, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_VCL_FRAME_INFO_EXT = 1000038003, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXT = 1000038004, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_INFO_EXT = 1000038005, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_INFO_EXT = 1000038007, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_EXT = 1000038008, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_EXT = 1000038009, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_EXT = 1000039000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT = 1000039001, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT = 1000039002, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_VCL_FRAME_INFO_EXT = 1000039003, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_EXT = 1000039004, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_EXT = 1000039005, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_INFO_EXT = 1000039007, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_EXT = 1000039009, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_EXT = 1000039010, +#endif + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR = 1000040000, + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR = 1000040001, + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR = 1000040003, + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000040004, + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR = 1000040005, + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR = 1000040006, VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000, + VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000044006, + VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT = 1000044007, + VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD = 1000044008, + VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX = 1000044009, + VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000, VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000, VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001, @@ -308,6 +541,9 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000, VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001, + VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT = 1000068000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT = 1000068001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT = 1000068002, VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073000, VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073001, VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR = 1000073002, @@ -327,12 +563,6 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001, VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002, VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000, - VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX = 1000086000, - VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX = 1000086001, - VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX = 1000086002, - VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX = 1000086003, - VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX = 1000086004, - VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX = 1000086005, VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000, VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = 1000090000, VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000, @@ -346,20 +576,22 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = 1000101000, VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = 1000101001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000, + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001, VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000, - VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000, - VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001, - VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002, - VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003, - VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004, - VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005, - VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006, VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000, VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000, VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001, VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR = 1000114002, VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = 1000115000, VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = 1000115001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001, + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002, + VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003, + VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004, + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005, + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000, VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001, VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002, @@ -381,70 +613,404 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003, VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004, VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000, - VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001, - VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002, - VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = 1000138003, + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID = 1000129006, VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = 1000143000, VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = 1000143001, VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003, VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = 1000143004, - VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001, VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002, VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000, + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000150007, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR = 1000150009, + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010, + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011, + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR = 1000150013, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR = 1000150014, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR = 1000150020, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR = 1000347000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR = 1000347001, + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015, + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016, + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR = 1000348013, VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001, + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002, + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003, + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004, + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005, + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT = 1000158006, VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000, VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001, - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = 1000161000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = 1000161001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = 1000161002, - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = 1000161003, - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = 1000161004, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR = 1000163000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR = 1000163001, +#endif VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002, VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005, - VK_STRUCTURE_TYPE_RAYTRACING_PIPELINE_CREATE_INFO_NVX = 1000165000, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NVX = 1000165001, - VK_STRUCTURE_TYPE_GEOMETRY_INSTANCE_NVX = 1000165002, - VK_STRUCTURE_TYPE_GEOMETRY_NVX = 1000165003, - VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NVX = 1000165004, - VK_STRUCTURE_TYPE_GEOMETRY_AABB_NVX = 1000165005, - VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NVX = 1000165006, - VK_STRUCTURE_TYPE_DESCRIPTOR_ACCELERATION_STRUCTURE_INFO_NVX = 1000165007, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NVX = 1000165008, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAYTRACING_PROPERTIES_NVX = 1000165009, - VK_STRUCTURE_TYPE_HIT_SHADER_MODULE_CREATE_INFO_NVX = 1000165010, + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001, + VK_STRUCTURE_TYPE_GEOMETRY_NV = 1000165003, + VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = 1000165004, + VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV = 1000165005, + VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006, + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009, + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000, VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001, - VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = 1000174000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000, + VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001, VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000, VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR = 1000181000, + VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000, + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000, + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_KHR = 1000187000, + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000187001, + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR = 1000187002, + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR = 1000187003, + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR = 1000187004, + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR = 1000187005, + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR = 1000174000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR = 1000388000, + VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR = 1000388001, + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = 1000190000, VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = 1000190001, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000, + VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000, VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002, VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000, VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000, + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000, + VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001, + VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002, + VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003, + VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004, + VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000, + VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000, + VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001, VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000, + VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001, + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002, + VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000226000, + VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR = 1000226001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR = 1000226002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR = 1000226003, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR = 1000226004, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT = 1000234000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000, + VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001, + VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000, + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002, + VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR = 1000248000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000, + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000, + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001, + VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT = 1000254000, + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT = 1000254001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT = 1000254002, + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000, + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002, + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001, + VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000, + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000, + VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001, + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002, + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003, + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004, + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT = 1000273000, + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT = 1000274000, + VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT = 1000274001, + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT = 1000274002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT = 1000275000, + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT = 1000275001, + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT = 1000275002, + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT = 1000275003, + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT = 1000275004, + VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT = 1000275005, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000, + VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001, + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002, + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003, + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004, + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = 1000277005, + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV = 1000278000, + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV = 1000278001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000, + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000, + VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT = 1000284000, + VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT = 1000284001, + VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT = 1000284002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001, + VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002, + VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV = 1000292000, + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_BARRIER_NV = 1000292001, + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV = 1000292002, + VK_STRUCTURE_TYPE_PRESENT_ID_KHR = 1000294000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR = 1000294001, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR = 1000299000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR = 1000299001, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR = 1000299002, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR = 1000299003, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_VIDEO_ENCODE_USAGE_INFO_KHR = 1000299004, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_QUERY_POOL_VIDEO_ENCODE_FEEDBACK_CREATE_INFO_KHR = 1000299005, +#endif + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000, + VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001, + VK_STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV = 1000310000, + VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT = 1000311000, + VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT = 1000311001, + VK_STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT = 1000311002, + VK_STRUCTURE_TYPE_EXPORT_METAL_COMMAND_QUEUE_INFO_EXT = 1000311003, + VK_STRUCTURE_TYPE_EXPORT_METAL_BUFFER_INFO_EXT = 1000311004, + VK_STRUCTURE_TYPE_IMPORT_METAL_BUFFER_INFO_EXT = 1000311005, + VK_STRUCTURE_TYPE_EXPORT_METAL_TEXTURE_INFO_EXT = 1000311006, + VK_STRUCTURE_TYPE_IMPORT_METAL_TEXTURE_INFO_EXT = 1000311007, + VK_STRUCTURE_TYPE_EXPORT_METAL_IO_SURFACE_INFO_EXT = 1000311008, + VK_STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT = 1000311009, + VK_STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT = 1000311010, + VK_STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT = 1000311011, + VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008, + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = 1000314009, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT = 1000316000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT = 1000316001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT = 1000316002, + VK_STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT = 1000316003, + VK_STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT = 1000316004, + VK_STRUCTURE_TYPE_BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = 1000316005, + VK_STRUCTURE_TYPE_IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = 1000316006, + VK_STRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = 1000316007, + VK_STRUCTURE_TYPE_SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = 1000316008, + VK_STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT = 1000316010, + VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT = 1000316011, + VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT = 1000316012, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = 1000316009, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT = 1000320000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT = 1000320001, + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT = 1000320002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD = 1000321000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR = 1000203000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR = 1000322000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR = 1000323000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV = 1000326000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV = 1000326001, + VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV = 1000326002, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV = 1000327000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV = 1000327001, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV = 1000327002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT = 1000328000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT = 1000328001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT = 1000330000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001, + VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM = 1000333000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR = 1000336000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT = 1000338000, + VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT = 1000338001, + VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT = 1000338002, + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT = 1000338003, + VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT = 1000338004, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT = 1000339000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT = 1000341000, + VK_STRUCTURE_TYPE_DEVICE_FAULT_COUNTS_EXT = 1000341001, + VK_STRUCTURE_TYPE_DEVICE_FAULT_INFO_EXT = 1000341002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT = 1000344000, + VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT = 1000352000, + VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT = 1000352001, + VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT = 1000352002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT = 1000353000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT = 1000354000, + VK_STRUCTURE_TYPE_DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT = 1000354001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT = 1000355000, + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT = 1000355001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT = 1000356000, + VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA = 1000364000, + VK_STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA = 1000364001, + VK_STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA = 1000364002, + VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA = 1000365000, + VK_STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA = 1000365001, + VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CREATE_INFO_FUCHSIA = 1000366000, + VK_STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA = 1000366001, + VK_STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA = 1000366002, + VK_STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES_FUCHSIA = 1000366003, + VK_STRUCTURE_TYPE_BUFFER_CONSTRAINTS_INFO_FUCHSIA = 1000366004, + VK_STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA = 1000366005, + VK_STRUCTURE_TYPE_IMAGE_CONSTRAINTS_INFO_FUCHSIA = 1000366006, + VK_STRUCTURE_TYPE_IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA = 1000366007, + VK_STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA = 1000366008, + VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA = 1000366009, + VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI = 1000369000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI = 1000369001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI = 1000369002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI = 1000370000, + VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV = 1000371000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV = 1000371001, + VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT = 1000372000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT = 1000372001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT = 1000376000, + VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT = 1000376001, + VK_STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT = 1000376002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT = 1000377000, + VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX = 1000378000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT = 1000381000, + VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT = 1000381001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT = 1000382000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR = 1000386000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT = 1000391000, + VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT = 1000391001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT = 1000392000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT = 1000392001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT = 1000393000, + VK_STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT = 1000396000, + VK_STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT = 1000396001, + VK_STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT = 1000396002, + VK_STRUCTURE_TYPE_COPY_MICROMAP_TO_MEMORY_INFO_EXT = 1000396003, + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_MICROMAP_INFO_EXT = 1000396004, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT = 1000396005, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT = 1000396006, + VK_STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT = 1000396007, + VK_STRUCTURE_TYPE_MICROMAP_BUILD_SIZES_INFO_EXT = 1000396008, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT = 1000396009, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI = 1000404000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI = 1000404001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT = 1000411000, + VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT = 1000411001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT = 1000412000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM = 1000415000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT = 1000418000, + VK_STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT = 1000418001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE = 1000420000, + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE = 1000420001, + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE = 1000420002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT = 1000421000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT = 1000422000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = 1000425000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = 1000425001, + VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = 1000425002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV = 1000426000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV = 1000426001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV = 1000427000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV = 1000427001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV = 1000430000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT = 1000437000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM = 1000440000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM = 1000440001, + VK_STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM = 1000440002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT = 1000455000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT = 1000455001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT = 1000458000, + VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT = 1000458001, + VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000458002, + VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT = 1000458003, + VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG = 1000459000, + VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG = 1000459001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT = 1000462000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT = 1000462001, + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT = 1000462002, + VK_STRUCTURE_TYPE_SHADER_MODULE_IDENTIFIER_EXT = 1000462003, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT = 1000342000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV = 1000464000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV = 1000464001, + VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV = 1000464002, + VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_NV = 1000464003, + VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_INFO_NV = 1000464004, + VK_STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV = 1000464005, + VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV = 1000464010, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT = 1000465000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT = 1000466000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM = 1000484000, + VK_STRUCTURE_TYPE_TILE_PROPERTIES_QCOM = 1000484001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC = 1000485000, + VK_STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC = 1000485001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM = 1000488000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV = 1000490000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV = 1000490001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT = 1000351000, + VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT = 1000351002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM = 1000497000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM = 1000497001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT = 1000498000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM = 1000510000, + VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM = 1000510001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES, VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT, + VK_STRUCTURE_TYPE_RENDERING_INFO_KHR = VK_STRUCTURE_TYPE_RENDERING_INFO, + VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO, + VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES, + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO, + VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV = VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD, VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES, @@ -464,6 +1030,7 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO, VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO, VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES, VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO, @@ -477,9 +1044,22 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO, VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES, VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES, VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO, VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES, + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO, + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO, + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO, + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2, + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2, + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2, + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2, + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2, + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO, + VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = VK_STRUCTURE_TYPE_SUBPASS_END_INFO, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO, VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES, VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO, @@ -487,14 +1067,22 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO, VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO, VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR, VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS, VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES, + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES, + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK, + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO, VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2, VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2, VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2, VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2, VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2, + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO, VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO, VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO, VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO, @@ -503,31 +1091,222 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES, VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO, VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO, + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES, + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO, + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES, VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT, - VK_STRUCTURE_TYPE_BEGIN_RANGE = VK_STRUCTURE_TYPE_APPLICATION_INFO, - VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO, - VK_STRUCTURE_TYPE_RANGE_SIZE = (VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1), + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES, + VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES, + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES, + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO, + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO, + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO, + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO, + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES, + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES, + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT, + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT, + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES, + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES, + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO, + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO, + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO, + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES, + VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO, + VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES, + VK_STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR = VK_STRUCTURE_TYPE_MEMORY_BARRIER_2, + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2, + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2, + VK_STRUCTURE_TYPE_DEPENDENCY_INFO_KHR = VK_STRUCTURE_TYPE_DEPENDENCY_INFO, + VK_STRUCTURE_TYPE_SUBMIT_INFO_2_KHR = VK_STRUCTURE_TYPE_SUBMIT_INFO_2, + VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO, + VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR = VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES, + VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR = VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2, + VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR = VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2, + VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR = VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2, + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR = VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2, + VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR = VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2, + VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR = VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2, + VK_STRUCTURE_TYPE_BUFFER_COPY_2_KHR = VK_STRUCTURE_TYPE_BUFFER_COPY_2, + VK_STRUCTURE_TYPE_IMAGE_COPY_2_KHR = VK_STRUCTURE_TYPE_IMAGE_COPY_2, + VK_STRUCTURE_TYPE_IMAGE_BLIT_2_KHR = VK_STRUCTURE_TYPE_IMAGE_BLIT_2, + VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR = VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2, + VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR = VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT, + VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE = VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT, + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3, + VK_STRUCTURE_TYPE_PIPELINE_INFO_EXT = VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR, + VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT = VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES, + VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR = VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS, + VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR = VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS, VK_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF } VkStructureType; +typedef enum VkPipelineCacheHeaderVersion { + VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1, + VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 0x7FFFFFFF +} VkPipelineCacheHeaderVersion; + +typedef enum VkImageLayout { + VK_IMAGE_LAYOUT_UNDEFINED = 0, + VK_IMAGE_LAYOUT_GENERAL = 1, + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2, + VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3, + VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4, + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5, + VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6, + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7, + VK_IMAGE_LAYOUT_PREINITIALIZED = 8, + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000, + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001, + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000, + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001, + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002, + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003, + VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL = 1000314000, + VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL = 1000314001, + VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002, + VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR = 1000024000, + VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR = 1000024001, + VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR = 1000024002, + VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000, + VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000, + VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR = 1000164003, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR = 1000299000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR = 1000299001, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR = 1000299002, +#endif + VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT = 1000339000, + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL, + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL, + VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR, + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL, + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL, + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL, + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL, + VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL, + VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL, + VK_IMAGE_LAYOUT_MAX_ENUM = 0x7FFFFFFF +} VkImageLayout; + +typedef enum VkObjectType { + VK_OBJECT_TYPE_UNKNOWN = 0, + VK_OBJECT_TYPE_INSTANCE = 1, + VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2, + VK_OBJECT_TYPE_DEVICE = 3, + VK_OBJECT_TYPE_QUEUE = 4, + VK_OBJECT_TYPE_SEMAPHORE = 5, + VK_OBJECT_TYPE_COMMAND_BUFFER = 6, + VK_OBJECT_TYPE_FENCE = 7, + VK_OBJECT_TYPE_DEVICE_MEMORY = 8, + VK_OBJECT_TYPE_BUFFER = 9, + VK_OBJECT_TYPE_IMAGE = 10, + VK_OBJECT_TYPE_EVENT = 11, + VK_OBJECT_TYPE_QUERY_POOL = 12, + VK_OBJECT_TYPE_BUFFER_VIEW = 13, + VK_OBJECT_TYPE_IMAGE_VIEW = 14, + VK_OBJECT_TYPE_SHADER_MODULE = 15, + VK_OBJECT_TYPE_PIPELINE_CACHE = 16, + VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17, + VK_OBJECT_TYPE_RENDER_PASS = 18, + VK_OBJECT_TYPE_PIPELINE = 19, + VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20, + VK_OBJECT_TYPE_SAMPLER = 21, + VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22, + VK_OBJECT_TYPE_DESCRIPTOR_SET = 23, + VK_OBJECT_TYPE_FRAMEBUFFER = 24, + VK_OBJECT_TYPE_COMMAND_POOL = 25, + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = 1000156000, + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE = 1000085000, + VK_OBJECT_TYPE_PRIVATE_DATA_SLOT = 1000295000, + VK_OBJECT_TYPE_SURFACE_KHR = 1000000000, + VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000, + VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000, + VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001, + VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000, + VK_OBJECT_TYPE_VIDEO_SESSION_KHR = 1000023000, + VK_OBJECT_TYPE_VIDEO_SESSION_PARAMETERS_KHR = 1000023001, + VK_OBJECT_TYPE_CU_MODULE_NVX = 1000029000, + VK_OBJECT_TYPE_CU_FUNCTION_NVX = 1000029001, + VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000128000, + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = 1000150000, + VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000, + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000, + VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000, + VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000, + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000, + VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA = 1000366000, + VK_OBJECT_TYPE_MICROMAP_EXT = 1000396000, + VK_OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV = 1000464000, + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE, + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION, + VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = VK_OBJECT_TYPE_PRIVATE_DATA_SLOT, + VK_OBJECT_TYPE_MAX_ENUM = 0x7FFFFFFF +} VkObjectType; + +typedef enum VkVendorId { + VK_VENDOR_ID_VIV = 0x10001, + VK_VENDOR_ID_VSI = 0x10002, + VK_VENDOR_ID_KAZAN = 0x10003, + VK_VENDOR_ID_CODEPLAY = 0x10004, + VK_VENDOR_ID_MESA = 0x10005, + VK_VENDOR_ID_POCL = 0x10006, + VK_VENDOR_ID_MOBILEYE = 0x10007, + VK_VENDOR_ID_MAX_ENUM = 0x7FFFFFFF +} VkVendorId; + typedef enum VkSystemAllocationScope { VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0, VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1, VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2, VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3, VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4, - VK_SYSTEM_ALLOCATION_SCOPE_BEGIN_RANGE = VK_SYSTEM_ALLOCATION_SCOPE_COMMAND, - VK_SYSTEM_ALLOCATION_SCOPE_END_RANGE = VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE, - VK_SYSTEM_ALLOCATION_SCOPE_RANGE_SIZE = (VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE - VK_SYSTEM_ALLOCATION_SCOPE_COMMAND + 1), VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 0x7FFFFFFF } VkSystemAllocationScope; typedef enum VkInternalAllocationType { VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0, - VK_INTERNAL_ALLOCATION_TYPE_BEGIN_RANGE = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE, - VK_INTERNAL_ALLOCATION_TYPE_END_RANGE = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE, - VK_INTERNAL_ALLOCATION_TYPE_RANGE_SIZE = (VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE - VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE + 1), VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 0x7FFFFFFF } VkInternalAllocationType; @@ -751,6 +1530,26 @@ typedef enum VkFormat { VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM = 1000156031, VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = 1000156032, VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM = 1000156033, + VK_FORMAT_G8_B8R8_2PLANE_444_UNORM = 1000330000, + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16 = 1000330001, + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16 = 1000330002, + VK_FORMAT_G16_B16R16_2PLANE_444_UNORM = 1000330003, + VK_FORMAT_A4R4G4B4_UNORM_PACK16 = 1000340000, + VK_FORMAT_A4B4G4R4_UNORM_PACK16 = 1000340001, + VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK = 1000066000, + VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK = 1000066001, + VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK = 1000066002, + VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK = 1000066003, + VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK = 1000066004, + VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK = 1000066005, + VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK = 1000066006, + VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK = 1000066007, + VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK = 1000066008, + VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK = 1000066009, + VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK = 1000066010, + VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK = 1000066011, + VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK = 1000066012, + VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK = 1000066013, VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000, VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001, VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002, @@ -759,6 +1558,21 @@ typedef enum VkFormat { VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005, VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006, VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007, + VK_FORMAT_R16G16_S10_5_NV = 1000464000, + VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK, + VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK, + VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK, + VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK, + VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK, + VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK, + VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK, + VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK, + VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK, + VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK, + VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK, + VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK, + VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK, + VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK, VK_FORMAT_G8B8G8R8_422_UNORM_KHR = VK_FORMAT_G8B8G8R8_422_UNORM, VK_FORMAT_B8G8R8G8_422_UNORM_KHR = VK_FORMAT_B8G8R8G8_422_UNORM, VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR = VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM, @@ -793,40 +1607,35 @@ typedef enum VkFormat { VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM, VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR = VK_FORMAT_G16_B16R16_2PLANE_422_UNORM, VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM, - VK_FORMAT_BEGIN_RANGE = VK_FORMAT_UNDEFINED, - VK_FORMAT_END_RANGE = VK_FORMAT_ASTC_12x12_SRGB_BLOCK, - VK_FORMAT_RANGE_SIZE = (VK_FORMAT_ASTC_12x12_SRGB_BLOCK - VK_FORMAT_UNDEFINED + 1), + VK_FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT = VK_FORMAT_G8_B8R8_2PLANE_444_UNORM, + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16, + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16, + VK_FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT = VK_FORMAT_G16_B16R16_2PLANE_444_UNORM, + VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = VK_FORMAT_A4R4G4B4_UNORM_PACK16, + VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = VK_FORMAT_A4B4G4R4_UNORM_PACK16, VK_FORMAT_MAX_ENUM = 0x7FFFFFFF } VkFormat; +typedef enum VkImageTiling { + VK_IMAGE_TILING_OPTIMAL = 0, + VK_IMAGE_TILING_LINEAR = 1, + VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000, + VK_IMAGE_TILING_MAX_ENUM = 0x7FFFFFFF +} VkImageTiling; + typedef enum VkImageType { VK_IMAGE_TYPE_1D = 0, VK_IMAGE_TYPE_2D = 1, VK_IMAGE_TYPE_3D = 2, - VK_IMAGE_TYPE_BEGIN_RANGE = VK_IMAGE_TYPE_1D, - VK_IMAGE_TYPE_END_RANGE = VK_IMAGE_TYPE_3D, - VK_IMAGE_TYPE_RANGE_SIZE = (VK_IMAGE_TYPE_3D - VK_IMAGE_TYPE_1D + 1), VK_IMAGE_TYPE_MAX_ENUM = 0x7FFFFFFF } VkImageType; -typedef enum VkImageTiling { - VK_IMAGE_TILING_OPTIMAL = 0, - VK_IMAGE_TILING_LINEAR = 1, - VK_IMAGE_TILING_BEGIN_RANGE = VK_IMAGE_TILING_OPTIMAL, - VK_IMAGE_TILING_END_RANGE = VK_IMAGE_TILING_LINEAR, - VK_IMAGE_TILING_RANGE_SIZE = (VK_IMAGE_TILING_LINEAR - VK_IMAGE_TILING_OPTIMAL + 1), - VK_IMAGE_TILING_MAX_ENUM = 0x7FFFFFFF -} VkImageTiling; - typedef enum VkPhysicalDeviceType { VK_PHYSICAL_DEVICE_TYPE_OTHER = 0, VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2, VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3, VK_PHYSICAL_DEVICE_TYPE_CPU = 4, - VK_PHYSICAL_DEVICE_TYPE_BEGIN_RANGE = VK_PHYSICAL_DEVICE_TYPE_OTHER, - VK_PHYSICAL_DEVICE_TYPE_END_RANGE = VK_PHYSICAL_DEVICE_TYPE_CPU, - VK_PHYSICAL_DEVICE_TYPE_RANGE_SIZE = (VK_PHYSICAL_DEVICE_TYPE_CPU - VK_PHYSICAL_DEVICE_TYPE_OTHER + 1), VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 0x7FFFFFFF } VkPhysicalDeviceType; @@ -834,59 +1643,31 @@ typedef enum VkQueryType { VK_QUERY_TYPE_OCCLUSION = 0, VK_QUERY_TYPE_PIPELINE_STATISTICS = 1, VK_QUERY_TYPE_TIMESTAMP = 2, - VK_QUERY_TYPE_COMPACTED_SIZE_NVX = 1000165000, - VK_QUERY_TYPE_BEGIN_RANGE = VK_QUERY_TYPE_OCCLUSION, - VK_QUERY_TYPE_END_RANGE = VK_QUERY_TYPE_TIMESTAMP, - VK_QUERY_TYPE_RANGE_SIZE = (VK_QUERY_TYPE_TIMESTAMP - VK_QUERY_TYPE_OCCLUSION + 1), + VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR = 1000023000, + VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004, + VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000, + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000150000, + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150001, + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000, + VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR = 1000299000, +#endif + VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT = 1000328000, + VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT = 1000382000, + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR = 1000386000, + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR = 1000386001, + VK_QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT = 1000396000, + VK_QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT = 1000396001, VK_QUERY_TYPE_MAX_ENUM = 0x7FFFFFFF } VkQueryType; typedef enum VkSharingMode { VK_SHARING_MODE_EXCLUSIVE = 0, VK_SHARING_MODE_CONCURRENT = 1, - VK_SHARING_MODE_BEGIN_RANGE = VK_SHARING_MODE_EXCLUSIVE, - VK_SHARING_MODE_END_RANGE = VK_SHARING_MODE_CONCURRENT, - VK_SHARING_MODE_RANGE_SIZE = (VK_SHARING_MODE_CONCURRENT - VK_SHARING_MODE_EXCLUSIVE + 1), VK_SHARING_MODE_MAX_ENUM = 0x7FFFFFFF } VkSharingMode; -typedef enum VkImageLayout { - VK_IMAGE_LAYOUT_UNDEFINED = 0, - VK_IMAGE_LAYOUT_GENERAL = 1, - VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2, - VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3, - VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4, - VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5, - VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6, - VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7, - VK_IMAGE_LAYOUT_PREINITIALIZED = 8, - VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000, - VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001, - VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002, - VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000, - VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003, - VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL, - VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL, - VK_IMAGE_LAYOUT_BEGIN_RANGE = VK_IMAGE_LAYOUT_UNDEFINED, - VK_IMAGE_LAYOUT_END_RANGE = VK_IMAGE_LAYOUT_PREINITIALIZED, - VK_IMAGE_LAYOUT_RANGE_SIZE = (VK_IMAGE_LAYOUT_PREINITIALIZED - VK_IMAGE_LAYOUT_UNDEFINED + 1), - VK_IMAGE_LAYOUT_MAX_ENUM = 0x7FFFFFFF -} VkImageLayout; - -typedef enum VkImageViewType { - VK_IMAGE_VIEW_TYPE_1D = 0, - VK_IMAGE_VIEW_TYPE_2D = 1, - VK_IMAGE_VIEW_TYPE_3D = 2, - VK_IMAGE_VIEW_TYPE_CUBE = 3, - VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4, - VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5, - VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6, - VK_IMAGE_VIEW_TYPE_BEGIN_RANGE = VK_IMAGE_VIEW_TYPE_1D, - VK_IMAGE_VIEW_TYPE_END_RANGE = VK_IMAGE_VIEW_TYPE_CUBE_ARRAY, - VK_IMAGE_VIEW_TYPE_RANGE_SIZE = (VK_IMAGE_VIEW_TYPE_CUBE_ARRAY - VK_IMAGE_VIEW_TYPE_1D + 1), - VK_IMAGE_VIEW_TYPE_MAX_ENUM = 0x7FFFFFFF -} VkImageViewType; - typedef enum VkComponentSwizzle { VK_COMPONENT_SWIZZLE_IDENTITY = 0, VK_COMPONENT_SWIZZLE_ZERO = 1, @@ -895,111 +1676,19 @@ typedef enum VkComponentSwizzle { VK_COMPONENT_SWIZZLE_G = 4, VK_COMPONENT_SWIZZLE_B = 5, VK_COMPONENT_SWIZZLE_A = 6, - VK_COMPONENT_SWIZZLE_BEGIN_RANGE = VK_COMPONENT_SWIZZLE_IDENTITY, - VK_COMPONENT_SWIZZLE_END_RANGE = VK_COMPONENT_SWIZZLE_A, - VK_COMPONENT_SWIZZLE_RANGE_SIZE = (VK_COMPONENT_SWIZZLE_A - VK_COMPONENT_SWIZZLE_IDENTITY + 1), VK_COMPONENT_SWIZZLE_MAX_ENUM = 0x7FFFFFFF } VkComponentSwizzle; -typedef enum VkVertexInputRate { - VK_VERTEX_INPUT_RATE_VERTEX = 0, - VK_VERTEX_INPUT_RATE_INSTANCE = 1, - VK_VERTEX_INPUT_RATE_BEGIN_RANGE = VK_VERTEX_INPUT_RATE_VERTEX, - VK_VERTEX_INPUT_RATE_END_RANGE = VK_VERTEX_INPUT_RATE_INSTANCE, - VK_VERTEX_INPUT_RATE_RANGE_SIZE = (VK_VERTEX_INPUT_RATE_INSTANCE - VK_VERTEX_INPUT_RATE_VERTEX + 1), - VK_VERTEX_INPUT_RATE_MAX_ENUM = 0x7FFFFFFF -} VkVertexInputRate; - -typedef enum VkPrimitiveTopology { - VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0, - VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1, - VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2, - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3, - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4, - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5, - VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6, - VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7, - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8, - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9, - VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10, - VK_PRIMITIVE_TOPOLOGY_BEGIN_RANGE = VK_PRIMITIVE_TOPOLOGY_POINT_LIST, - VK_PRIMITIVE_TOPOLOGY_END_RANGE = VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, - VK_PRIMITIVE_TOPOLOGY_RANGE_SIZE = (VK_PRIMITIVE_TOPOLOGY_PATCH_LIST - VK_PRIMITIVE_TOPOLOGY_POINT_LIST + 1), - VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 0x7FFFFFFF -} VkPrimitiveTopology; - -typedef enum VkPolygonMode { - VK_POLYGON_MODE_FILL = 0, - VK_POLYGON_MODE_LINE = 1, - VK_POLYGON_MODE_POINT = 2, - VK_POLYGON_MODE_FILL_RECTANGLE_NV = 1000153000, - VK_POLYGON_MODE_BEGIN_RANGE = VK_POLYGON_MODE_FILL, - VK_POLYGON_MODE_END_RANGE = VK_POLYGON_MODE_POINT, - VK_POLYGON_MODE_RANGE_SIZE = (VK_POLYGON_MODE_POINT - VK_POLYGON_MODE_FILL + 1), - VK_POLYGON_MODE_MAX_ENUM = 0x7FFFFFFF -} VkPolygonMode; - -typedef enum VkFrontFace { - VK_FRONT_FACE_COUNTER_CLOCKWISE = 0, - VK_FRONT_FACE_CLOCKWISE = 1, - VK_FRONT_FACE_BEGIN_RANGE = VK_FRONT_FACE_COUNTER_CLOCKWISE, - VK_FRONT_FACE_END_RANGE = VK_FRONT_FACE_CLOCKWISE, - VK_FRONT_FACE_RANGE_SIZE = (VK_FRONT_FACE_CLOCKWISE - VK_FRONT_FACE_COUNTER_CLOCKWISE + 1), - VK_FRONT_FACE_MAX_ENUM = 0x7FFFFFFF -} VkFrontFace; - -typedef enum VkCompareOp { - VK_COMPARE_OP_NEVER = 0, - VK_COMPARE_OP_LESS = 1, - VK_COMPARE_OP_EQUAL = 2, - VK_COMPARE_OP_LESS_OR_EQUAL = 3, - VK_COMPARE_OP_GREATER = 4, - VK_COMPARE_OP_NOT_EQUAL = 5, - VK_COMPARE_OP_GREATER_OR_EQUAL = 6, - VK_COMPARE_OP_ALWAYS = 7, - VK_COMPARE_OP_BEGIN_RANGE = VK_COMPARE_OP_NEVER, - VK_COMPARE_OP_END_RANGE = VK_COMPARE_OP_ALWAYS, - VK_COMPARE_OP_RANGE_SIZE = (VK_COMPARE_OP_ALWAYS - VK_COMPARE_OP_NEVER + 1), - VK_COMPARE_OP_MAX_ENUM = 0x7FFFFFFF -} VkCompareOp; - -typedef enum VkStencilOp { - VK_STENCIL_OP_KEEP = 0, - VK_STENCIL_OP_ZERO = 1, - VK_STENCIL_OP_REPLACE = 2, - VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3, - VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4, - VK_STENCIL_OP_INVERT = 5, - VK_STENCIL_OP_INCREMENT_AND_WRAP = 6, - VK_STENCIL_OP_DECREMENT_AND_WRAP = 7, - VK_STENCIL_OP_BEGIN_RANGE = VK_STENCIL_OP_KEEP, - VK_STENCIL_OP_END_RANGE = VK_STENCIL_OP_DECREMENT_AND_WRAP, - VK_STENCIL_OP_RANGE_SIZE = (VK_STENCIL_OP_DECREMENT_AND_WRAP - VK_STENCIL_OP_KEEP + 1), - VK_STENCIL_OP_MAX_ENUM = 0x7FFFFFFF -} VkStencilOp; - -typedef enum VkLogicOp { - VK_LOGIC_OP_CLEAR = 0, - VK_LOGIC_OP_AND = 1, - VK_LOGIC_OP_AND_REVERSE = 2, - VK_LOGIC_OP_COPY = 3, - VK_LOGIC_OP_AND_INVERTED = 4, - VK_LOGIC_OP_NO_OP = 5, - VK_LOGIC_OP_XOR = 6, - VK_LOGIC_OP_OR = 7, - VK_LOGIC_OP_NOR = 8, - VK_LOGIC_OP_EQUIVALENT = 9, - VK_LOGIC_OP_INVERT = 10, - VK_LOGIC_OP_OR_REVERSE = 11, - VK_LOGIC_OP_COPY_INVERTED = 12, - VK_LOGIC_OP_OR_INVERTED = 13, - VK_LOGIC_OP_NAND = 14, - VK_LOGIC_OP_SET = 15, - VK_LOGIC_OP_BEGIN_RANGE = VK_LOGIC_OP_CLEAR, - VK_LOGIC_OP_END_RANGE = VK_LOGIC_OP_SET, - VK_LOGIC_OP_RANGE_SIZE = (VK_LOGIC_OP_SET - VK_LOGIC_OP_CLEAR + 1), - VK_LOGIC_OP_MAX_ENUM = 0x7FFFFFFF -} VkLogicOp; +typedef enum VkImageViewType { + VK_IMAGE_VIEW_TYPE_1D = 0, + VK_IMAGE_VIEW_TYPE_2D = 1, + VK_IMAGE_VIEW_TYPE_3D = 2, + VK_IMAGE_VIEW_TYPE_CUBE = 3, + VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4, + VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5, + VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6, + VK_IMAGE_VIEW_TYPE_MAX_ENUM = 0x7FFFFFFF +} VkImageViewType; typedef enum VkBlendFactor { VK_BLEND_FACTOR_ZERO = 0, @@ -1021,9 +1710,6 @@ typedef enum VkBlendFactor { VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16, VK_BLEND_FACTOR_SRC1_ALPHA = 17, VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18, - VK_BLEND_FACTOR_BEGIN_RANGE = VK_BLEND_FACTOR_ZERO, - VK_BLEND_FACTOR_END_RANGE = VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA, - VK_BLEND_FACTOR_RANGE_SIZE = (VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA - VK_BLEND_FACTOR_ZERO + 1), VK_BLEND_FACTOR_MAX_ENUM = 0x7FFFFFFF } VkBlendFactor; @@ -1079,12 +1765,21 @@ typedef enum VkBlendOp { VK_BLEND_OP_RED_EXT = 1000148043, VK_BLEND_OP_GREEN_EXT = 1000148044, VK_BLEND_OP_BLUE_EXT = 1000148045, - VK_BLEND_OP_BEGIN_RANGE = VK_BLEND_OP_ADD, - VK_BLEND_OP_END_RANGE = VK_BLEND_OP_MAX, - VK_BLEND_OP_RANGE_SIZE = (VK_BLEND_OP_MAX - VK_BLEND_OP_ADD + 1), VK_BLEND_OP_MAX_ENUM = 0x7FFFFFFF } VkBlendOp; +typedef enum VkCompareOp { + VK_COMPARE_OP_NEVER = 0, + VK_COMPARE_OP_LESS = 1, + VK_COMPARE_OP_EQUAL = 2, + VK_COMPARE_OP_LESS_OR_EQUAL = 3, + VK_COMPARE_OP_GREATER = 4, + VK_COMPARE_OP_NOT_EQUAL = 5, + VK_COMPARE_OP_GREATER_OR_EQUAL = 6, + VK_COMPARE_OP_ALWAYS = 7, + VK_COMPARE_OP_MAX_ENUM = 0x7FFFFFFF +} VkCompareOp; + typedef enum VkDynamicState { VK_DYNAMIC_STATE_VIEWPORT = 0, VK_DYNAMIC_STATE_SCISSOR = 1, @@ -1095,48 +1790,152 @@ typedef enum VkDynamicState { VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6, VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7, VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8, + VK_DYNAMIC_STATE_CULL_MODE = 1000267000, + VK_DYNAMIC_STATE_FRONT_FACE = 1000267001, + VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY = 1000267002, + VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT = 1000267003, + VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT = 1000267004, + VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE = 1000267005, + VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE = 1000267006, + VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE = 1000267007, + VK_DYNAMIC_STATE_DEPTH_COMPARE_OP = 1000267008, + VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE = 1000267009, + VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE = 1000267010, + VK_DYNAMIC_STATE_STENCIL_OP = 1000267011, + VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE = 1000377001, + VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE = 1000377002, + VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE = 1000377004, VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000, VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000, + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT = 1000099001, + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT = 1000099002, VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = 1000143000, + VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR = 1000347000, VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004, VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006, + VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV = 1000205000, VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001, - VK_DYNAMIC_STATE_BEGIN_RANGE = VK_DYNAMIC_STATE_VIEWPORT, - VK_DYNAMIC_STATE_END_RANGE = VK_DYNAMIC_STATE_STENCIL_REFERENCE, - VK_DYNAMIC_STATE_RANGE_SIZE = (VK_DYNAMIC_STATE_STENCIL_REFERENCE - VK_DYNAMIC_STATE_VIEWPORT + 1), + VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR = 1000226000, + VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000, + VK_DYNAMIC_STATE_VERTEX_INPUT_EXT = 1000352000, + VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT = 1000377000, + VK_DYNAMIC_STATE_LOGIC_OP_EXT = 1000377003, + VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT = 1000381000, + VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT = 1000455002, + VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT = 1000455003, + VK_DYNAMIC_STATE_POLYGON_MODE_EXT = 1000455004, + VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT = 1000455005, + VK_DYNAMIC_STATE_SAMPLE_MASK_EXT = 1000455006, + VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT = 1000455007, + VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT = 1000455008, + VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT = 1000455009, + VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT = 1000455010, + VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT = 1000455011, + VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT = 1000455012, + VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT = 1000455013, + VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT = 1000455014, + VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT = 1000455015, + VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT = 1000455016, + VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT = 1000455017, + VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT = 1000455018, + VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT = 1000455019, + VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT = 1000455020, + VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT = 1000455021, + VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT = 1000455022, + VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV = 1000455023, + VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV = 1000455024, + VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV = 1000455025, + VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV = 1000455026, + VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV = 1000455027, + VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV = 1000455028, + VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV = 1000455029, + VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV = 1000455030, + VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV = 1000455031, + VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV = 1000455032, + VK_DYNAMIC_STATE_CULL_MODE_EXT = VK_DYNAMIC_STATE_CULL_MODE, + VK_DYNAMIC_STATE_FRONT_FACE_EXT = VK_DYNAMIC_STATE_FRONT_FACE, + VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY, + VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT, + VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT, + VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE, + VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE, + VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE, + VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = VK_DYNAMIC_STATE_DEPTH_COMPARE_OP, + VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE, + VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE, + VK_DYNAMIC_STATE_STENCIL_OP_EXT = VK_DYNAMIC_STATE_STENCIL_OP, + VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT = VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE, + VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT = VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE, + VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT = VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE, VK_DYNAMIC_STATE_MAX_ENUM = 0x7FFFFFFF } VkDynamicState; -typedef enum VkFilter { - VK_FILTER_NEAREST = 0, - VK_FILTER_LINEAR = 1, - VK_FILTER_CUBIC_IMG = 1000015000, - VK_FILTER_BEGIN_RANGE = VK_FILTER_NEAREST, - VK_FILTER_END_RANGE = VK_FILTER_LINEAR, - VK_FILTER_RANGE_SIZE = (VK_FILTER_LINEAR - VK_FILTER_NEAREST + 1), - VK_FILTER_MAX_ENUM = 0x7FFFFFFF -} VkFilter; +typedef enum VkFrontFace { + VK_FRONT_FACE_COUNTER_CLOCKWISE = 0, + VK_FRONT_FACE_CLOCKWISE = 1, + VK_FRONT_FACE_MAX_ENUM = 0x7FFFFFFF +} VkFrontFace; -typedef enum VkSamplerMipmapMode { - VK_SAMPLER_MIPMAP_MODE_NEAREST = 0, - VK_SAMPLER_MIPMAP_MODE_LINEAR = 1, - VK_SAMPLER_MIPMAP_MODE_BEGIN_RANGE = VK_SAMPLER_MIPMAP_MODE_NEAREST, - VK_SAMPLER_MIPMAP_MODE_END_RANGE = VK_SAMPLER_MIPMAP_MODE_LINEAR, - VK_SAMPLER_MIPMAP_MODE_RANGE_SIZE = (VK_SAMPLER_MIPMAP_MODE_LINEAR - VK_SAMPLER_MIPMAP_MODE_NEAREST + 1), - VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 0x7FFFFFFF -} VkSamplerMipmapMode; +typedef enum VkVertexInputRate { + VK_VERTEX_INPUT_RATE_VERTEX = 0, + VK_VERTEX_INPUT_RATE_INSTANCE = 1, + VK_VERTEX_INPUT_RATE_MAX_ENUM = 0x7FFFFFFF +} VkVertexInputRate; -typedef enum VkSamplerAddressMode { - VK_SAMPLER_ADDRESS_MODE_REPEAT = 0, - VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1, - VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2, - VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3, - VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4, - VK_SAMPLER_ADDRESS_MODE_BEGIN_RANGE = VK_SAMPLER_ADDRESS_MODE_REPEAT, - VK_SAMPLER_ADDRESS_MODE_END_RANGE = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER, - VK_SAMPLER_ADDRESS_MODE_RANGE_SIZE = (VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER - VK_SAMPLER_ADDRESS_MODE_REPEAT + 1), - VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 0x7FFFFFFF -} VkSamplerAddressMode; +typedef enum VkPrimitiveTopology { + VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0, + VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1, + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2, + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3, + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4, + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5, + VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6, + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7, + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8, + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9, + VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10, + VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 0x7FFFFFFF +} VkPrimitiveTopology; + +typedef enum VkPolygonMode { + VK_POLYGON_MODE_FILL = 0, + VK_POLYGON_MODE_LINE = 1, + VK_POLYGON_MODE_POINT = 2, + VK_POLYGON_MODE_FILL_RECTANGLE_NV = 1000153000, + VK_POLYGON_MODE_MAX_ENUM = 0x7FFFFFFF +} VkPolygonMode; + +typedef enum VkStencilOp { + VK_STENCIL_OP_KEEP = 0, + VK_STENCIL_OP_ZERO = 1, + VK_STENCIL_OP_REPLACE = 2, + VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3, + VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4, + VK_STENCIL_OP_INVERT = 5, + VK_STENCIL_OP_INCREMENT_AND_WRAP = 6, + VK_STENCIL_OP_DECREMENT_AND_WRAP = 7, + VK_STENCIL_OP_MAX_ENUM = 0x7FFFFFFF +} VkStencilOp; + +typedef enum VkLogicOp { + VK_LOGIC_OP_CLEAR = 0, + VK_LOGIC_OP_AND = 1, + VK_LOGIC_OP_AND_REVERSE = 2, + VK_LOGIC_OP_COPY = 3, + VK_LOGIC_OP_AND_INVERTED = 4, + VK_LOGIC_OP_NO_OP = 5, + VK_LOGIC_OP_XOR = 6, + VK_LOGIC_OP_OR = 7, + VK_LOGIC_OP_NOR = 8, + VK_LOGIC_OP_EQUIVALENT = 9, + VK_LOGIC_OP_INVERT = 10, + VK_LOGIC_OP_OR_REVERSE = 11, + VK_LOGIC_OP_COPY_INVERTED = 12, + VK_LOGIC_OP_OR_INVERTED = 13, + VK_LOGIC_OP_NAND = 14, + VK_LOGIC_OP_SET = 15, + VK_LOGIC_OP_MAX_ENUM = 0x7FFFFFFF +} VkLogicOp; typedef enum VkBorderColor { VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0, @@ -1145,12 +1944,35 @@ typedef enum VkBorderColor { VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3, VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4, VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5, - VK_BORDER_COLOR_BEGIN_RANGE = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK, - VK_BORDER_COLOR_END_RANGE = VK_BORDER_COLOR_INT_OPAQUE_WHITE, - VK_BORDER_COLOR_RANGE_SIZE = (VK_BORDER_COLOR_INT_OPAQUE_WHITE - VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK + 1), + VK_BORDER_COLOR_FLOAT_CUSTOM_EXT = 1000287003, + VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004, VK_BORDER_COLOR_MAX_ENUM = 0x7FFFFFFF } VkBorderColor; +typedef enum VkFilter { + VK_FILTER_NEAREST = 0, + VK_FILTER_LINEAR = 1, + VK_FILTER_CUBIC_EXT = 1000015000, + VK_FILTER_CUBIC_IMG = VK_FILTER_CUBIC_EXT, + VK_FILTER_MAX_ENUM = 0x7FFFFFFF +} VkFilter; + +typedef enum VkSamplerAddressMode { + VK_SAMPLER_ADDRESS_MODE_REPEAT = 0, + VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1, + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2, + VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3, + VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4, + VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHR = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE, + VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 0x7FFFFFFF +} VkSamplerAddressMode; + +typedef enum VkSamplerMipmapMode { + VK_SAMPLER_MIPMAP_MODE_NEAREST = 0, + VK_SAMPLER_MIPMAP_MODE_LINEAR = 1, + VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 0x7FFFFFFF +} VkSamplerMipmapMode; + typedef enum VkDescriptorType { VK_DESCRIPTOR_TYPE_SAMPLER = 0, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1, @@ -1163,11 +1985,14 @@ typedef enum VkDescriptorType { VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9, VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10, - VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000, - VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NVX = 1000165000, - VK_DESCRIPTOR_TYPE_BEGIN_RANGE = VK_DESCRIPTOR_TYPE_SAMPLER, - VK_DESCRIPTOR_TYPE_END_RANGE = VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, - VK_DESCRIPTOR_TYPE_RANGE_SIZE = (VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT - VK_DESCRIPTOR_TYPE_SAMPLER + 1), + VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK = 1000138000, + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000150000, + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000, + VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM = 1000440000, + VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM = 1000440001, + VK_DESCRIPTOR_TYPE_MUTABLE_EXT = 1000351000, + VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK, + VK_DESCRIPTOR_TYPE_MUTABLE_VALVE = VK_DESCRIPTOR_TYPE_MUTABLE_EXT, VK_DESCRIPTOR_TYPE_MAX_ENUM = 0x7FFFFFFF } VkDescriptorType; @@ -1175,116 +2000,108 @@ typedef enum VkAttachmentLoadOp { VK_ATTACHMENT_LOAD_OP_LOAD = 0, VK_ATTACHMENT_LOAD_OP_CLEAR = 1, VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2, - VK_ATTACHMENT_LOAD_OP_BEGIN_RANGE = VK_ATTACHMENT_LOAD_OP_LOAD, - VK_ATTACHMENT_LOAD_OP_END_RANGE = VK_ATTACHMENT_LOAD_OP_DONT_CARE, - VK_ATTACHMENT_LOAD_OP_RANGE_SIZE = (VK_ATTACHMENT_LOAD_OP_DONT_CARE - VK_ATTACHMENT_LOAD_OP_LOAD + 1), + VK_ATTACHMENT_LOAD_OP_NONE_EXT = 1000400000, VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 0x7FFFFFFF } VkAttachmentLoadOp; typedef enum VkAttachmentStoreOp { VK_ATTACHMENT_STORE_OP_STORE = 0, VK_ATTACHMENT_STORE_OP_DONT_CARE = 1, - VK_ATTACHMENT_STORE_OP_BEGIN_RANGE = VK_ATTACHMENT_STORE_OP_STORE, - VK_ATTACHMENT_STORE_OP_END_RANGE = VK_ATTACHMENT_STORE_OP_DONT_CARE, - VK_ATTACHMENT_STORE_OP_RANGE_SIZE = (VK_ATTACHMENT_STORE_OP_DONT_CARE - VK_ATTACHMENT_STORE_OP_STORE + 1), + VK_ATTACHMENT_STORE_OP_NONE = 1000301000, + VK_ATTACHMENT_STORE_OP_NONE_KHR = VK_ATTACHMENT_STORE_OP_NONE, + VK_ATTACHMENT_STORE_OP_NONE_QCOM = VK_ATTACHMENT_STORE_OP_NONE, + VK_ATTACHMENT_STORE_OP_NONE_EXT = VK_ATTACHMENT_STORE_OP_NONE, VK_ATTACHMENT_STORE_OP_MAX_ENUM = 0x7FFFFFFF } VkAttachmentStoreOp; typedef enum VkPipelineBindPoint { VK_PIPELINE_BIND_POINT_GRAPHICS = 0, VK_PIPELINE_BIND_POINT_COMPUTE = 1, - VK_PIPELINE_BIND_POINT_RAYTRACING_NVX = 1000165000, - VK_PIPELINE_BIND_POINT_BEGIN_RANGE = VK_PIPELINE_BIND_POINT_GRAPHICS, - VK_PIPELINE_BIND_POINT_END_RANGE = VK_PIPELINE_BIND_POINT_COMPUTE, - VK_PIPELINE_BIND_POINT_RANGE_SIZE = (VK_PIPELINE_BIND_POINT_COMPUTE - VK_PIPELINE_BIND_POINT_GRAPHICS + 1), + VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000, + VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI = 1000369003, + VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR, VK_PIPELINE_BIND_POINT_MAX_ENUM = 0x7FFFFFFF } VkPipelineBindPoint; typedef enum VkCommandBufferLevel { VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0, VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1, - VK_COMMAND_BUFFER_LEVEL_BEGIN_RANGE = VK_COMMAND_BUFFER_LEVEL_PRIMARY, - VK_COMMAND_BUFFER_LEVEL_END_RANGE = VK_COMMAND_BUFFER_LEVEL_SECONDARY, - VK_COMMAND_BUFFER_LEVEL_RANGE_SIZE = (VK_COMMAND_BUFFER_LEVEL_SECONDARY - VK_COMMAND_BUFFER_LEVEL_PRIMARY + 1), VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 0x7FFFFFFF } VkCommandBufferLevel; typedef enum VkIndexType { VK_INDEX_TYPE_UINT16 = 0, VK_INDEX_TYPE_UINT32 = 1, - VK_INDEX_TYPE_BEGIN_RANGE = VK_INDEX_TYPE_UINT16, - VK_INDEX_TYPE_END_RANGE = VK_INDEX_TYPE_UINT32, - VK_INDEX_TYPE_RANGE_SIZE = (VK_INDEX_TYPE_UINT32 - VK_INDEX_TYPE_UINT16 + 1), + VK_INDEX_TYPE_NONE_KHR = 1000165000, + VK_INDEX_TYPE_UINT8_EXT = 1000265000, + VK_INDEX_TYPE_NONE_NV = VK_INDEX_TYPE_NONE_KHR, VK_INDEX_TYPE_MAX_ENUM = 0x7FFFFFFF } VkIndexType; typedef enum VkSubpassContents { VK_SUBPASS_CONTENTS_INLINE = 0, VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1, - VK_SUBPASS_CONTENTS_BEGIN_RANGE = VK_SUBPASS_CONTENTS_INLINE, - VK_SUBPASS_CONTENTS_END_RANGE = VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS, - VK_SUBPASS_CONTENTS_RANGE_SIZE = (VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS - VK_SUBPASS_CONTENTS_INLINE + 1), VK_SUBPASS_CONTENTS_MAX_ENUM = 0x7FFFFFFF } VkSubpassContents; -typedef enum VkObjectType { - VK_OBJECT_TYPE_UNKNOWN = 0, - VK_OBJECT_TYPE_INSTANCE = 1, - VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2, - VK_OBJECT_TYPE_DEVICE = 3, - VK_OBJECT_TYPE_QUEUE = 4, - VK_OBJECT_TYPE_SEMAPHORE = 5, - VK_OBJECT_TYPE_COMMAND_BUFFER = 6, - VK_OBJECT_TYPE_FENCE = 7, - VK_OBJECT_TYPE_DEVICE_MEMORY = 8, - VK_OBJECT_TYPE_BUFFER = 9, - VK_OBJECT_TYPE_IMAGE = 10, - VK_OBJECT_TYPE_EVENT = 11, - VK_OBJECT_TYPE_QUERY_POOL = 12, - VK_OBJECT_TYPE_BUFFER_VIEW = 13, - VK_OBJECT_TYPE_IMAGE_VIEW = 14, - VK_OBJECT_TYPE_SHADER_MODULE = 15, - VK_OBJECT_TYPE_PIPELINE_CACHE = 16, - VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17, - VK_OBJECT_TYPE_RENDER_PASS = 18, - VK_OBJECT_TYPE_PIPELINE = 19, - VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20, - VK_OBJECT_TYPE_SAMPLER = 21, - VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22, - VK_OBJECT_TYPE_DESCRIPTOR_SET = 23, - VK_OBJECT_TYPE_FRAMEBUFFER = 24, - VK_OBJECT_TYPE_COMMAND_POOL = 25, - VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = 1000156000, - VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE = 1000085000, - VK_OBJECT_TYPE_SURFACE_KHR = 1000000000, - VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000, - VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000, - VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001, - VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000, - VK_OBJECT_TYPE_OBJECT_TABLE_NVX = 1000086000, - VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX = 1000086001, - VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000128000, - VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000, - VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NVX = 1000165000, - VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE, - VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION, - VK_OBJECT_TYPE_BEGIN_RANGE = VK_OBJECT_TYPE_UNKNOWN, - VK_OBJECT_TYPE_END_RANGE = VK_OBJECT_TYPE_COMMAND_POOL, - VK_OBJECT_TYPE_RANGE_SIZE = (VK_OBJECT_TYPE_COMMAND_POOL - VK_OBJECT_TYPE_UNKNOWN + 1), - VK_OBJECT_TYPE_MAX_ENUM = 0x7FFFFFFF -} VkObjectType; +typedef enum VkAccessFlagBits { + VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 0x00000001, + VK_ACCESS_INDEX_READ_BIT = 0x00000002, + VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004, + VK_ACCESS_UNIFORM_READ_BIT = 0x00000008, + VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 0x00000010, + VK_ACCESS_SHADER_READ_BIT = 0x00000020, + VK_ACCESS_SHADER_WRITE_BIT = 0x00000040, + VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 0x00000080, + VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100, + VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200, + VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400, + VK_ACCESS_TRANSFER_READ_BIT = 0x00000800, + VK_ACCESS_TRANSFER_WRITE_BIT = 0x00001000, + VK_ACCESS_HOST_READ_BIT = 0x00002000, + VK_ACCESS_HOST_WRITE_BIT = 0x00004000, + VK_ACCESS_MEMORY_READ_BIT = 0x00008000, + VK_ACCESS_MEMORY_WRITE_BIT = 0x00010000, + VK_ACCESS_NONE = 0, + VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 0x02000000, + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 0x04000000, + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 0x08000000, + VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 0x00100000, + VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 0x00080000, + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 0x00200000, + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 0x00400000, + VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 0x01000000, + VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 0x00800000, + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 0x00020000, + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 0x00040000, + VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR, + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR, + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR, + VK_ACCESS_NONE_KHR = VK_ACCESS_NONE, + VK_ACCESS_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkAccessFlagBits; +typedef VkFlags VkAccessFlags; -typedef enum VkVendorId { - VK_VENDOR_ID_VIV = 0x10001, - VK_VENDOR_ID_VSI = 0x10002, - VK_VENDOR_ID_KAZAN = 0x10003, - VK_VENDOR_ID_BEGIN_RANGE = VK_VENDOR_ID_VIV, - VK_VENDOR_ID_END_RANGE = VK_VENDOR_ID_KAZAN, - VK_VENDOR_ID_RANGE_SIZE = (VK_VENDOR_ID_KAZAN - VK_VENDOR_ID_VIV + 1), - VK_VENDOR_ID_MAX_ENUM = 0x7FFFFFFF -} VkVendorId; - -typedef VkFlags VkInstanceCreateFlags; +typedef enum VkImageAspectFlagBits { + VK_IMAGE_ASPECT_COLOR_BIT = 0x00000001, + VK_IMAGE_ASPECT_DEPTH_BIT = 0x00000002, + VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004, + VK_IMAGE_ASPECT_METADATA_BIT = 0x00000008, + VK_IMAGE_ASPECT_PLANE_0_BIT = 0x00000010, + VK_IMAGE_ASPECT_PLANE_1_BIT = 0x00000020, + VK_IMAGE_ASPECT_PLANE_2_BIT = 0x00000040, + VK_IMAGE_ASPECT_NONE = 0, + VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT = 0x00000080, + VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 0x00000100, + VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 0x00000200, + VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 0x00000400, + VK_IMAGE_ASPECT_PLANE_0_BIT_KHR = VK_IMAGE_ASPECT_PLANE_0_BIT, + VK_IMAGE_ASPECT_PLANE_1_BIT_KHR = VK_IMAGE_ASPECT_PLANE_1_BIT, + VK_IMAGE_ASPECT_PLANE_2_BIT_KHR = VK_IMAGE_ASPECT_PLANE_2_BIT, + VK_IMAGE_ASPECT_NONE_KHR = VK_IMAGE_ASPECT_NONE, + VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkImageAspectFlagBits; +typedef VkFlags VkImageAspectFlags; typedef enum VkFormatFeatureFlagBits { VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0x00000001, @@ -1309,10 +2126,23 @@ typedef enum VkFormatFeatureFlagBits { VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 0x00200000, VK_FORMAT_FEATURE_DISJOINT_BIT = 0x00400000, VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 0x00800000, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 0x00002000, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 0x00010000, + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 0x00010000, + VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR = 0x02000000, + VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR = 0x04000000, + VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 0x20000000, + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 0x00002000, + VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x01000000, + VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x40000000, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR = 0x08000000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR = 0x10000000, +#endif + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT, VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT, VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = VK_FORMAT_FEATURE_TRANSFER_DST_BIT, + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT, VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT, VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT, VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT, @@ -1324,20 +2154,6 @@ typedef enum VkFormatFeatureFlagBits { } VkFormatFeatureFlagBits; typedef VkFlags VkFormatFeatureFlags; -typedef enum VkImageUsageFlagBits { - VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 0x00000001, - VK_IMAGE_USAGE_TRANSFER_DST_BIT = 0x00000002, - VK_IMAGE_USAGE_SAMPLED_BIT = 0x00000004, - VK_IMAGE_USAGE_STORAGE_BIT = 0x00000008, - VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 0x00000010, - VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000020, - VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0x00000040, - VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 0x00000080, - VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = 0x00000100, - VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkImageUsageFlagBits; -typedef VkFlags VkImageUsageFlags; - typedef enum VkImageCreateFlagBits { VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 0x00000001, VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002, @@ -1353,6 +2169,11 @@ typedef enum VkImageCreateFlagBits { VK_IMAGE_CREATE_DISJOINT_BIT = 0x00000200, VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV = 0x00002000, VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 0x00001000, + VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 0x00004000, + VK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 0x00010000, + VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT = 0x00040000, + VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT = 0x00020000, + VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM = 0x00008000, VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT, VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT, VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR = VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT, @@ -1375,26 +2196,43 @@ typedef enum VkSampleCountFlagBits { } VkSampleCountFlagBits; typedef VkFlags VkSampleCountFlags; -typedef enum VkQueueFlagBits { - VK_QUEUE_GRAPHICS_BIT = 0x00000001, - VK_QUEUE_COMPUTE_BIT = 0x00000002, - VK_QUEUE_TRANSFER_BIT = 0x00000004, - VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008, - VK_QUEUE_PROTECTED_BIT = 0x00000010, - VK_QUEUE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkQueueFlagBits; -typedef VkFlags VkQueueFlags; +typedef enum VkImageUsageFlagBits { + VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 0x00000001, + VK_IMAGE_USAGE_TRANSFER_DST_BIT = 0x00000002, + VK_IMAGE_USAGE_SAMPLED_BIT = 0x00000004, + VK_IMAGE_USAGE_STORAGE_BIT = 0x00000008, + VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 0x00000010, + VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000020, + VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0x00000040, + VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 0x00000080, + VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR = 0x00000400, + VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR = 0x00000800, + VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR = 0x00001000, + VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x00000200, + VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00000100, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR = 0x00002000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR = 0x00004000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR = 0x00008000, +#endif + VK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 0x00080000, + VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI = 0x00040000, + VK_IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM = 0x00100000, + VK_IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM = 0x00200000, + VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, + VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkImageUsageFlagBits; +typedef VkFlags VkImageUsageFlags; -typedef enum VkMemoryPropertyFlagBits { - VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 0x00000001, - VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0x00000002, - VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 0x00000004, - VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 0x00000008, - VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0x00000010, - VK_MEMORY_PROPERTY_PROTECTED_BIT = 0x00000020, - VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkMemoryPropertyFlagBits; -typedef VkFlags VkMemoryPropertyFlags; +typedef enum VkInstanceCreateFlagBits { + VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR = 0x00000001, + VK_INSTANCE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkInstanceCreateFlagBits; +typedef VkFlags VkInstanceCreateFlags; typedef enum VkMemoryHeapFlagBits { VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 0x00000001, @@ -1403,6 +2241,35 @@ typedef enum VkMemoryHeapFlagBits { VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF } VkMemoryHeapFlagBits; typedef VkFlags VkMemoryHeapFlags; + +typedef enum VkMemoryPropertyFlagBits { + VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 0x00000001, + VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0x00000002, + VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 0x00000004, + VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 0x00000008, + VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0x00000010, + VK_MEMORY_PROPERTY_PROTECTED_BIT = 0x00000020, + VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD = 0x00000040, + VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 0x00000080, + VK_MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV = 0x00000100, + VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkMemoryPropertyFlagBits; +typedef VkFlags VkMemoryPropertyFlags; + +typedef enum VkQueueFlagBits { + VK_QUEUE_GRAPHICS_BIT = 0x00000001, + VK_QUEUE_COMPUTE_BIT = 0x00000002, + VK_QUEUE_TRANSFER_BIT = 0x00000004, + VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008, + VK_QUEUE_PROTECTED_BIT = 0x00000010, + VK_QUEUE_VIDEO_DECODE_BIT_KHR = 0x00000020, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_QUEUE_VIDEO_ENCODE_BIT_KHR = 0x00000040, +#endif + VK_QUEUE_OPTICAL_FLOW_BIT_NV = 0x00000100, + VK_QUEUE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkQueueFlagBits; +typedef VkFlags VkQueueFlags; typedef VkFlags VkDeviceCreateFlags; typedef enum VkDeviceQueueCreateFlagBits { @@ -1429,31 +2296,32 @@ typedef enum VkPipelineStageFlagBits { VK_PIPELINE_STAGE_HOST_BIT = 0x00004000, VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00008000, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00010000, + VK_PIPELINE_STAGE_NONE = 0, + VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT = 0x01000000, VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00040000, - VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX = 0x00020000, - VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 0x00400000, - VK_PIPELINE_STAGE_RAYTRACING_BIT_NVX = 0x00200000, - VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 0x00080000, - VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 0x00100000, + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 0x02000000, + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 0x00200000, + VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 0x00800000, + VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00400000, + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 0x00020000, + VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT = 0x00080000, + VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT = 0x00100000, + VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR, + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, + VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT, + VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT, + VK_PIPELINE_STAGE_NONE_KHR = VK_PIPELINE_STAGE_NONE, VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF } VkPipelineStageFlagBits; typedef VkFlags VkPipelineStageFlags; typedef VkFlags VkMemoryMapFlags; -typedef enum VkImageAspectFlagBits { - VK_IMAGE_ASPECT_COLOR_BIT = 0x00000001, - VK_IMAGE_ASPECT_DEPTH_BIT = 0x00000002, - VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004, - VK_IMAGE_ASPECT_METADATA_BIT = 0x00000008, - VK_IMAGE_ASPECT_PLANE_0_BIT = 0x00000010, - VK_IMAGE_ASPECT_PLANE_1_BIT = 0x00000020, - VK_IMAGE_ASPECT_PLANE_2_BIT = 0x00000040, - VK_IMAGE_ASPECT_PLANE_0_BIT_KHR = VK_IMAGE_ASPECT_PLANE_0_BIT, - VK_IMAGE_ASPECT_PLANE_1_BIT_KHR = VK_IMAGE_ASPECT_PLANE_1_BIT, - VK_IMAGE_ASPECT_PLANE_2_BIT_KHR = VK_IMAGE_ASPECT_PLANE_2_BIT, - VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkImageAspectFlagBits; -typedef VkFlags VkImageAspectFlags; +typedef enum VkSparseMemoryBindFlagBits { + VK_SPARSE_MEMORY_BIND_METADATA_BIT = 0x00000001, + VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkSparseMemoryBindFlagBits; +typedef VkFlags VkSparseMemoryBindFlags; typedef enum VkSparseImageFormatFlagBits { VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 0x00000001, @@ -1463,20 +2331,19 @@ typedef enum VkSparseImageFormatFlagBits { } VkSparseImageFormatFlagBits; typedef VkFlags VkSparseImageFormatFlags; -typedef enum VkSparseMemoryBindFlagBits { - VK_SPARSE_MEMORY_BIND_METADATA_BIT = 0x00000001, - VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkSparseMemoryBindFlagBits; -typedef VkFlags VkSparseMemoryBindFlags; - typedef enum VkFenceCreateFlagBits { VK_FENCE_CREATE_SIGNALED_BIT = 0x00000001, VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF } VkFenceCreateFlagBits; typedef VkFlags VkFenceCreateFlags; typedef VkFlags VkSemaphoreCreateFlags; + +typedef enum VkEventCreateFlagBits { + VK_EVENT_CREATE_DEVICE_ONLY_BIT = 0x00000001, + VK_EVENT_CREATE_DEVICE_ONLY_BIT_KHR = VK_EVENT_CREATE_DEVICE_ONLY_BIT, + VK_EVENT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkEventCreateFlagBits; typedef VkFlags VkEventCreateFlags; -typedef VkFlags VkQueryPoolCreateFlags; typedef enum VkQueryPipelineStatisticFlagBits { VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 0x00000001, @@ -1490,15 +2357,20 @@ typedef enum VkQueryPipelineStatisticFlagBits { VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 0x00000100, VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 0x00000200, VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 0x00000400, + VK_QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXT = 0x00000800, + VK_QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT = 0x00001000, + VK_QUERY_PIPELINE_STATISTIC_CLUSTER_CULLING_SHADER_INVOCATIONS_BIT_HUAWEI = 0x00002000, VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF } VkQueryPipelineStatisticFlagBits; typedef VkFlags VkQueryPipelineStatisticFlags; +typedef VkFlags VkQueryPoolCreateFlags; typedef enum VkQueryResultFlagBits { VK_QUERY_RESULT_64_BIT = 0x00000001, VK_QUERY_RESULT_WAIT_BIT = 0x00000002, VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 0x00000004, VK_QUERY_RESULT_PARTIAL_BIT = 0x00000008, + VK_QUERY_RESULT_WITH_STATUS_BIT_KHR = 0x00000010, VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF } VkQueryResultFlagBits; typedef VkFlags VkQueryResultFlags; @@ -1508,6 +2380,10 @@ typedef enum VkBufferCreateFlagBits { VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002, VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004, VK_BUFFER_CREATE_PROTECTED_BIT = 0x00000008, + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 0x00000010, + VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 0x00000020, + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT, + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT, VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF } VkBufferCreateFlagBits; typedef VkFlags VkBufferCreateFlags; @@ -1522,28 +2398,108 @@ typedef enum VkBufferUsageFlagBits { VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040, VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080, VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100, + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 0x00020000, + VK_BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR = 0x00002000, + VK_BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR = 0x00004000, + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 0x00000800, + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 0x00001000, VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00000200, - VK_BUFFER_USAGE_RAYTRACING_BIT_NVX = 0x00000400, + VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR = 0x00080000, + VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR = 0x00100000, + VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR = 0x00000400, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR = 0x00008000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR = 0x00010000, +#endif + VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT = 0x00200000, + VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT = 0x00400000, + VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT = 0x04000000, + VK_BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT = 0x00800000, + VK_BUFFER_USAGE_MICROMAP_STORAGE_BIT_EXT = 0x01000000, + VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR, + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT, + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT, VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF } VkBufferUsageFlagBits; typedef VkFlags VkBufferUsageFlags; typedef VkFlags VkBufferViewCreateFlags; + +typedef enum VkImageViewCreateFlagBits { + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 0x00000001, + VK_IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 0x00000004, + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 0x00000002, + VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkImageViewCreateFlagBits; typedef VkFlags VkImageViewCreateFlags; typedef VkFlags VkShaderModuleCreateFlags; + +typedef enum VkPipelineCacheCreateFlagBits { + VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT = 0x00000001, + VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT, + VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkPipelineCacheCreateFlagBits; typedef VkFlags VkPipelineCacheCreateFlags; +typedef enum VkColorComponentFlagBits { + VK_COLOR_COMPONENT_R_BIT = 0x00000001, + VK_COLOR_COMPONENT_G_BIT = 0x00000002, + VK_COLOR_COMPONENT_B_BIT = 0x00000004, + VK_COLOR_COMPONENT_A_BIT = 0x00000008, + VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkColorComponentFlagBits; +typedef VkFlags VkColorComponentFlags; + typedef enum VkPipelineCreateFlagBits { VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0x00000001, VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002, VK_PIPELINE_CREATE_DERIVATIVE_BIT = 0x00000004, VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 0x00000008, - VK_PIPELINE_CREATE_DISPATCH_BASE = 0x00000010, - VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NVX = 0x00000020, + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 0x00000010, + VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT = 0x00000100, + VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT = 0x00000200, + VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00200000, + VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 0x00400000, + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 0x00004000, + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 0x00008000, + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 0x00010000, + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 0x00020000, + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 0x00001000, + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 0x00002000, + VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR = 0x00080000, + VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 0x00000020, + VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 0x00000040, + VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 0x00000080, + VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 0x00040000, + VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 0x00000800, + VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT = 0x20000000, + VK_PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT = 0x00800000, + VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT = 0x00000400, + VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV = 0x00100000, + VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 0x02000000, + VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 0x04000000, + VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT = 0x01000000, + VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT = 0x08000000, + VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT = 0x40000000, + VK_PIPELINE_CREATE_DISPATCH_BASE = VK_PIPELINE_CREATE_DISPATCH_BASE_BIT, + VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, + VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT, VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT, VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = VK_PIPELINE_CREATE_DISPATCH_BASE, + VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT, + VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT, VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF } VkPipelineCreateFlagBits; typedef VkFlags VkPipelineCreateFlags; + +typedef enum VkPipelineShaderStageCreateFlagBits { + VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT = 0x00000001, + VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT = 0x00000002, + VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT, + VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT, + VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkPipelineShaderStageCreateFlagBits; typedef VkFlags VkPipelineShaderStageCreateFlags; typedef enum VkShaderStageFlagBits { @@ -1555,21 +2511,26 @@ typedef enum VkShaderStageFlagBits { VK_SHADER_STAGE_COMPUTE_BIT = 0x00000020, VK_SHADER_STAGE_ALL_GRAPHICS = 0x0000001F, VK_SHADER_STAGE_ALL = 0x7FFFFFFF, - VK_SHADER_STAGE_RAYGEN_BIT_NVX = 0x00000100, - VK_SHADER_STAGE_ANY_HIT_BIT_NVX = 0x00000200, - VK_SHADER_STAGE_CLOSEST_HIT_BIT_NVX = 0x00000400, - VK_SHADER_STAGE_MISS_BIT_NVX = 0x00000800, - VK_SHADER_STAGE_INTERSECTION_BIT_NVX = 0x00001000, - VK_SHADER_STAGE_CALLABLE_BIT_NVX = 0x00002000, - VK_SHADER_STAGE_TASK_BIT_NV = 0x00000040, - VK_SHADER_STAGE_MESH_BIT_NV = 0x00000080, + VK_SHADER_STAGE_RAYGEN_BIT_KHR = 0x00000100, + VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 0x00000200, + VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 0x00000400, + VK_SHADER_STAGE_MISS_BIT_KHR = 0x00000800, + VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 0x00001000, + VK_SHADER_STAGE_CALLABLE_BIT_KHR = 0x00002000, + VK_SHADER_STAGE_TASK_BIT_EXT = 0x00000040, + VK_SHADER_STAGE_MESH_BIT_EXT = 0x00000080, + VK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI = 0x00004000, + VK_SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI = 0x00080000, + VK_SHADER_STAGE_RAYGEN_BIT_NV = VK_SHADER_STAGE_RAYGEN_BIT_KHR, + VK_SHADER_STAGE_ANY_HIT_BIT_NV = VK_SHADER_STAGE_ANY_HIT_BIT_KHR, + VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR, + VK_SHADER_STAGE_MISS_BIT_NV = VK_SHADER_STAGE_MISS_BIT_KHR, + VK_SHADER_STAGE_INTERSECTION_BIT_NV = VK_SHADER_STAGE_INTERSECTION_BIT_KHR, + VK_SHADER_STAGE_CALLABLE_BIT_NV = VK_SHADER_STAGE_CALLABLE_BIT_KHR, + VK_SHADER_STAGE_TASK_BIT_NV = VK_SHADER_STAGE_TASK_BIT_EXT, + VK_SHADER_STAGE_MESH_BIT_NV = VK_SHADER_STAGE_MESH_BIT_EXT, VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF } VkShaderStageFlagBits; -typedef VkFlags VkPipelineVertexInputStateCreateFlags; -typedef VkFlags VkPipelineInputAssemblyStateCreateFlags; -typedef VkFlags VkPipelineTessellationStateCreateFlags; -typedef VkFlags VkPipelineViewportStateCreateFlags; -typedef VkFlags VkPipelineRasterizationStateCreateFlags; typedef enum VkCullModeFlagBits { VK_CULL_MODE_NONE = 0, @@ -1579,39 +2540,69 @@ typedef enum VkCullModeFlagBits { VK_CULL_MODE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF } VkCullModeFlagBits; typedef VkFlags VkCullModeFlags; +typedef VkFlags VkPipelineVertexInputStateCreateFlags; +typedef VkFlags VkPipelineInputAssemblyStateCreateFlags; +typedef VkFlags VkPipelineTessellationStateCreateFlags; +typedef VkFlags VkPipelineViewportStateCreateFlags; +typedef VkFlags VkPipelineRasterizationStateCreateFlags; typedef VkFlags VkPipelineMultisampleStateCreateFlags; -typedef VkFlags VkPipelineDepthStencilStateCreateFlags; -typedef VkFlags VkPipelineColorBlendStateCreateFlags; -typedef enum VkColorComponentFlagBits { - VK_COLOR_COMPONENT_R_BIT = 0x00000001, - VK_COLOR_COMPONENT_G_BIT = 0x00000002, - VK_COLOR_COMPONENT_B_BIT = 0x00000004, - VK_COLOR_COMPONENT_A_BIT = 0x00000008, - VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkColorComponentFlagBits; -typedef VkFlags VkColorComponentFlags; +typedef enum VkPipelineDepthStencilStateCreateFlagBits { + VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT = 0x00000001, + VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT = 0x00000002, + VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM = VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT, + VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM = VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT, + VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkPipelineDepthStencilStateCreateFlagBits; +typedef VkFlags VkPipelineDepthStencilStateCreateFlags; + +typedef enum VkPipelineColorBlendStateCreateFlagBits { + VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT = 0x00000001, + VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_ARM = VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT, + VK_PIPELINE_COLOR_BLEND_STATE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkPipelineColorBlendStateCreateFlagBits; +typedef VkFlags VkPipelineColorBlendStateCreateFlags; typedef VkFlags VkPipelineDynamicStateCreateFlags; + +typedef enum VkPipelineLayoutCreateFlagBits { + VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT = 0x00000002, + VK_PIPELINE_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkPipelineLayoutCreateFlagBits; typedef VkFlags VkPipelineLayoutCreateFlags; typedef VkFlags VkShaderStageFlags; -typedef VkFlags VkSamplerCreateFlags; -typedef enum VkDescriptorSetLayoutCreateFlagBits { - VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 0x00000001, - VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = 0x00000002, - VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkDescriptorSetLayoutCreateFlagBits; -typedef VkFlags VkDescriptorSetLayoutCreateFlags; +typedef enum VkSamplerCreateFlagBits { + VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 0x00000001, + VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 0x00000002, + VK_SAMPLER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 0x00000008, + VK_SAMPLER_CREATE_NON_SEAMLESS_CUBE_MAP_BIT_EXT = 0x00000004, + VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM = 0x00000010, + VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkSamplerCreateFlagBits; +typedef VkFlags VkSamplerCreateFlags; typedef enum VkDescriptorPoolCreateFlagBits { VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001, - VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 0x00000002, + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 0x00000002, + VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT = 0x00000004, + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT, + VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE = VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT, VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF } VkDescriptorPoolCreateFlagBits; typedef VkFlags VkDescriptorPoolCreateFlags; typedef VkFlags VkDescriptorPoolResetFlags; -typedef VkFlags VkFramebufferCreateFlags; -typedef VkFlags VkRenderPassCreateFlags; + +typedef enum VkDescriptorSetLayoutCreateFlagBits { + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 0x00000002, + VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 0x00000001, + VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT = 0x00000010, + VK_DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT = 0x00000020, + VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT = 0x00000004, + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT, + VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE = VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT, + VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkDescriptorSetLayoutCreateFlagBits; +typedef VkFlags VkDescriptorSetLayoutCreateFlags; typedef enum VkAttachmentDescriptionFlagBits { VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 0x00000001, @@ -1619,52 +2610,46 @@ typedef enum VkAttachmentDescriptionFlagBits { } VkAttachmentDescriptionFlagBits; typedef VkFlags VkAttachmentDescriptionFlags; -typedef enum VkSubpassDescriptionFlagBits { - VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 0x00000001, - VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 0x00000002, - VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkSubpassDescriptionFlagBits; -typedef VkFlags VkSubpassDescriptionFlags; - -typedef enum VkAccessFlagBits { - VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 0x00000001, - VK_ACCESS_INDEX_READ_BIT = 0x00000002, - VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004, - VK_ACCESS_UNIFORM_READ_BIT = 0x00000008, - VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 0x00000010, - VK_ACCESS_SHADER_READ_BIT = 0x00000020, - VK_ACCESS_SHADER_WRITE_BIT = 0x00000040, - VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 0x00000080, - VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100, - VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200, - VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400, - VK_ACCESS_TRANSFER_READ_BIT = 0x00000800, - VK_ACCESS_TRANSFER_WRITE_BIT = 0x00001000, - VK_ACCESS_HOST_READ_BIT = 0x00002000, - VK_ACCESS_HOST_WRITE_BIT = 0x00004000, - VK_ACCESS_MEMORY_READ_BIT = 0x00008000, - VK_ACCESS_MEMORY_WRITE_BIT = 0x00010000, - VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 0x00100000, - VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX = 0x00020000, - VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX = 0x00040000, - VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 0x00080000, - VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 0x00800000, - VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NVX = 0x00200000, - VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NVX = 0x00400000, - VK_ACCESS_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkAccessFlagBits; -typedef VkFlags VkAccessFlags; - typedef enum VkDependencyFlagBits { VK_DEPENDENCY_BY_REGION_BIT = 0x00000001, VK_DEPENDENCY_DEVICE_GROUP_BIT = 0x00000004, VK_DEPENDENCY_VIEW_LOCAL_BIT = 0x00000002, + VK_DEPENDENCY_FEEDBACK_LOOP_BIT_EXT = 0x00000008, VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR = VK_DEPENDENCY_VIEW_LOCAL_BIT, VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = VK_DEPENDENCY_DEVICE_GROUP_BIT, VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF } VkDependencyFlagBits; typedef VkFlags VkDependencyFlags; +typedef enum VkFramebufferCreateFlagBits { + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 0x00000001, + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT, + VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkFramebufferCreateFlagBits; +typedef VkFlags VkFramebufferCreateFlags; + +typedef enum VkRenderPassCreateFlagBits { + VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 0x00000002, + VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkRenderPassCreateFlagBits; +typedef VkFlags VkRenderPassCreateFlags; + +typedef enum VkSubpassDescriptionFlagBits { + VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 0x00000001, + VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 0x00000002, + VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = 0x00000004, + VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 0x00000008, + VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT = 0x00000010, + VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT = 0x00000020, + VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT = 0x00000040, + VK_SUBPASS_DESCRIPTION_ENABLE_LEGACY_DITHERING_BIT_EXT = 0x00000080, + VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_ARM = VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT, + VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM = VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT, + VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM = VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT, + VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkSubpassDescriptionFlagBits; +typedef VkFlags VkSubpassDescriptionFlags; + typedef enum VkCommandPoolCreateFlagBits { VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 0x00000001, VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 0x00000002, @@ -1702,31 +2687,116 @@ typedef VkFlags VkCommandBufferResetFlags; typedef enum VkStencilFaceFlagBits { VK_STENCIL_FACE_FRONT_BIT = 0x00000001, VK_STENCIL_FACE_BACK_BIT = 0x00000002, - VK_STENCIL_FRONT_AND_BACK = 0x00000003, + VK_STENCIL_FACE_FRONT_AND_BACK = 0x00000003, + VK_STENCIL_FRONT_AND_BACK = VK_STENCIL_FACE_FRONT_AND_BACK, VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF } VkStencilFaceFlagBits; typedef VkFlags VkStencilFaceFlags; +typedef struct VkExtent2D { + uint32_t width; + uint32_t height; +} VkExtent2D; -typedef struct VkApplicationInfo { +typedef struct VkExtent3D { + uint32_t width; + uint32_t height; + uint32_t depth; +} VkExtent3D; + +typedef struct VkOffset2D { + int32_t x; + int32_t y; +} VkOffset2D; + +typedef struct VkOffset3D { + int32_t x; + int32_t y; + int32_t z; +} VkOffset3D; + +typedef struct VkRect2D { + VkOffset2D offset; + VkExtent2D extent; +} VkRect2D; + +typedef struct VkBaseInStructure { + VkStructureType sType; + const struct VkBaseInStructure* pNext; +} VkBaseInStructure; + +typedef struct VkBaseOutStructure { + VkStructureType sType; + struct VkBaseOutStructure* pNext; +} VkBaseOutStructure; + +typedef struct VkBufferMemoryBarrier { VkStructureType sType; const void* pNext; - const char* pApplicationName; - uint32_t applicationVersion; - const char* pEngineName; - uint32_t engineVersion; - uint32_t apiVersion; -} VkApplicationInfo; + VkAccessFlags srcAccessMask; + VkAccessFlags dstAccessMask; + uint32_t srcQueueFamilyIndex; + uint32_t dstQueueFamilyIndex; + VkBuffer buffer; + VkDeviceSize offset; + VkDeviceSize size; +} VkBufferMemoryBarrier; -typedef struct VkInstanceCreateInfo { - VkStructureType sType; - const void* pNext; - VkInstanceCreateFlags flags; - const VkApplicationInfo* pApplicationInfo; - uint32_t enabledLayerCount; - const char* const* ppEnabledLayerNames; - uint32_t enabledExtensionCount; - const char* const* ppEnabledExtensionNames; -} VkInstanceCreateInfo; +typedef struct VkDispatchIndirectCommand { + uint32_t x; + uint32_t y; + uint32_t z; +} VkDispatchIndirectCommand; + +typedef struct VkDrawIndexedIndirectCommand { + uint32_t indexCount; + uint32_t instanceCount; + uint32_t firstIndex; + int32_t vertexOffset; + uint32_t firstInstance; +} VkDrawIndexedIndirectCommand; + +typedef struct VkDrawIndirectCommand { + uint32_t vertexCount; + uint32_t instanceCount; + uint32_t firstVertex; + uint32_t firstInstance; +} VkDrawIndirectCommand; + +typedef struct VkImageSubresourceRange { + VkImageAspectFlags aspectMask; + uint32_t baseMipLevel; + uint32_t levelCount; + uint32_t baseArrayLayer; + uint32_t layerCount; +} VkImageSubresourceRange; + +typedef struct VkImageMemoryBarrier { + VkStructureType sType; + const void* pNext; + VkAccessFlags srcAccessMask; + VkAccessFlags dstAccessMask; + VkImageLayout oldLayout; + VkImageLayout newLayout; + uint32_t srcQueueFamilyIndex; + uint32_t dstQueueFamilyIndex; + VkImage image; + VkImageSubresourceRange subresourceRange; +} VkImageMemoryBarrier; + +typedef struct VkMemoryBarrier { + VkStructureType sType; + const void* pNext; + VkAccessFlags srcAccessMask; + VkAccessFlags dstAccessMask; +} VkMemoryBarrier; + +typedef struct VkPipelineCacheHeaderVersionOne { + uint32_t headerSize; + VkPipelineCacheHeaderVersion headerVersion; + uint32_t vendorID; + uint32_t deviceID; + uint8_t pipelineCacheUUID[VK_UUID_SIZE]; +} VkPipelineCacheHeaderVersionOne; typedef void* (VKAPI_PTR *PFN_vkAllocationFunction)( void* pUserData, @@ -1734,13 +2804,6 @@ typedef void* (VKAPI_PTR *PFN_vkAllocationFunction)( size_t alignment, VkSystemAllocationScope allocationScope); -typedef void* (VKAPI_PTR *PFN_vkReallocationFunction)( - void* pUserData, - void* pOriginal, - size_t size, - size_t alignment, - VkSystemAllocationScope allocationScope); - typedef void (VKAPI_PTR *PFN_vkFreeFunction)( void* pUserData, void* pMemory); @@ -1757,6 +2820,14 @@ typedef void (VKAPI_PTR *PFN_vkInternalFreeNotification)( VkInternalAllocationType allocationType, VkSystemAllocationScope allocationScope); +typedef void* (VKAPI_PTR *PFN_vkReallocationFunction)( + void* pUserData, + void* pOriginal, + size_t size, + size_t alignment, + VkSystemAllocationScope allocationScope); + +typedef void (VKAPI_PTR *PFN_vkVoidFunction)(void); typedef struct VkAllocationCallbacks { void* pUserData; PFN_vkAllocationFunction pfnAllocation; @@ -1766,6 +2837,51 @@ typedef struct VkAllocationCallbacks { PFN_vkInternalFreeNotification pfnInternalFree; } VkAllocationCallbacks; +typedef struct VkApplicationInfo { + VkStructureType sType; + const void* pNext; + const char* pApplicationName; + uint32_t applicationVersion; + const char* pEngineName; + uint32_t engineVersion; + uint32_t apiVersion; +} VkApplicationInfo; + +typedef struct VkFormatProperties { + VkFormatFeatureFlags linearTilingFeatures; + VkFormatFeatureFlags optimalTilingFeatures; + VkFormatFeatureFlags bufferFeatures; +} VkFormatProperties; + +typedef struct VkImageFormatProperties { + VkExtent3D maxExtent; + uint32_t maxMipLevels; + uint32_t maxArrayLayers; + VkSampleCountFlags sampleCounts; + VkDeviceSize maxResourceSize; +} VkImageFormatProperties; + +typedef struct VkInstanceCreateInfo { + VkStructureType sType; + const void* pNext; + VkInstanceCreateFlags flags; + const VkApplicationInfo* pApplicationInfo; + uint32_t enabledLayerCount; + const char* const* ppEnabledLayerNames; + uint32_t enabledExtensionCount; + const char* const* ppEnabledExtensionNames; +} VkInstanceCreateInfo; + +typedef struct VkMemoryHeap { + VkDeviceSize size; + VkMemoryHeapFlags flags; +} VkMemoryHeap; + +typedef struct VkMemoryType { + VkMemoryPropertyFlags propertyFlags; + uint32_t heapIndex; +} VkMemoryType; + typedef struct VkPhysicalDeviceFeatures { VkBool32 robustBufferAccess; VkBool32 fullDrawIndexUint32; @@ -1824,26 +2940,6 @@ typedef struct VkPhysicalDeviceFeatures { VkBool32 inheritedQueries; } VkPhysicalDeviceFeatures; -typedef struct VkFormatProperties { - VkFormatFeatureFlags linearTilingFeatures; - VkFormatFeatureFlags optimalTilingFeatures; - VkFormatFeatureFlags bufferFeatures; -} VkFormatProperties; - -typedef struct VkExtent3D { - uint32_t width; - uint32_t height; - uint32_t depth; -} VkExtent3D; - -typedef struct VkImageFormatProperties { - VkExtent3D maxExtent; - uint32_t maxMipLevels; - uint32_t maxArrayLayers; - VkSampleCountFlags sampleCounts; - VkDeviceSize maxResourceSize; -} VkImageFormatProperties; - typedef struct VkPhysicalDeviceLimits { uint32_t maxImageDimension1D; uint32_t maxImageDimension2D; @@ -1953,6 +3049,13 @@ typedef struct VkPhysicalDeviceLimits { VkDeviceSize nonCoherentAtomSize; } VkPhysicalDeviceLimits; +typedef struct VkPhysicalDeviceMemoryProperties { + uint32_t memoryTypeCount; + VkMemoryType memoryTypes[VK_MAX_MEMORY_TYPES]; + uint32_t memoryHeapCount; + VkMemoryHeap memoryHeaps[VK_MAX_MEMORY_HEAPS]; +} VkPhysicalDeviceMemoryProperties; + typedef struct VkPhysicalDeviceSparseProperties { VkBool32 residencyStandard2DBlockShape; VkBool32 residencyStandard2DMultisampleBlockShape; @@ -1980,24 +3083,6 @@ typedef struct VkQueueFamilyProperties { VkExtent3D minImageTransferGranularity; } VkQueueFamilyProperties; -typedef struct VkMemoryType { - VkMemoryPropertyFlags propertyFlags; - uint32_t heapIndex; -} VkMemoryType; - -typedef struct VkMemoryHeap { - VkDeviceSize size; - VkMemoryHeapFlags flags; -} VkMemoryHeap; - -typedef struct VkPhysicalDeviceMemoryProperties { - uint32_t memoryTypeCount; - VkMemoryType memoryTypes[VK_MAX_MEMORY_TYPES]; - uint32_t memoryHeapCount; - VkMemoryHeap memoryHeaps[VK_MAX_MEMORY_HEAPS]; -} VkPhysicalDeviceMemoryProperties; - -typedef void (VKAPI_PTR *PFN_vkVoidFunction)(void); typedef struct VkDeviceQueueCreateInfo { VkStructureType sType; const void* pNext; @@ -2044,13 +3129,6 @@ typedef struct VkSubmitInfo { const VkSemaphore* pSignalSemaphores; } VkSubmitInfo; -typedef struct VkMemoryAllocateInfo { - VkStructureType sType; - const void* pNext; - VkDeviceSize allocationSize; - uint32_t memoryTypeIndex; -} VkMemoryAllocateInfo; - typedef struct VkMappedMemoryRange { VkStructureType sType; const void* pNext; @@ -2059,26 +3137,19 @@ typedef struct VkMappedMemoryRange { VkDeviceSize size; } VkMappedMemoryRange; +typedef struct VkMemoryAllocateInfo { + VkStructureType sType; + const void* pNext; + VkDeviceSize allocationSize; + uint32_t memoryTypeIndex; +} VkMemoryAllocateInfo; + typedef struct VkMemoryRequirements { VkDeviceSize size; VkDeviceSize alignment; uint32_t memoryTypeBits; } VkMemoryRequirements; -typedef struct VkSparseImageFormatProperties { - VkImageAspectFlags aspectMask; - VkExtent3D imageGranularity; - VkSparseImageFormatFlags flags; -} VkSparseImageFormatProperties; - -typedef struct VkSparseImageMemoryRequirements { - VkSparseImageFormatProperties formatProperties; - uint32_t imageMipTailFirstLod; - VkDeviceSize imageMipTailSize; - VkDeviceSize imageMipTailOffset; - VkDeviceSize imageMipTailStride; -} VkSparseImageMemoryRequirements; - typedef struct VkSparseMemoryBind { VkDeviceSize resourceOffset; VkDeviceSize size; @@ -2105,12 +3176,6 @@ typedef struct VkImageSubresource { uint32_t arrayLayer; } VkImageSubresource; -typedef struct VkOffset3D { - int32_t x; - int32_t y; - int32_t z; -} VkOffset3D; - typedef struct VkSparseImageMemoryBind { VkImageSubresource subresource; VkOffset3D offset; @@ -2141,6 +3206,20 @@ typedef struct VkBindSparseInfo { const VkSemaphore* pSignalSemaphores; } VkBindSparseInfo; +typedef struct VkSparseImageFormatProperties { + VkImageAspectFlags aspectMask; + VkExtent3D imageGranularity; + VkSparseImageFormatFlags flags; +} VkSparseImageFormatProperties; + +typedef struct VkSparseImageMemoryRequirements { + VkSparseImageFormatProperties formatProperties; + uint32_t imageMipTailFirstLod; + VkDeviceSize imageMipTailSize; + VkDeviceSize imageMipTailOffset; + VkDeviceSize imageMipTailStride; +} VkSparseImageMemoryRequirements; + typedef struct VkFenceCreateInfo { VkStructureType sType; const void* pNext; @@ -2222,14 +3301,6 @@ typedef struct VkComponentMapping { VkComponentSwizzle a; } VkComponentMapping; -typedef struct VkImageSubresourceRange { - VkImageAspectFlags aspectMask; - uint32_t baseMipLevel; - uint32_t levelCount; - uint32_t baseArrayLayer; - uint32_t layerCount; -} VkImageSubresourceRange; - typedef struct VkImageViewCreateInfo { VkStructureType sType; const void* pNext; @@ -2280,6 +3351,16 @@ typedef struct VkPipelineShaderStageCreateInfo { const VkSpecializationInfo* pSpecializationInfo; } VkPipelineShaderStageCreateInfo; +typedef struct VkComputePipelineCreateInfo { + VkStructureType sType; + const void* pNext; + VkPipelineCreateFlags flags; + VkPipelineShaderStageCreateInfo stage; + VkPipelineLayout layout; + VkPipeline basePipelineHandle; + int32_t basePipelineIndex; +} VkComputePipelineCreateInfo; + typedef struct VkVertexInputBindingDescription { uint32_t binding; uint32_t stride; @@ -2327,21 +3408,6 @@ typedef struct VkViewport { float maxDepth; } VkViewport; -typedef struct VkOffset2D { - int32_t x; - int32_t y; -} VkOffset2D; - -typedef struct VkExtent2D { - uint32_t width; - uint32_t height; -} VkExtent2D; - -typedef struct VkRect2D { - VkOffset2D offset; - VkExtent2D extent; -} VkRect2D; - typedef struct VkPipelineViewportStateCreateInfo { VkStructureType sType; const void* pNext; @@ -2457,16 +3523,6 @@ typedef struct VkGraphicsPipelineCreateInfo { int32_t basePipelineIndex; } VkGraphicsPipelineCreateInfo; -typedef struct VkComputePipelineCreateInfo { - VkStructureType sType; - const void* pNext; - VkPipelineCreateFlags flags; - VkPipelineShaderStageCreateInfo stage; - VkPipelineLayout layout; - VkPipeline basePipelineHandle; - int32_t basePipelineIndex; -} VkComputePipelineCreateInfo; - typedef struct VkPushConstantRange { VkShaderStageFlags stageFlags; uint32_t offset; @@ -2504,21 +3560,29 @@ typedef struct VkSamplerCreateInfo { VkBool32 unnormalizedCoordinates; } VkSamplerCreateInfo; -typedef struct VkDescriptorSetLayoutBinding { - uint32_t binding; - VkDescriptorType descriptorType; - uint32_t descriptorCount; - VkShaderStageFlags stageFlags; - const VkSampler* pImmutableSamplers; -} VkDescriptorSetLayoutBinding; +typedef struct VkCopyDescriptorSet { + VkStructureType sType; + const void* pNext; + VkDescriptorSet srcSet; + uint32_t srcBinding; + uint32_t srcArrayElement; + VkDescriptorSet dstSet; + uint32_t dstBinding; + uint32_t dstArrayElement; + uint32_t descriptorCount; +} VkCopyDescriptorSet; -typedef struct VkDescriptorSetLayoutCreateInfo { - VkStructureType sType; - const void* pNext; - VkDescriptorSetLayoutCreateFlags flags; - uint32_t bindingCount; - const VkDescriptorSetLayoutBinding* pBindings; -} VkDescriptorSetLayoutCreateInfo; +typedef struct VkDescriptorBufferInfo { + VkBuffer buffer; + VkDeviceSize offset; + VkDeviceSize range; +} VkDescriptorBufferInfo; + +typedef struct VkDescriptorImageInfo { + VkSampler sampler; + VkImageView imageView; + VkImageLayout imageLayout; +} VkDescriptorImageInfo; typedef struct VkDescriptorPoolSize { VkDescriptorType type; @@ -2542,17 +3606,21 @@ typedef struct VkDescriptorSetAllocateInfo { const VkDescriptorSetLayout* pSetLayouts; } VkDescriptorSetAllocateInfo; -typedef struct VkDescriptorImageInfo { - VkSampler sampler; - VkImageView imageView; - VkImageLayout imageLayout; -} VkDescriptorImageInfo; +typedef struct VkDescriptorSetLayoutBinding { + uint32_t binding; + VkDescriptorType descriptorType; + uint32_t descriptorCount; + VkShaderStageFlags stageFlags; + const VkSampler* pImmutableSamplers; +} VkDescriptorSetLayoutBinding; -typedef struct VkDescriptorBufferInfo { - VkBuffer buffer; - VkDeviceSize offset; - VkDeviceSize range; -} VkDescriptorBufferInfo; +typedef struct VkDescriptorSetLayoutCreateInfo { + VkStructureType sType; + const void* pNext; + VkDescriptorSetLayoutCreateFlags flags; + uint32_t bindingCount; + const VkDescriptorSetLayoutBinding* pBindings; +} VkDescriptorSetLayoutCreateInfo; typedef struct VkWriteDescriptorSet { VkStructureType sType; @@ -2567,30 +3635,6 @@ typedef struct VkWriteDescriptorSet { const VkBufferView* pTexelBufferView; } VkWriteDescriptorSet; -typedef struct VkCopyDescriptorSet { - VkStructureType sType; - const void* pNext; - VkDescriptorSet srcSet; - uint32_t srcBinding; - uint32_t srcArrayElement; - VkDescriptorSet dstSet; - uint32_t dstBinding; - uint32_t dstArrayElement; - uint32_t descriptorCount; -} VkCopyDescriptorSet; - -typedef struct VkFramebufferCreateInfo { - VkStructureType sType; - const void* pNext; - VkFramebufferCreateFlags flags; - VkRenderPass renderPass; - uint32_t attachmentCount; - const VkImageView* pAttachments; - uint32_t width; - uint32_t height; - uint32_t layers; -} VkFramebufferCreateInfo; - typedef struct VkAttachmentDescription { VkAttachmentDescriptionFlags flags; VkFormat format; @@ -2608,6 +3652,18 @@ typedef struct VkAttachmentReference { VkImageLayout layout; } VkAttachmentReference; +typedef struct VkFramebufferCreateInfo { + VkStructureType sType; + const void* pNext; + VkFramebufferCreateFlags flags; + VkRenderPass renderPass; + uint32_t attachmentCount; + const VkImageView* pAttachments; + uint32_t width; + uint32_t height; + uint32_t layers; +} VkFramebufferCreateInfo; + typedef struct VkSubpassDescription { VkSubpassDescriptionFlags flags; VkPipelineBindPoint pipelineBindPoint; @@ -2689,21 +3745,6 @@ typedef struct VkImageSubresourceLayers { uint32_t layerCount; } VkImageSubresourceLayers; -typedef struct VkImageCopy { - VkImageSubresourceLayers srcSubresource; - VkOffset3D srcOffset; - VkImageSubresourceLayers dstSubresource; - VkOffset3D dstOffset; - VkExtent3D extent; -} VkImageCopy; - -typedef struct VkImageBlit { - VkImageSubresourceLayers srcSubresource; - VkOffset3D srcOffsets[2]; - VkImageSubresourceLayers dstSubresource; - VkOffset3D dstOffsets[2]; -} VkImageBlit; - typedef struct VkBufferImageCopy { VkDeviceSize bufferOffset; uint32_t bufferRowLength; @@ -2741,6 +3782,21 @@ typedef struct VkClearRect { uint32_t layerCount; } VkClearRect; +typedef struct VkImageBlit { + VkImageSubresourceLayers srcSubresource; + VkOffset3D srcOffsets[2]; + VkImageSubresourceLayers dstSubresource; + VkOffset3D dstOffsets[2]; +} VkImageBlit; + +typedef struct VkImageCopy { + VkImageSubresourceLayers srcSubresource; + VkOffset3D srcOffset; + VkImageSubresourceLayers dstSubresource; + VkOffset3D dstOffset; + VkExtent3D extent; +} VkImageCopy; + typedef struct VkImageResolve { VkImageSubresourceLayers srcSubresource; VkOffset3D srcOffset; @@ -2749,38 +3805,6 @@ typedef struct VkImageResolve { VkExtent3D extent; } VkImageResolve; -typedef struct VkMemoryBarrier { - VkStructureType sType; - const void* pNext; - VkAccessFlags srcAccessMask; - VkAccessFlags dstAccessMask; -} VkMemoryBarrier; - -typedef struct VkBufferMemoryBarrier { - VkStructureType sType; - const void* pNext; - VkAccessFlags srcAccessMask; - VkAccessFlags dstAccessMask; - uint32_t srcQueueFamilyIndex; - uint32_t dstQueueFamilyIndex; - VkBuffer buffer; - VkDeviceSize offset; - VkDeviceSize size; -} VkBufferMemoryBarrier; - -typedef struct VkImageMemoryBarrier { - VkStructureType sType; - const void* pNext; - VkAccessFlags srcAccessMask; - VkAccessFlags dstAccessMask; - VkImageLayout oldLayout; - VkImageLayout newLayout; - uint32_t srcQueueFamilyIndex; - uint32_t dstQueueFamilyIndex; - VkImage image; - VkImageSubresourceRange subresourceRange; -} VkImageMemoryBarrier; - typedef struct VkRenderPassBeginInfo { VkStructureType sType; const void* pNext; @@ -2791,38 +3815,6 @@ typedef struct VkRenderPassBeginInfo { const VkClearValue* pClearValues; } VkRenderPassBeginInfo; -typedef struct VkDispatchIndirectCommand { - uint32_t x; - uint32_t y; - uint32_t z; -} VkDispatchIndirectCommand; - -typedef struct VkDrawIndexedIndirectCommand { - uint32_t indexCount; - uint32_t instanceCount; - uint32_t firstIndex; - int32_t vertexOffset; - uint32_t firstInstance; -} VkDrawIndexedIndirectCommand; - -typedef struct VkDrawIndirectCommand { - uint32_t vertexCount; - uint32_t instanceCount; - uint32_t firstVertex; - uint32_t firstInstance; -} VkDrawIndirectCommand; - -typedef struct VkBaseOutStructure { - VkStructureType sType; - struct VkBaseOutStructure* pNext; -} VkBaseOutStructure; - -typedef struct VkBaseInStructure { - VkStructureType sType; - const struct VkBaseInStructure* pNext; -} VkBaseInStructure; - - typedef VkResult (VKAPI_PTR *PFN_vkCreateInstance)(const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance); typedef void (VKAPI_PTR *PFN_vkDestroyInstance)(VkInstance instance, const VkAllocationCallbacks* pAllocator); typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDevices)(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices); @@ -3760,27 +4752,22 @@ VKAPI_ATTR void VKAPI_CALL vkCmdExecuteCommands( const VkCommandBuffer* pCommandBuffers); #endif + #define VK_VERSION_1_1 1 // Vulkan 1.1 version number -#define VK_API_VERSION_1_1 VK_MAKE_VERSION(1, 1, 0)// Patch version should always be set to 0 - +#define VK_API_VERSION_1_1 VK_MAKE_API_VERSION(0, 1, 1, 0)// Patch version should always be set to 0 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSamplerYcbcrConversion) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorUpdateTemplate) - -#define VK_MAX_DEVICE_GROUP_SIZE 32 -#define VK_LUID_SIZE 8 -#define VK_QUEUE_FAMILY_EXTERNAL (~0U-1) - +#define VK_MAX_DEVICE_GROUP_SIZE 32U +#define VK_LUID_SIZE 8U +#define VK_QUEUE_FAMILY_EXTERNAL (~1U) typedef enum VkPointClippingBehavior { VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = 0, VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = 1, VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR = VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES, VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR = VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY, - VK_POINT_CLIPPING_BEHAVIOR_BEGIN_RANGE = VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES, - VK_POINT_CLIPPING_BEHAVIOR_END_RANGE = VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY, - VK_POINT_CLIPPING_BEHAVIOR_RANGE_SIZE = (VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY - VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES + 1), VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM = 0x7FFFFFFF } VkPointClippingBehavior; @@ -3789,9 +4776,6 @@ typedef enum VkTessellationDomainOrigin { VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = 1, VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR = VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT, VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR = VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT, - VK_TESSELLATION_DOMAIN_ORIGIN_BEGIN_RANGE = VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT, - VK_TESSELLATION_DOMAIN_ORIGIN_END_RANGE = VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT, - VK_TESSELLATION_DOMAIN_ORIGIN_RANGE_SIZE = (VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT - VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT + 1), VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM = 0x7FFFFFFF } VkTessellationDomainOrigin; @@ -3806,9 +4790,6 @@ typedef enum VkSamplerYcbcrModelConversion { VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709, VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601, VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020, - VK_SAMPLER_YCBCR_MODEL_CONVERSION_BEGIN_RANGE = VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY, - VK_SAMPLER_YCBCR_MODEL_CONVERSION_END_RANGE = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020, - VK_SAMPLER_YCBCR_MODEL_CONVERSION_RANGE_SIZE = (VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 - VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY + 1), VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM = 0x7FFFFFFF } VkSamplerYcbcrModelConversion; @@ -3817,9 +4798,6 @@ typedef enum VkSamplerYcbcrRange { VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = 1, VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR = VK_SAMPLER_YCBCR_RANGE_ITU_FULL, VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR = VK_SAMPLER_YCBCR_RANGE_ITU_NARROW, - VK_SAMPLER_YCBCR_RANGE_BEGIN_RANGE = VK_SAMPLER_YCBCR_RANGE_ITU_FULL, - VK_SAMPLER_YCBCR_RANGE_END_RANGE = VK_SAMPLER_YCBCR_RANGE_ITU_NARROW, - VK_SAMPLER_YCBCR_RANGE_RANGE_SIZE = (VK_SAMPLER_YCBCR_RANGE_ITU_NARROW - VK_SAMPLER_YCBCR_RANGE_ITU_FULL + 1), VK_SAMPLER_YCBCR_RANGE_MAX_ENUM = 0x7FFFFFFF } VkSamplerYcbcrRange; @@ -3828,9 +4806,6 @@ typedef enum VkChromaLocation { VK_CHROMA_LOCATION_MIDPOINT = 1, VK_CHROMA_LOCATION_COSITED_EVEN_KHR = VK_CHROMA_LOCATION_COSITED_EVEN, VK_CHROMA_LOCATION_MIDPOINT_KHR = VK_CHROMA_LOCATION_MIDPOINT, - VK_CHROMA_LOCATION_BEGIN_RANGE = VK_CHROMA_LOCATION_COSITED_EVEN, - VK_CHROMA_LOCATION_END_RANGE = VK_CHROMA_LOCATION_MIDPOINT, - VK_CHROMA_LOCATION_RANGE_SIZE = (VK_CHROMA_LOCATION_MIDPOINT - VK_CHROMA_LOCATION_COSITED_EVEN + 1), VK_CHROMA_LOCATION_MAX_ENUM = 0x7FFFFFFF } VkChromaLocation; @@ -3838,13 +4813,9 @@ typedef enum VkDescriptorUpdateTemplateType { VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0, VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1, VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET, - VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_BEGIN_RANGE = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET, - VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_END_RANGE = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET, - VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_RANGE_SIZE = (VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET - VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET + 1), VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM = 0x7FFFFFFF } VkDescriptorUpdateTemplateType; - typedef enum VkSubgroupFeatureFlagBits { VK_SUBGROUP_FEATURE_BASIC_BIT = 0x00000001, VK_SUBGROUP_FEATURE_VOTE_BIT = 0x00000002, @@ -3874,7 +4845,11 @@ typedef VkFlags VkPeerMemoryFeatureFlags; typedef enum VkMemoryAllocateFlagBits { VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 0x00000001, + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 0x00000002, + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 0x00000004, VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT, + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT, + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT, VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF } VkMemoryAllocateFlagBits; typedef VkFlags VkMemoryAllocateFlags; @@ -3893,6 +4868,8 @@ typedef enum VkExternalMemoryHandleTypeFlagBits { VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = 0x00000400, VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = 0x00000080, VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = 0x00000100, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA = 0x00000800, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV = 0x00001000, VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT, VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT, VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT, @@ -3957,6 +4934,8 @@ typedef enum VkExternalSemaphoreHandleTypeFlagBits { VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004, VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = 0x00000008, VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = 0x00000010, + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA = 0x00000080, + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT, VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT, VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT, VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT, @@ -3974,7 +4953,6 @@ typedef enum VkExternalSemaphoreFeatureFlagBits { VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF } VkExternalSemaphoreFeatureFlagBits; typedef VkFlags VkExternalSemaphoreFeatureFlags; - typedef struct VkPhysicalDeviceSubgroupProperties { VkStructureType sType; void* pNext; @@ -4117,8 +5095,6 @@ typedef struct VkMemoryRequirements2 { VkMemoryRequirements memoryRequirements; } VkMemoryRequirements2; -typedef VkMemoryRequirements2 VkMemoryRequirements2KHR; - typedef struct VkSparseImageMemoryRequirements2 { VkStructureType sType; void* pNext; @@ -4244,12 +5220,14 @@ typedef struct VkPhysicalDeviceMultiviewProperties { uint32_t maxMultiviewInstanceIndex; } VkPhysicalDeviceMultiviewProperties; -typedef struct VkPhysicalDeviceVariablePointerFeatures { +typedef struct VkPhysicalDeviceVariablePointersFeatures { VkStructureType sType; void* pNext; VkBool32 variablePointersStorageBuffer; VkBool32 variablePointers; -} VkPhysicalDeviceVariablePointerFeatures; +} VkPhysicalDeviceVariablePointersFeatures; + +typedef VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointerFeatures; typedef struct VkPhysicalDeviceProtectedMemoryFeatures { VkStructureType sType; @@ -4331,7 +5309,7 @@ typedef struct VkDescriptorUpdateTemplateEntry { typedef struct VkDescriptorUpdateTemplateCreateInfo { VkStructureType sType; - void* pNext; + const void* pNext; VkDescriptorUpdateTemplateCreateFlags flags; uint32_t descriptorUpdateEntryCount; const VkDescriptorUpdateTemplateEntry* pDescriptorUpdateEntries; @@ -4455,12 +5433,13 @@ typedef struct VkDescriptorSetLayoutSupport { VkBool32 supported; } VkDescriptorSetLayoutSupport; -typedef struct VkPhysicalDeviceShaderDrawParameterFeatures { +typedef struct VkPhysicalDeviceShaderDrawParametersFeatures { VkStructureType sType; void* pNext; VkBool32 shaderDrawParameters; -} VkPhysicalDeviceShaderDrawParameterFeatures; +} VkPhysicalDeviceShaderDrawParametersFeatures; +typedef VkPhysicalDeviceShaderDrawParametersFeatures VkPhysicalDeviceShaderDrawParameterFeatures; typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceVersion)(uint32_t* pApiVersion); typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory2)(VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos); @@ -4638,18 +5617,1822 @@ VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutSupport( VkDescriptorSetLayoutSupport* pSupport); #endif + +#define VK_VERSION_1_2 1 +// Vulkan 1.2 version number +#define VK_API_VERSION_1_2 VK_MAKE_API_VERSION(0, 1, 2, 0)// Patch version should always be set to 0 + +#define VK_MAX_DRIVER_NAME_SIZE 256U +#define VK_MAX_DRIVER_INFO_SIZE 256U + +typedef enum VkDriverId { + VK_DRIVER_ID_AMD_PROPRIETARY = 1, + VK_DRIVER_ID_AMD_OPEN_SOURCE = 2, + VK_DRIVER_ID_MESA_RADV = 3, + VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4, + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5, + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6, + VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7, + VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8, + VK_DRIVER_ID_ARM_PROPRIETARY = 9, + VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10, + VK_DRIVER_ID_GGP_PROPRIETARY = 11, + VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12, + VK_DRIVER_ID_MESA_LLVMPIPE = 13, + VK_DRIVER_ID_MOLTENVK = 14, + VK_DRIVER_ID_COREAVI_PROPRIETARY = 15, + VK_DRIVER_ID_JUICE_PROPRIETARY = 16, + VK_DRIVER_ID_VERISILICON_PROPRIETARY = 17, + VK_DRIVER_ID_MESA_TURNIP = 18, + VK_DRIVER_ID_MESA_V3DV = 19, + VK_DRIVER_ID_MESA_PANVK = 20, + VK_DRIVER_ID_SAMSUNG_PROPRIETARY = 21, + VK_DRIVER_ID_MESA_VENUS = 22, + VK_DRIVER_ID_MESA_DOZEN = 23, + VK_DRIVER_ID_MESA_NVK = 24, + VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA = 25, + VK_DRIVER_ID_AMD_PROPRIETARY_KHR = VK_DRIVER_ID_AMD_PROPRIETARY, + VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = VK_DRIVER_ID_AMD_OPEN_SOURCE, + VK_DRIVER_ID_MESA_RADV_KHR = VK_DRIVER_ID_MESA_RADV, + VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = VK_DRIVER_ID_NVIDIA_PROPRIETARY, + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS, + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA, + VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = VK_DRIVER_ID_IMAGINATION_PROPRIETARY, + VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = VK_DRIVER_ID_QUALCOMM_PROPRIETARY, + VK_DRIVER_ID_ARM_PROPRIETARY_KHR = VK_DRIVER_ID_ARM_PROPRIETARY, + VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = VK_DRIVER_ID_GOOGLE_SWIFTSHADER, + VK_DRIVER_ID_GGP_PROPRIETARY_KHR = VK_DRIVER_ID_GGP_PROPRIETARY, + VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = VK_DRIVER_ID_BROADCOM_PROPRIETARY, + VK_DRIVER_ID_MAX_ENUM = 0x7FFFFFFF +} VkDriverId; + +typedef enum VkShaderFloatControlsIndependence { + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0, + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1, + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2, + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY, + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL, + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE, + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 0x7FFFFFFF +} VkShaderFloatControlsIndependence; + +typedef enum VkSamplerReductionMode { + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0, + VK_SAMPLER_REDUCTION_MODE_MIN = 1, + VK_SAMPLER_REDUCTION_MODE_MAX = 2, + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE, + VK_SAMPLER_REDUCTION_MODE_MIN_EXT = VK_SAMPLER_REDUCTION_MODE_MIN, + VK_SAMPLER_REDUCTION_MODE_MAX_EXT = VK_SAMPLER_REDUCTION_MODE_MAX, + VK_SAMPLER_REDUCTION_MODE_MAX_ENUM = 0x7FFFFFFF +} VkSamplerReductionMode; + +typedef enum VkSemaphoreType { + VK_SEMAPHORE_TYPE_BINARY = 0, + VK_SEMAPHORE_TYPE_TIMELINE = 1, + VK_SEMAPHORE_TYPE_BINARY_KHR = VK_SEMAPHORE_TYPE_BINARY, + VK_SEMAPHORE_TYPE_TIMELINE_KHR = VK_SEMAPHORE_TYPE_TIMELINE, + VK_SEMAPHORE_TYPE_MAX_ENUM = 0x7FFFFFFF +} VkSemaphoreType; + +typedef enum VkResolveModeFlagBits { + VK_RESOLVE_MODE_NONE = 0, + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 0x00000001, + VK_RESOLVE_MODE_AVERAGE_BIT = 0x00000002, + VK_RESOLVE_MODE_MIN_BIT = 0x00000004, + VK_RESOLVE_MODE_MAX_BIT = 0x00000008, + VK_RESOLVE_MODE_NONE_KHR = VK_RESOLVE_MODE_NONE, + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = VK_RESOLVE_MODE_SAMPLE_ZERO_BIT, + VK_RESOLVE_MODE_AVERAGE_BIT_KHR = VK_RESOLVE_MODE_AVERAGE_BIT, + VK_RESOLVE_MODE_MIN_BIT_KHR = VK_RESOLVE_MODE_MIN_BIT, + VK_RESOLVE_MODE_MAX_BIT_KHR = VK_RESOLVE_MODE_MAX_BIT, + VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkResolveModeFlagBits; +typedef VkFlags VkResolveModeFlags; + +typedef enum VkDescriptorBindingFlagBits { + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 0x00000001, + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 0x00000002, + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 0x00000004, + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 0x00000008, + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT, + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT, + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT, + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT, + VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkDescriptorBindingFlagBits; +typedef VkFlags VkDescriptorBindingFlags; + +typedef enum VkSemaphoreWaitFlagBits { + VK_SEMAPHORE_WAIT_ANY_BIT = 0x00000001, + VK_SEMAPHORE_WAIT_ANY_BIT_KHR = VK_SEMAPHORE_WAIT_ANY_BIT, + VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkSemaphoreWaitFlagBits; +typedef VkFlags VkSemaphoreWaitFlags; +typedef struct VkPhysicalDeviceVulkan11Features { + VkStructureType sType; + void* pNext; + VkBool32 storageBuffer16BitAccess; + VkBool32 uniformAndStorageBuffer16BitAccess; + VkBool32 storagePushConstant16; + VkBool32 storageInputOutput16; + VkBool32 multiview; + VkBool32 multiviewGeometryShader; + VkBool32 multiviewTessellationShader; + VkBool32 variablePointersStorageBuffer; + VkBool32 variablePointers; + VkBool32 protectedMemory; + VkBool32 samplerYcbcrConversion; + VkBool32 shaderDrawParameters; +} VkPhysicalDeviceVulkan11Features; + +typedef struct VkPhysicalDeviceVulkan11Properties { + VkStructureType sType; + void* pNext; + uint8_t deviceUUID[VK_UUID_SIZE]; + uint8_t driverUUID[VK_UUID_SIZE]; + uint8_t deviceLUID[VK_LUID_SIZE]; + uint32_t deviceNodeMask; + VkBool32 deviceLUIDValid; + uint32_t subgroupSize; + VkShaderStageFlags subgroupSupportedStages; + VkSubgroupFeatureFlags subgroupSupportedOperations; + VkBool32 subgroupQuadOperationsInAllStages; + VkPointClippingBehavior pointClippingBehavior; + uint32_t maxMultiviewViewCount; + uint32_t maxMultiviewInstanceIndex; + VkBool32 protectedNoFault; + uint32_t maxPerSetDescriptors; + VkDeviceSize maxMemoryAllocationSize; +} VkPhysicalDeviceVulkan11Properties; + +typedef struct VkPhysicalDeviceVulkan12Features { + VkStructureType sType; + void* pNext; + VkBool32 samplerMirrorClampToEdge; + VkBool32 drawIndirectCount; + VkBool32 storageBuffer8BitAccess; + VkBool32 uniformAndStorageBuffer8BitAccess; + VkBool32 storagePushConstant8; + VkBool32 shaderBufferInt64Atomics; + VkBool32 shaderSharedInt64Atomics; + VkBool32 shaderFloat16; + VkBool32 shaderInt8; + VkBool32 descriptorIndexing; + VkBool32 shaderInputAttachmentArrayDynamicIndexing; + VkBool32 shaderUniformTexelBufferArrayDynamicIndexing; + VkBool32 shaderStorageTexelBufferArrayDynamicIndexing; + VkBool32 shaderUniformBufferArrayNonUniformIndexing; + VkBool32 shaderSampledImageArrayNonUniformIndexing; + VkBool32 shaderStorageBufferArrayNonUniformIndexing; + VkBool32 shaderStorageImageArrayNonUniformIndexing; + VkBool32 shaderInputAttachmentArrayNonUniformIndexing; + VkBool32 shaderUniformTexelBufferArrayNonUniformIndexing; + VkBool32 shaderStorageTexelBufferArrayNonUniformIndexing; + VkBool32 descriptorBindingUniformBufferUpdateAfterBind; + VkBool32 descriptorBindingSampledImageUpdateAfterBind; + VkBool32 descriptorBindingStorageImageUpdateAfterBind; + VkBool32 descriptorBindingStorageBufferUpdateAfterBind; + VkBool32 descriptorBindingUniformTexelBufferUpdateAfterBind; + VkBool32 descriptorBindingStorageTexelBufferUpdateAfterBind; + VkBool32 descriptorBindingUpdateUnusedWhilePending; + VkBool32 descriptorBindingPartiallyBound; + VkBool32 descriptorBindingVariableDescriptorCount; + VkBool32 runtimeDescriptorArray; + VkBool32 samplerFilterMinmax; + VkBool32 scalarBlockLayout; + VkBool32 imagelessFramebuffer; + VkBool32 uniformBufferStandardLayout; + VkBool32 shaderSubgroupExtendedTypes; + VkBool32 separateDepthStencilLayouts; + VkBool32 hostQueryReset; + VkBool32 timelineSemaphore; + VkBool32 bufferDeviceAddress; + VkBool32 bufferDeviceAddressCaptureReplay; + VkBool32 bufferDeviceAddressMultiDevice; + VkBool32 vulkanMemoryModel; + VkBool32 vulkanMemoryModelDeviceScope; + VkBool32 vulkanMemoryModelAvailabilityVisibilityChains; + VkBool32 shaderOutputViewportIndex; + VkBool32 shaderOutputLayer; + VkBool32 subgroupBroadcastDynamicId; +} VkPhysicalDeviceVulkan12Features; + +typedef struct VkConformanceVersion { + uint8_t major; + uint8_t minor; + uint8_t subminor; + uint8_t patch; +} VkConformanceVersion; + +typedef struct VkPhysicalDeviceVulkan12Properties { + VkStructureType sType; + void* pNext; + VkDriverId driverID; + char driverName[VK_MAX_DRIVER_NAME_SIZE]; + char driverInfo[VK_MAX_DRIVER_INFO_SIZE]; + VkConformanceVersion conformanceVersion; + VkShaderFloatControlsIndependence denormBehaviorIndependence; + VkShaderFloatControlsIndependence roundingModeIndependence; + VkBool32 shaderSignedZeroInfNanPreserveFloat16; + VkBool32 shaderSignedZeroInfNanPreserveFloat32; + VkBool32 shaderSignedZeroInfNanPreserveFloat64; + VkBool32 shaderDenormPreserveFloat16; + VkBool32 shaderDenormPreserveFloat32; + VkBool32 shaderDenormPreserveFloat64; + VkBool32 shaderDenormFlushToZeroFloat16; + VkBool32 shaderDenormFlushToZeroFloat32; + VkBool32 shaderDenormFlushToZeroFloat64; + VkBool32 shaderRoundingModeRTEFloat16; + VkBool32 shaderRoundingModeRTEFloat32; + VkBool32 shaderRoundingModeRTEFloat64; + VkBool32 shaderRoundingModeRTZFloat16; + VkBool32 shaderRoundingModeRTZFloat32; + VkBool32 shaderRoundingModeRTZFloat64; + uint32_t maxUpdateAfterBindDescriptorsInAllPools; + VkBool32 shaderUniformBufferArrayNonUniformIndexingNative; + VkBool32 shaderSampledImageArrayNonUniformIndexingNative; + VkBool32 shaderStorageBufferArrayNonUniformIndexingNative; + VkBool32 shaderStorageImageArrayNonUniformIndexingNative; + VkBool32 shaderInputAttachmentArrayNonUniformIndexingNative; + VkBool32 robustBufferAccessUpdateAfterBind; + VkBool32 quadDivergentImplicitLod; + uint32_t maxPerStageDescriptorUpdateAfterBindSamplers; + uint32_t maxPerStageDescriptorUpdateAfterBindUniformBuffers; + uint32_t maxPerStageDescriptorUpdateAfterBindStorageBuffers; + uint32_t maxPerStageDescriptorUpdateAfterBindSampledImages; + uint32_t maxPerStageDescriptorUpdateAfterBindStorageImages; + uint32_t maxPerStageDescriptorUpdateAfterBindInputAttachments; + uint32_t maxPerStageUpdateAfterBindResources; + uint32_t maxDescriptorSetUpdateAfterBindSamplers; + uint32_t maxDescriptorSetUpdateAfterBindUniformBuffers; + uint32_t maxDescriptorSetUpdateAfterBindUniformBuffersDynamic; + uint32_t maxDescriptorSetUpdateAfterBindStorageBuffers; + uint32_t maxDescriptorSetUpdateAfterBindStorageBuffersDynamic; + uint32_t maxDescriptorSetUpdateAfterBindSampledImages; + uint32_t maxDescriptorSetUpdateAfterBindStorageImages; + uint32_t maxDescriptorSetUpdateAfterBindInputAttachments; + VkResolveModeFlags supportedDepthResolveModes; + VkResolveModeFlags supportedStencilResolveModes; + VkBool32 independentResolveNone; + VkBool32 independentResolve; + VkBool32 filterMinmaxSingleComponentFormats; + VkBool32 filterMinmaxImageComponentMapping; + uint64_t maxTimelineSemaphoreValueDifference; + VkSampleCountFlags framebufferIntegerColorSampleCounts; +} VkPhysicalDeviceVulkan12Properties; + +typedef struct VkImageFormatListCreateInfo { + VkStructureType sType; + const void* pNext; + uint32_t viewFormatCount; + const VkFormat* pViewFormats; +} VkImageFormatListCreateInfo; + +typedef struct VkAttachmentDescription2 { + VkStructureType sType; + const void* pNext; + VkAttachmentDescriptionFlags flags; + VkFormat format; + VkSampleCountFlagBits samples; + VkAttachmentLoadOp loadOp; + VkAttachmentStoreOp storeOp; + VkAttachmentLoadOp stencilLoadOp; + VkAttachmentStoreOp stencilStoreOp; + VkImageLayout initialLayout; + VkImageLayout finalLayout; +} VkAttachmentDescription2; + +typedef struct VkAttachmentReference2 { + VkStructureType sType; + const void* pNext; + uint32_t attachment; + VkImageLayout layout; + VkImageAspectFlags aspectMask; +} VkAttachmentReference2; + +typedef struct VkSubpassDescription2 { + VkStructureType sType; + const void* pNext; + VkSubpassDescriptionFlags flags; + VkPipelineBindPoint pipelineBindPoint; + uint32_t viewMask; + uint32_t inputAttachmentCount; + const VkAttachmentReference2* pInputAttachments; + uint32_t colorAttachmentCount; + const VkAttachmentReference2* pColorAttachments; + const VkAttachmentReference2* pResolveAttachments; + const VkAttachmentReference2* pDepthStencilAttachment; + uint32_t preserveAttachmentCount; + const uint32_t* pPreserveAttachments; +} VkSubpassDescription2; + +typedef struct VkSubpassDependency2 { + VkStructureType sType; + const void* pNext; + uint32_t srcSubpass; + uint32_t dstSubpass; + VkPipelineStageFlags srcStageMask; + VkPipelineStageFlags dstStageMask; + VkAccessFlags srcAccessMask; + VkAccessFlags dstAccessMask; + VkDependencyFlags dependencyFlags; + int32_t viewOffset; +} VkSubpassDependency2; + +typedef struct VkRenderPassCreateInfo2 { + VkStructureType sType; + const void* pNext; + VkRenderPassCreateFlags flags; + uint32_t attachmentCount; + const VkAttachmentDescription2* pAttachments; + uint32_t subpassCount; + const VkSubpassDescription2* pSubpasses; + uint32_t dependencyCount; + const VkSubpassDependency2* pDependencies; + uint32_t correlatedViewMaskCount; + const uint32_t* pCorrelatedViewMasks; +} VkRenderPassCreateInfo2; + +typedef struct VkSubpassBeginInfo { + VkStructureType sType; + const void* pNext; + VkSubpassContents contents; +} VkSubpassBeginInfo; + +typedef struct VkSubpassEndInfo { + VkStructureType sType; + const void* pNext; +} VkSubpassEndInfo; + +typedef struct VkPhysicalDevice8BitStorageFeatures { + VkStructureType sType; + void* pNext; + VkBool32 storageBuffer8BitAccess; + VkBool32 uniformAndStorageBuffer8BitAccess; + VkBool32 storagePushConstant8; +} VkPhysicalDevice8BitStorageFeatures; + +typedef struct VkPhysicalDeviceDriverProperties { + VkStructureType sType; + void* pNext; + VkDriverId driverID; + char driverName[VK_MAX_DRIVER_NAME_SIZE]; + char driverInfo[VK_MAX_DRIVER_INFO_SIZE]; + VkConformanceVersion conformanceVersion; +} VkPhysicalDeviceDriverProperties; + +typedef struct VkPhysicalDeviceShaderAtomicInt64Features { + VkStructureType sType; + void* pNext; + VkBool32 shaderBufferInt64Atomics; + VkBool32 shaderSharedInt64Atomics; +} VkPhysicalDeviceShaderAtomicInt64Features; + +typedef struct VkPhysicalDeviceShaderFloat16Int8Features { + VkStructureType sType; + void* pNext; + VkBool32 shaderFloat16; + VkBool32 shaderInt8; +} VkPhysicalDeviceShaderFloat16Int8Features; + +typedef struct VkPhysicalDeviceFloatControlsProperties { + VkStructureType sType; + void* pNext; + VkShaderFloatControlsIndependence denormBehaviorIndependence; + VkShaderFloatControlsIndependence roundingModeIndependence; + VkBool32 shaderSignedZeroInfNanPreserveFloat16; + VkBool32 shaderSignedZeroInfNanPreserveFloat32; + VkBool32 shaderSignedZeroInfNanPreserveFloat64; + VkBool32 shaderDenormPreserveFloat16; + VkBool32 shaderDenormPreserveFloat32; + VkBool32 shaderDenormPreserveFloat64; + VkBool32 shaderDenormFlushToZeroFloat16; + VkBool32 shaderDenormFlushToZeroFloat32; + VkBool32 shaderDenormFlushToZeroFloat64; + VkBool32 shaderRoundingModeRTEFloat16; + VkBool32 shaderRoundingModeRTEFloat32; + VkBool32 shaderRoundingModeRTEFloat64; + VkBool32 shaderRoundingModeRTZFloat16; + VkBool32 shaderRoundingModeRTZFloat32; + VkBool32 shaderRoundingModeRTZFloat64; +} VkPhysicalDeviceFloatControlsProperties; + +typedef struct VkDescriptorSetLayoutBindingFlagsCreateInfo { + VkStructureType sType; + const void* pNext; + uint32_t bindingCount; + const VkDescriptorBindingFlags* pBindingFlags; +} VkDescriptorSetLayoutBindingFlagsCreateInfo; + +typedef struct VkPhysicalDeviceDescriptorIndexingFeatures { + VkStructureType sType; + void* pNext; + VkBool32 shaderInputAttachmentArrayDynamicIndexing; + VkBool32 shaderUniformTexelBufferArrayDynamicIndexing; + VkBool32 shaderStorageTexelBufferArrayDynamicIndexing; + VkBool32 shaderUniformBufferArrayNonUniformIndexing; + VkBool32 shaderSampledImageArrayNonUniformIndexing; + VkBool32 shaderStorageBufferArrayNonUniformIndexing; + VkBool32 shaderStorageImageArrayNonUniformIndexing; + VkBool32 shaderInputAttachmentArrayNonUniformIndexing; + VkBool32 shaderUniformTexelBufferArrayNonUniformIndexing; + VkBool32 shaderStorageTexelBufferArrayNonUniformIndexing; + VkBool32 descriptorBindingUniformBufferUpdateAfterBind; + VkBool32 descriptorBindingSampledImageUpdateAfterBind; + VkBool32 descriptorBindingStorageImageUpdateAfterBind; + VkBool32 descriptorBindingStorageBufferUpdateAfterBind; + VkBool32 descriptorBindingUniformTexelBufferUpdateAfterBind; + VkBool32 descriptorBindingStorageTexelBufferUpdateAfterBind; + VkBool32 descriptorBindingUpdateUnusedWhilePending; + VkBool32 descriptorBindingPartiallyBound; + VkBool32 descriptorBindingVariableDescriptorCount; + VkBool32 runtimeDescriptorArray; +} VkPhysicalDeviceDescriptorIndexingFeatures; + +typedef struct VkPhysicalDeviceDescriptorIndexingProperties { + VkStructureType sType; + void* pNext; + uint32_t maxUpdateAfterBindDescriptorsInAllPools; + VkBool32 shaderUniformBufferArrayNonUniformIndexingNative; + VkBool32 shaderSampledImageArrayNonUniformIndexingNative; + VkBool32 shaderStorageBufferArrayNonUniformIndexingNative; + VkBool32 shaderStorageImageArrayNonUniformIndexingNative; + VkBool32 shaderInputAttachmentArrayNonUniformIndexingNative; + VkBool32 robustBufferAccessUpdateAfterBind; + VkBool32 quadDivergentImplicitLod; + uint32_t maxPerStageDescriptorUpdateAfterBindSamplers; + uint32_t maxPerStageDescriptorUpdateAfterBindUniformBuffers; + uint32_t maxPerStageDescriptorUpdateAfterBindStorageBuffers; + uint32_t maxPerStageDescriptorUpdateAfterBindSampledImages; + uint32_t maxPerStageDescriptorUpdateAfterBindStorageImages; + uint32_t maxPerStageDescriptorUpdateAfterBindInputAttachments; + uint32_t maxPerStageUpdateAfterBindResources; + uint32_t maxDescriptorSetUpdateAfterBindSamplers; + uint32_t maxDescriptorSetUpdateAfterBindUniformBuffers; + uint32_t maxDescriptorSetUpdateAfterBindUniformBuffersDynamic; + uint32_t maxDescriptorSetUpdateAfterBindStorageBuffers; + uint32_t maxDescriptorSetUpdateAfterBindStorageBuffersDynamic; + uint32_t maxDescriptorSetUpdateAfterBindSampledImages; + uint32_t maxDescriptorSetUpdateAfterBindStorageImages; + uint32_t maxDescriptorSetUpdateAfterBindInputAttachments; +} VkPhysicalDeviceDescriptorIndexingProperties; + +typedef struct VkDescriptorSetVariableDescriptorCountAllocateInfo { + VkStructureType sType; + const void* pNext; + uint32_t descriptorSetCount; + const uint32_t* pDescriptorCounts; +} VkDescriptorSetVariableDescriptorCountAllocateInfo; + +typedef struct VkDescriptorSetVariableDescriptorCountLayoutSupport { + VkStructureType sType; + void* pNext; + uint32_t maxVariableDescriptorCount; +} VkDescriptorSetVariableDescriptorCountLayoutSupport; + +typedef struct VkSubpassDescriptionDepthStencilResolve { + VkStructureType sType; + const void* pNext; + VkResolveModeFlagBits depthResolveMode; + VkResolveModeFlagBits stencilResolveMode; + const VkAttachmentReference2* pDepthStencilResolveAttachment; +} VkSubpassDescriptionDepthStencilResolve; + +typedef struct VkPhysicalDeviceDepthStencilResolveProperties { + VkStructureType sType; + void* pNext; + VkResolveModeFlags supportedDepthResolveModes; + VkResolveModeFlags supportedStencilResolveModes; + VkBool32 independentResolveNone; + VkBool32 independentResolve; +} VkPhysicalDeviceDepthStencilResolveProperties; + +typedef struct VkPhysicalDeviceScalarBlockLayoutFeatures { + VkStructureType sType; + void* pNext; + VkBool32 scalarBlockLayout; +} VkPhysicalDeviceScalarBlockLayoutFeatures; + +typedef struct VkImageStencilUsageCreateInfo { + VkStructureType sType; + const void* pNext; + VkImageUsageFlags stencilUsage; +} VkImageStencilUsageCreateInfo; + +typedef struct VkSamplerReductionModeCreateInfo { + VkStructureType sType; + const void* pNext; + VkSamplerReductionMode reductionMode; +} VkSamplerReductionModeCreateInfo; + +typedef struct VkPhysicalDeviceSamplerFilterMinmaxProperties { + VkStructureType sType; + void* pNext; + VkBool32 filterMinmaxSingleComponentFormats; + VkBool32 filterMinmaxImageComponentMapping; +} VkPhysicalDeviceSamplerFilterMinmaxProperties; + +typedef struct VkPhysicalDeviceVulkanMemoryModelFeatures { + VkStructureType sType; + void* pNext; + VkBool32 vulkanMemoryModel; + VkBool32 vulkanMemoryModelDeviceScope; + VkBool32 vulkanMemoryModelAvailabilityVisibilityChains; +} VkPhysicalDeviceVulkanMemoryModelFeatures; + +typedef struct VkPhysicalDeviceImagelessFramebufferFeatures { + VkStructureType sType; + void* pNext; + VkBool32 imagelessFramebuffer; +} VkPhysicalDeviceImagelessFramebufferFeatures; + +typedef struct VkFramebufferAttachmentImageInfo { + VkStructureType sType; + const void* pNext; + VkImageCreateFlags flags; + VkImageUsageFlags usage; + uint32_t width; + uint32_t height; + uint32_t layerCount; + uint32_t viewFormatCount; + const VkFormat* pViewFormats; +} VkFramebufferAttachmentImageInfo; + +typedef struct VkFramebufferAttachmentsCreateInfo { + VkStructureType sType; + const void* pNext; + uint32_t attachmentImageInfoCount; + const VkFramebufferAttachmentImageInfo* pAttachmentImageInfos; +} VkFramebufferAttachmentsCreateInfo; + +typedef struct VkRenderPassAttachmentBeginInfo { + VkStructureType sType; + const void* pNext; + uint32_t attachmentCount; + const VkImageView* pAttachments; +} VkRenderPassAttachmentBeginInfo; + +typedef struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures { + VkStructureType sType; + void* pNext; + VkBool32 uniformBufferStandardLayout; +} VkPhysicalDeviceUniformBufferStandardLayoutFeatures; + +typedef struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures { + VkStructureType sType; + void* pNext; + VkBool32 shaderSubgroupExtendedTypes; +} VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures; + +typedef struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures { + VkStructureType sType; + void* pNext; + VkBool32 separateDepthStencilLayouts; +} VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures; + +typedef struct VkAttachmentReferenceStencilLayout { + VkStructureType sType; + void* pNext; + VkImageLayout stencilLayout; +} VkAttachmentReferenceStencilLayout; + +typedef struct VkAttachmentDescriptionStencilLayout { + VkStructureType sType; + void* pNext; + VkImageLayout stencilInitialLayout; + VkImageLayout stencilFinalLayout; +} VkAttachmentDescriptionStencilLayout; + +typedef struct VkPhysicalDeviceHostQueryResetFeatures { + VkStructureType sType; + void* pNext; + VkBool32 hostQueryReset; +} VkPhysicalDeviceHostQueryResetFeatures; + +typedef struct VkPhysicalDeviceTimelineSemaphoreFeatures { + VkStructureType sType; + void* pNext; + VkBool32 timelineSemaphore; +} VkPhysicalDeviceTimelineSemaphoreFeatures; + +typedef struct VkPhysicalDeviceTimelineSemaphoreProperties { + VkStructureType sType; + void* pNext; + uint64_t maxTimelineSemaphoreValueDifference; +} VkPhysicalDeviceTimelineSemaphoreProperties; + +typedef struct VkSemaphoreTypeCreateInfo { + VkStructureType sType; + const void* pNext; + VkSemaphoreType semaphoreType; + uint64_t initialValue; +} VkSemaphoreTypeCreateInfo; + +typedef struct VkTimelineSemaphoreSubmitInfo { + VkStructureType sType; + const void* pNext; + uint32_t waitSemaphoreValueCount; + const uint64_t* pWaitSemaphoreValues; + uint32_t signalSemaphoreValueCount; + const uint64_t* pSignalSemaphoreValues; +} VkTimelineSemaphoreSubmitInfo; + +typedef struct VkSemaphoreWaitInfo { + VkStructureType sType; + const void* pNext; + VkSemaphoreWaitFlags flags; + uint32_t semaphoreCount; + const VkSemaphore* pSemaphores; + const uint64_t* pValues; +} VkSemaphoreWaitInfo; + +typedef struct VkSemaphoreSignalInfo { + VkStructureType sType; + const void* pNext; + VkSemaphore semaphore; + uint64_t value; +} VkSemaphoreSignalInfo; + +typedef struct VkPhysicalDeviceBufferDeviceAddressFeatures { + VkStructureType sType; + void* pNext; + VkBool32 bufferDeviceAddress; + VkBool32 bufferDeviceAddressCaptureReplay; + VkBool32 bufferDeviceAddressMultiDevice; +} VkPhysicalDeviceBufferDeviceAddressFeatures; + +typedef struct VkBufferDeviceAddressInfo { + VkStructureType sType; + const void* pNext; + VkBuffer buffer; +} VkBufferDeviceAddressInfo; + +typedef struct VkBufferOpaqueCaptureAddressCreateInfo { + VkStructureType sType; + const void* pNext; + uint64_t opaqueCaptureAddress; +} VkBufferOpaqueCaptureAddressCreateInfo; + +typedef struct VkMemoryOpaqueCaptureAddressAllocateInfo { + VkStructureType sType; + const void* pNext; + uint64_t opaqueCaptureAddress; +} VkMemoryOpaqueCaptureAddressAllocateInfo; + +typedef struct VkDeviceMemoryOpaqueCaptureAddressInfo { + VkStructureType sType; + const void* pNext; + VkDeviceMemory memory; +} VkDeviceMemoryOpaqueCaptureAddressInfo; + +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCount)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCount)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); +typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass2)(VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass); +typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass2)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfo* pSubpassBeginInfo); +typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass2)(VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, const VkSubpassEndInfo* pSubpassEndInfo); +typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass2)(VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo); +typedef void (VKAPI_PTR *PFN_vkResetQueryPool)(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount); +typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreCounterValue)(VkDevice device, VkSemaphore semaphore, uint64_t* pValue); +typedef VkResult (VKAPI_PTR *PFN_vkWaitSemaphores)(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout); +typedef VkResult (VKAPI_PTR *PFN_vkSignalSemaphore)(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo); +typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddress)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo); +typedef uint64_t (VKAPI_PTR *PFN_vkGetBufferOpaqueCaptureAddress)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo); +typedef uint64_t (VKAPI_PTR *PFN_vkGetDeviceMemoryOpaqueCaptureAddress)(VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCount( + VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkBuffer countBuffer, + VkDeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride); + +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCount( + VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkBuffer countBuffer, + VkDeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass2( + VkDevice device, + const VkRenderPassCreateInfo2* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkRenderPass* pRenderPass); + +VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass2( + VkCommandBuffer commandBuffer, + const VkRenderPassBeginInfo* pRenderPassBegin, + const VkSubpassBeginInfo* pSubpassBeginInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass2( + VkCommandBuffer commandBuffer, + const VkSubpassBeginInfo* pSubpassBeginInfo, + const VkSubpassEndInfo* pSubpassEndInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass2( + VkCommandBuffer commandBuffer, + const VkSubpassEndInfo* pSubpassEndInfo); + +VKAPI_ATTR void VKAPI_CALL vkResetQueryPool( + VkDevice device, + VkQueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreCounterValue( + VkDevice device, + VkSemaphore semaphore, + uint64_t* pValue); + +VKAPI_ATTR VkResult VKAPI_CALL vkWaitSemaphores( + VkDevice device, + const VkSemaphoreWaitInfo* pWaitInfo, + uint64_t timeout); + +VKAPI_ATTR VkResult VKAPI_CALL vkSignalSemaphore( + VkDevice device, + const VkSemaphoreSignalInfo* pSignalInfo); + +VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddress( + VkDevice device, + const VkBufferDeviceAddressInfo* pInfo); + +VKAPI_ATTR uint64_t VKAPI_CALL vkGetBufferOpaqueCaptureAddress( + VkDevice device, + const VkBufferDeviceAddressInfo* pInfo); + +VKAPI_ATTR uint64_t VKAPI_CALL vkGetDeviceMemoryOpaqueCaptureAddress( + VkDevice device, + const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo); +#endif + + +#define VK_VERSION_1_3 1 +// Vulkan 1.3 version number +#define VK_API_VERSION_1_3 VK_MAKE_API_VERSION(0, 1, 3, 0)// Patch version should always be set to 0 + +typedef uint64_t VkFlags64; +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPrivateDataSlot) + +typedef enum VkPipelineCreationFeedbackFlagBits { + VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT = 0x00000001, + VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT = 0x00000002, + VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT = 0x00000004, + VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT, + VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT, + VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT, + VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkPipelineCreationFeedbackFlagBits; +typedef VkFlags VkPipelineCreationFeedbackFlags; + +typedef enum VkToolPurposeFlagBits { + VK_TOOL_PURPOSE_VALIDATION_BIT = 0x00000001, + VK_TOOL_PURPOSE_PROFILING_BIT = 0x00000002, + VK_TOOL_PURPOSE_TRACING_BIT = 0x00000004, + VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT = 0x00000008, + VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT = 0x00000010, + VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 0x00000020, + VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 0x00000040, + VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = VK_TOOL_PURPOSE_VALIDATION_BIT, + VK_TOOL_PURPOSE_PROFILING_BIT_EXT = VK_TOOL_PURPOSE_PROFILING_BIT, + VK_TOOL_PURPOSE_TRACING_BIT_EXT = VK_TOOL_PURPOSE_TRACING_BIT, + VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT, + VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT, + VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkToolPurposeFlagBits; +typedef VkFlags VkToolPurposeFlags; +typedef VkFlags VkPrivateDataSlotCreateFlags; +typedef VkFlags64 VkPipelineStageFlags2; + +// Flag bits for VkPipelineStageFlagBits2 +typedef VkFlags64 VkPipelineStageFlagBits2; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_NONE = 0ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_NONE_KHR = 0ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT = 0x00000001ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR = 0x00000001ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT = 0x00000002ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR = 0x00000002ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT = 0x00000004ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR = 0x00000004ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT = 0x00000008ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR = 0x00000008ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR = 0x00000010ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR = 0x00000020ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT = 0x00000040ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR = 0x00000040ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT = 0x00000080ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR = 0x00000080ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT = 0x00000100ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR = 0x00000100ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT = 0x00000200ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR = 0x00000200ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR = 0x00000400ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT = 0x00000800ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR = 0x00000800ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT = 0x00001000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR = 0x00001000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TRANSFER_BIT = 0x00001000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR = 0x00001000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT = 0x00002000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR = 0x00002000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_HOST_BIT = 0x00004000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_HOST_BIT_KHR = 0x00004000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT = 0x00008000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR = 0x00008000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT = 0x00010000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR = 0x00010000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COPY_BIT = 0x100000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COPY_BIT_KHR = 0x100000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_RESOLVE_BIT = 0x200000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR = 0x200000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_BLIT_BIT = 0x400000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_BLIT_BIT_KHR = 0x400000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_CLEAR_BIT = 0x800000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR = 0x800000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT = 0x1000000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR = 0x1000000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT = 0x2000000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR = 0x2000000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT = 0x4000000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT_KHR = 0x4000000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR = 0x04000000ULL; +#ifdef VK_ENABLE_BETA_EXTENSIONS +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR = 0x08000000ULL; +#endif +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT = 0x01000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT = 0x00040000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV = 0x00020000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00400000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV = 0x00400000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 0x02000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR = 0x00200000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_NV = 0x00200000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 0x02000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 0x00800000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV = 0x00080000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV = 0x00100000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT = 0x00080000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT = 0x00100000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI = 0x8000000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI = 0x10000000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR = 0x10000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT = 0x40000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI = 0x20000000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV = 0x20000000ULL; + +typedef VkFlags64 VkAccessFlags2; + +// Flag bits for VkAccessFlagBits2 +typedef VkFlags64 VkAccessFlagBits2; +static const VkAccessFlagBits2 VK_ACCESS_2_NONE = 0ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_NONE_KHR = 0ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT = 0x00000001ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR = 0x00000001ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_INDEX_READ_BIT = 0x00000002ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_INDEX_READ_BIT_KHR = 0x00000002ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR = 0x00000004ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_UNIFORM_READ_BIT = 0x00000008ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_UNIFORM_READ_BIT_KHR = 0x00000008ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT = 0x00000010ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR = 0x00000010ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_READ_BIT = 0x00000020ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_READ_BIT_KHR = 0x00000020ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_WRITE_BIT = 0x00000040ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_WRITE_BIT_KHR = 0x00000040ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT = 0x00000080ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR = 0x00000080ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR = 0x00000100ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR = 0x00000200ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR = 0x00000400ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFER_READ_BIT = 0x00000800ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFER_READ_BIT_KHR = 0x00000800ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFER_WRITE_BIT = 0x00001000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR = 0x00001000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_HOST_READ_BIT = 0x00002000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_HOST_READ_BIT_KHR = 0x00002000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_HOST_WRITE_BIT = 0x00004000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_HOST_WRITE_BIT_KHR = 0x00004000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_MEMORY_READ_BIT = 0x00008000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_MEMORY_READ_BIT_KHR = 0x00008000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_MEMORY_WRITE_BIT = 0x00010000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_MEMORY_WRITE_BIT_KHR = 0x00010000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_SAMPLED_READ_BIT = 0x100000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR = 0x100000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_READ_BIT = 0x200000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR = 0x200000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT = 0x400000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR = 0x400000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR = 0x800000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR = 0x1000000000ULL; +#ifdef VK_ENABLE_BETA_EXTENSIONS +static const VkAccessFlagBits2 VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR = 0x2000000000ULL; +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS +static const VkAccessFlagBits2 VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR = 0x4000000000ULL; +#endif +static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 0x02000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 0x04000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 0x08000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT = 0x00100000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV = 0x00020000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV = 0x00040000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 0x00800000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV = 0x00800000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR = 0x00200000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 0x00400000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_NV = 0x00200000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 0x00400000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 0x01000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 0x00080000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT = 0x20000000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI = 0x8000000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR = 0x10000000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_MICROMAP_READ_BIT_EXT = 0x100000000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_MICROMAP_WRITE_BIT_EXT = 0x200000000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_OPTICAL_FLOW_READ_BIT_NV = 0x40000000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV = 0x80000000000ULL; + + +typedef enum VkSubmitFlagBits { + VK_SUBMIT_PROTECTED_BIT = 0x00000001, + VK_SUBMIT_PROTECTED_BIT_KHR = VK_SUBMIT_PROTECTED_BIT, + VK_SUBMIT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkSubmitFlagBits; +typedef VkFlags VkSubmitFlags; + +typedef enum VkRenderingFlagBits { + VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT = 0x00000001, + VK_RENDERING_SUSPENDING_BIT = 0x00000002, + VK_RENDERING_RESUMING_BIT = 0x00000004, + VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT = 0x00000008, + VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR = VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT, + VK_RENDERING_SUSPENDING_BIT_KHR = VK_RENDERING_SUSPENDING_BIT, + VK_RENDERING_RESUMING_BIT_KHR = VK_RENDERING_RESUMING_BIT, + VK_RENDERING_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkRenderingFlagBits; +typedef VkFlags VkRenderingFlags; +typedef VkFlags64 VkFormatFeatureFlags2; + +// Flag bits for VkFormatFeatureFlagBits2 +typedef VkFlags64 VkFormatFeatureFlagBits2; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT = 0x00000001ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR = 0x00000001ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT = 0x00000002ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT_KHR = 0x00000002ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT_KHR = 0x00000004ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT = 0x00000008ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR = 0x00000008ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT = 0x00000010ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT_KHR = 0x00000010ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0x00000020ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT_KHR = 0x00000020ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT = 0x00000040ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT_KHR = 0x00000040ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT = 0x00000080ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT_KHR = 0x00000080ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT_KHR = 0x00000100ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT_KHR = 0x00000200ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLIT_SRC_BIT = 0x00000400ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR = 0x00000400ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLIT_DST_BIT = 0x00000800ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLIT_DST_BIT_KHR = 0x00000800ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0x00001000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT_KHR = 0x00001000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT = 0x00002000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 0x00002000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT = 0x00004000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT_KHR = 0x00004000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT = 0x00008000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT_KHR = 0x00008000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 0x00010000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT_KHR = 0x00010000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT = 0x00020000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = 0x00020000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 0x00040000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = 0x00040000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 0x00080000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = 0x00080000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 0x00100000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = 0x00100000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 0x00200000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = 0x00200000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DISJOINT_BIT = 0x00400000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DISJOINT_BIT_KHR = 0x00400000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT = 0x00800000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT_KHR = 0x00800000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT = 0x80000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR = 0x80000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT = 0x100000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR = 0x100000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT = 0x200000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR = 0x200000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VIDEO_DECODE_OUTPUT_BIT_KHR = 0x02000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VIDEO_DECODE_DPB_BIT_KHR = 0x04000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 0x20000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x01000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x40000000ULL; +#ifdef VK_ENABLE_BETA_EXTENSIONS +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VIDEO_ENCODE_INPUT_BIT_KHR = 0x08000000ULL; +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VIDEO_ENCODE_DPB_BIT_KHR = 0x10000000ULL; +#endif +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV = 0x4000000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM = 0x400000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM = 0x800000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM = 0x1000000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM = 0x2000000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_OPTICAL_FLOW_IMAGE_BIT_NV = 0x10000000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_OPTICAL_FLOW_VECTOR_BIT_NV = 0x20000000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_OPTICAL_FLOW_COST_BIT_NV = 0x40000000000ULL; + +typedef struct VkPhysicalDeviceVulkan13Features { + VkStructureType sType; + void* pNext; + VkBool32 robustImageAccess; + VkBool32 inlineUniformBlock; + VkBool32 descriptorBindingInlineUniformBlockUpdateAfterBind; + VkBool32 pipelineCreationCacheControl; + VkBool32 privateData; + VkBool32 shaderDemoteToHelperInvocation; + VkBool32 shaderTerminateInvocation; + VkBool32 subgroupSizeControl; + VkBool32 computeFullSubgroups; + VkBool32 synchronization2; + VkBool32 textureCompressionASTC_HDR; + VkBool32 shaderZeroInitializeWorkgroupMemory; + VkBool32 dynamicRendering; + VkBool32 shaderIntegerDotProduct; + VkBool32 maintenance4; +} VkPhysicalDeviceVulkan13Features; + +typedef struct VkPhysicalDeviceVulkan13Properties { + VkStructureType sType; + void* pNext; + uint32_t minSubgroupSize; + uint32_t maxSubgroupSize; + uint32_t maxComputeWorkgroupSubgroups; + VkShaderStageFlags requiredSubgroupSizeStages; + uint32_t maxInlineUniformBlockSize; + uint32_t maxPerStageDescriptorInlineUniformBlocks; + uint32_t maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks; + uint32_t maxDescriptorSetInlineUniformBlocks; + uint32_t maxDescriptorSetUpdateAfterBindInlineUniformBlocks; + uint32_t maxInlineUniformTotalSize; + VkBool32 integerDotProduct8BitUnsignedAccelerated; + VkBool32 integerDotProduct8BitSignedAccelerated; + VkBool32 integerDotProduct8BitMixedSignednessAccelerated; + VkBool32 integerDotProduct4x8BitPackedUnsignedAccelerated; + VkBool32 integerDotProduct4x8BitPackedSignedAccelerated; + VkBool32 integerDotProduct4x8BitPackedMixedSignednessAccelerated; + VkBool32 integerDotProduct16BitUnsignedAccelerated; + VkBool32 integerDotProduct16BitSignedAccelerated; + VkBool32 integerDotProduct16BitMixedSignednessAccelerated; + VkBool32 integerDotProduct32BitUnsignedAccelerated; + VkBool32 integerDotProduct32BitSignedAccelerated; + VkBool32 integerDotProduct32BitMixedSignednessAccelerated; + VkBool32 integerDotProduct64BitUnsignedAccelerated; + VkBool32 integerDotProduct64BitSignedAccelerated; + VkBool32 integerDotProduct64BitMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating8BitUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating8BitSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating16BitUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating16BitSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating32BitUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating32BitSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating64BitUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating64BitSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated; + VkDeviceSize storageTexelBufferOffsetAlignmentBytes; + VkBool32 storageTexelBufferOffsetSingleTexelAlignment; + VkDeviceSize uniformTexelBufferOffsetAlignmentBytes; + VkBool32 uniformTexelBufferOffsetSingleTexelAlignment; + VkDeviceSize maxBufferSize; +} VkPhysicalDeviceVulkan13Properties; + +typedef struct VkPipelineCreationFeedback { + VkPipelineCreationFeedbackFlags flags; + uint64_t duration; +} VkPipelineCreationFeedback; + +typedef struct VkPipelineCreationFeedbackCreateInfo { + VkStructureType sType; + const void* pNext; + VkPipelineCreationFeedback* pPipelineCreationFeedback; + uint32_t pipelineStageCreationFeedbackCount; + VkPipelineCreationFeedback* pPipelineStageCreationFeedbacks; +} VkPipelineCreationFeedbackCreateInfo; + +typedef struct VkPhysicalDeviceShaderTerminateInvocationFeatures { + VkStructureType sType; + void* pNext; + VkBool32 shaderTerminateInvocation; +} VkPhysicalDeviceShaderTerminateInvocationFeatures; + +typedef struct VkPhysicalDeviceToolProperties { + VkStructureType sType; + void* pNext; + char name[VK_MAX_EXTENSION_NAME_SIZE]; + char version[VK_MAX_EXTENSION_NAME_SIZE]; + VkToolPurposeFlags purposes; + char description[VK_MAX_DESCRIPTION_SIZE]; + char layer[VK_MAX_EXTENSION_NAME_SIZE]; +} VkPhysicalDeviceToolProperties; + +typedef struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures { + VkStructureType sType; + void* pNext; + VkBool32 shaderDemoteToHelperInvocation; +} VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures; + +typedef struct VkPhysicalDevicePrivateDataFeatures { + VkStructureType sType; + void* pNext; + VkBool32 privateData; +} VkPhysicalDevicePrivateDataFeatures; + +typedef struct VkDevicePrivateDataCreateInfo { + VkStructureType sType; + const void* pNext; + uint32_t privateDataSlotRequestCount; +} VkDevicePrivateDataCreateInfo; + +typedef struct VkPrivateDataSlotCreateInfo { + VkStructureType sType; + const void* pNext; + VkPrivateDataSlotCreateFlags flags; +} VkPrivateDataSlotCreateInfo; + +typedef struct VkPhysicalDevicePipelineCreationCacheControlFeatures { + VkStructureType sType; + void* pNext; + VkBool32 pipelineCreationCacheControl; +} VkPhysicalDevicePipelineCreationCacheControlFeatures; + +typedef struct VkMemoryBarrier2 { + VkStructureType sType; + const void* pNext; + VkPipelineStageFlags2 srcStageMask; + VkAccessFlags2 srcAccessMask; + VkPipelineStageFlags2 dstStageMask; + VkAccessFlags2 dstAccessMask; +} VkMemoryBarrier2; + +typedef struct VkBufferMemoryBarrier2 { + VkStructureType sType; + const void* pNext; + VkPipelineStageFlags2 srcStageMask; + VkAccessFlags2 srcAccessMask; + VkPipelineStageFlags2 dstStageMask; + VkAccessFlags2 dstAccessMask; + uint32_t srcQueueFamilyIndex; + uint32_t dstQueueFamilyIndex; + VkBuffer buffer; + VkDeviceSize offset; + VkDeviceSize size; +} VkBufferMemoryBarrier2; + +typedef struct VkImageMemoryBarrier2 { + VkStructureType sType; + const void* pNext; + VkPipelineStageFlags2 srcStageMask; + VkAccessFlags2 srcAccessMask; + VkPipelineStageFlags2 dstStageMask; + VkAccessFlags2 dstAccessMask; + VkImageLayout oldLayout; + VkImageLayout newLayout; + uint32_t srcQueueFamilyIndex; + uint32_t dstQueueFamilyIndex; + VkImage image; + VkImageSubresourceRange subresourceRange; +} VkImageMemoryBarrier2; + +typedef struct VkDependencyInfo { + VkStructureType sType; + const void* pNext; + VkDependencyFlags dependencyFlags; + uint32_t memoryBarrierCount; + const VkMemoryBarrier2* pMemoryBarriers; + uint32_t bufferMemoryBarrierCount; + const VkBufferMemoryBarrier2* pBufferMemoryBarriers; + uint32_t imageMemoryBarrierCount; + const VkImageMemoryBarrier2* pImageMemoryBarriers; +} VkDependencyInfo; + +typedef struct VkSemaphoreSubmitInfo { + VkStructureType sType; + const void* pNext; + VkSemaphore semaphore; + uint64_t value; + VkPipelineStageFlags2 stageMask; + uint32_t deviceIndex; +} VkSemaphoreSubmitInfo; + +typedef struct VkCommandBufferSubmitInfo { + VkStructureType sType; + const void* pNext; + VkCommandBuffer commandBuffer; + uint32_t deviceMask; +} VkCommandBufferSubmitInfo; + +typedef struct VkSubmitInfo2 { + VkStructureType sType; + const void* pNext; + VkSubmitFlags flags; + uint32_t waitSemaphoreInfoCount; + const VkSemaphoreSubmitInfo* pWaitSemaphoreInfos; + uint32_t commandBufferInfoCount; + const VkCommandBufferSubmitInfo* pCommandBufferInfos; + uint32_t signalSemaphoreInfoCount; + const VkSemaphoreSubmitInfo* pSignalSemaphoreInfos; +} VkSubmitInfo2; + +typedef struct VkPhysicalDeviceSynchronization2Features { + VkStructureType sType; + void* pNext; + VkBool32 synchronization2; +} VkPhysicalDeviceSynchronization2Features; + +typedef struct VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures { + VkStructureType sType; + void* pNext; + VkBool32 shaderZeroInitializeWorkgroupMemory; +} VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures; + +typedef struct VkPhysicalDeviceImageRobustnessFeatures { + VkStructureType sType; + void* pNext; + VkBool32 robustImageAccess; +} VkPhysicalDeviceImageRobustnessFeatures; + +typedef struct VkBufferCopy2 { + VkStructureType sType; + const void* pNext; + VkDeviceSize srcOffset; + VkDeviceSize dstOffset; + VkDeviceSize size; +} VkBufferCopy2; + +typedef struct VkCopyBufferInfo2 { + VkStructureType sType; + const void* pNext; + VkBuffer srcBuffer; + VkBuffer dstBuffer; + uint32_t regionCount; + const VkBufferCopy2* pRegions; +} VkCopyBufferInfo2; + +typedef struct VkImageCopy2 { + VkStructureType sType; + const void* pNext; + VkImageSubresourceLayers srcSubresource; + VkOffset3D srcOffset; + VkImageSubresourceLayers dstSubresource; + VkOffset3D dstOffset; + VkExtent3D extent; +} VkImageCopy2; + +typedef struct VkCopyImageInfo2 { + VkStructureType sType; + const void* pNext; + VkImage srcImage; + VkImageLayout srcImageLayout; + VkImage dstImage; + VkImageLayout dstImageLayout; + uint32_t regionCount; + const VkImageCopy2* pRegions; +} VkCopyImageInfo2; + +typedef struct VkBufferImageCopy2 { + VkStructureType sType; + const void* pNext; + VkDeviceSize bufferOffset; + uint32_t bufferRowLength; + uint32_t bufferImageHeight; + VkImageSubresourceLayers imageSubresource; + VkOffset3D imageOffset; + VkExtent3D imageExtent; +} VkBufferImageCopy2; + +typedef struct VkCopyBufferToImageInfo2 { + VkStructureType sType; + const void* pNext; + VkBuffer srcBuffer; + VkImage dstImage; + VkImageLayout dstImageLayout; + uint32_t regionCount; + const VkBufferImageCopy2* pRegions; +} VkCopyBufferToImageInfo2; + +typedef struct VkCopyImageToBufferInfo2 { + VkStructureType sType; + const void* pNext; + VkImage srcImage; + VkImageLayout srcImageLayout; + VkBuffer dstBuffer; + uint32_t regionCount; + const VkBufferImageCopy2* pRegions; +} VkCopyImageToBufferInfo2; + +typedef struct VkImageBlit2 { + VkStructureType sType; + const void* pNext; + VkImageSubresourceLayers srcSubresource; + VkOffset3D srcOffsets[2]; + VkImageSubresourceLayers dstSubresource; + VkOffset3D dstOffsets[2]; +} VkImageBlit2; + +typedef struct VkBlitImageInfo2 { + VkStructureType sType; + const void* pNext; + VkImage srcImage; + VkImageLayout srcImageLayout; + VkImage dstImage; + VkImageLayout dstImageLayout; + uint32_t regionCount; + const VkImageBlit2* pRegions; + VkFilter filter; +} VkBlitImageInfo2; + +typedef struct VkImageResolve2 { + VkStructureType sType; + const void* pNext; + VkImageSubresourceLayers srcSubresource; + VkOffset3D srcOffset; + VkImageSubresourceLayers dstSubresource; + VkOffset3D dstOffset; + VkExtent3D extent; +} VkImageResolve2; + +typedef struct VkResolveImageInfo2 { + VkStructureType sType; + const void* pNext; + VkImage srcImage; + VkImageLayout srcImageLayout; + VkImage dstImage; + VkImageLayout dstImageLayout; + uint32_t regionCount; + const VkImageResolve2* pRegions; +} VkResolveImageInfo2; + +typedef struct VkPhysicalDeviceSubgroupSizeControlFeatures { + VkStructureType sType; + void* pNext; + VkBool32 subgroupSizeControl; + VkBool32 computeFullSubgroups; +} VkPhysicalDeviceSubgroupSizeControlFeatures; + +typedef struct VkPhysicalDeviceSubgroupSizeControlProperties { + VkStructureType sType; + void* pNext; + uint32_t minSubgroupSize; + uint32_t maxSubgroupSize; + uint32_t maxComputeWorkgroupSubgroups; + VkShaderStageFlags requiredSubgroupSizeStages; +} VkPhysicalDeviceSubgroupSizeControlProperties; + +typedef struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfo { + VkStructureType sType; + void* pNext; + uint32_t requiredSubgroupSize; +} VkPipelineShaderStageRequiredSubgroupSizeCreateInfo; + +typedef struct VkPhysicalDeviceInlineUniformBlockFeatures { + VkStructureType sType; + void* pNext; + VkBool32 inlineUniformBlock; + VkBool32 descriptorBindingInlineUniformBlockUpdateAfterBind; +} VkPhysicalDeviceInlineUniformBlockFeatures; + +typedef struct VkPhysicalDeviceInlineUniformBlockProperties { + VkStructureType sType; + void* pNext; + uint32_t maxInlineUniformBlockSize; + uint32_t maxPerStageDescriptorInlineUniformBlocks; + uint32_t maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks; + uint32_t maxDescriptorSetInlineUniformBlocks; + uint32_t maxDescriptorSetUpdateAfterBindInlineUniformBlocks; +} VkPhysicalDeviceInlineUniformBlockProperties; + +typedef struct VkWriteDescriptorSetInlineUniformBlock { + VkStructureType sType; + const void* pNext; + uint32_t dataSize; + const void* pData; +} VkWriteDescriptorSetInlineUniformBlock; + +typedef struct VkDescriptorPoolInlineUniformBlockCreateInfo { + VkStructureType sType; + const void* pNext; + uint32_t maxInlineUniformBlockBindings; +} VkDescriptorPoolInlineUniformBlockCreateInfo; + +typedef struct VkPhysicalDeviceTextureCompressionASTCHDRFeatures { + VkStructureType sType; + void* pNext; + VkBool32 textureCompressionASTC_HDR; +} VkPhysicalDeviceTextureCompressionASTCHDRFeatures; + +typedef struct VkRenderingAttachmentInfo { + VkStructureType sType; + const void* pNext; + VkImageView imageView; + VkImageLayout imageLayout; + VkResolveModeFlagBits resolveMode; + VkImageView resolveImageView; + VkImageLayout resolveImageLayout; + VkAttachmentLoadOp loadOp; + VkAttachmentStoreOp storeOp; + VkClearValue clearValue; +} VkRenderingAttachmentInfo; + +typedef struct VkRenderingInfo { + VkStructureType sType; + const void* pNext; + VkRenderingFlags flags; + VkRect2D renderArea; + uint32_t layerCount; + uint32_t viewMask; + uint32_t colorAttachmentCount; + const VkRenderingAttachmentInfo* pColorAttachments; + const VkRenderingAttachmentInfo* pDepthAttachment; + const VkRenderingAttachmentInfo* pStencilAttachment; +} VkRenderingInfo; + +typedef struct VkPipelineRenderingCreateInfo { + VkStructureType sType; + const void* pNext; + uint32_t viewMask; + uint32_t colorAttachmentCount; + const VkFormat* pColorAttachmentFormats; + VkFormat depthAttachmentFormat; + VkFormat stencilAttachmentFormat; +} VkPipelineRenderingCreateInfo; + +typedef struct VkPhysicalDeviceDynamicRenderingFeatures { + VkStructureType sType; + void* pNext; + VkBool32 dynamicRendering; +} VkPhysicalDeviceDynamicRenderingFeatures; + +typedef struct VkCommandBufferInheritanceRenderingInfo { + VkStructureType sType; + const void* pNext; + VkRenderingFlags flags; + uint32_t viewMask; + uint32_t colorAttachmentCount; + const VkFormat* pColorAttachmentFormats; + VkFormat depthAttachmentFormat; + VkFormat stencilAttachmentFormat; + VkSampleCountFlagBits rasterizationSamples; +} VkCommandBufferInheritanceRenderingInfo; + +typedef struct VkPhysicalDeviceShaderIntegerDotProductFeatures { + VkStructureType sType; + void* pNext; + VkBool32 shaderIntegerDotProduct; +} VkPhysicalDeviceShaderIntegerDotProductFeatures; + +typedef struct VkPhysicalDeviceShaderIntegerDotProductProperties { + VkStructureType sType; + void* pNext; + VkBool32 integerDotProduct8BitUnsignedAccelerated; + VkBool32 integerDotProduct8BitSignedAccelerated; + VkBool32 integerDotProduct8BitMixedSignednessAccelerated; + VkBool32 integerDotProduct4x8BitPackedUnsignedAccelerated; + VkBool32 integerDotProduct4x8BitPackedSignedAccelerated; + VkBool32 integerDotProduct4x8BitPackedMixedSignednessAccelerated; + VkBool32 integerDotProduct16BitUnsignedAccelerated; + VkBool32 integerDotProduct16BitSignedAccelerated; + VkBool32 integerDotProduct16BitMixedSignednessAccelerated; + VkBool32 integerDotProduct32BitUnsignedAccelerated; + VkBool32 integerDotProduct32BitSignedAccelerated; + VkBool32 integerDotProduct32BitMixedSignednessAccelerated; + VkBool32 integerDotProduct64BitUnsignedAccelerated; + VkBool32 integerDotProduct64BitSignedAccelerated; + VkBool32 integerDotProduct64BitMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating8BitUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating8BitSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating16BitUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating16BitSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating32BitUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating32BitSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating64BitUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating64BitSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated; +} VkPhysicalDeviceShaderIntegerDotProductProperties; + +typedef struct VkPhysicalDeviceTexelBufferAlignmentProperties { + VkStructureType sType; + void* pNext; + VkDeviceSize storageTexelBufferOffsetAlignmentBytes; + VkBool32 storageTexelBufferOffsetSingleTexelAlignment; + VkDeviceSize uniformTexelBufferOffsetAlignmentBytes; + VkBool32 uniformTexelBufferOffsetSingleTexelAlignment; +} VkPhysicalDeviceTexelBufferAlignmentProperties; + +typedef struct VkFormatProperties3 { + VkStructureType sType; + void* pNext; + VkFormatFeatureFlags2 linearTilingFeatures; + VkFormatFeatureFlags2 optimalTilingFeatures; + VkFormatFeatureFlags2 bufferFeatures; +} VkFormatProperties3; + +typedef struct VkPhysicalDeviceMaintenance4Features { + VkStructureType sType; + void* pNext; + VkBool32 maintenance4; +} VkPhysicalDeviceMaintenance4Features; + +typedef struct VkPhysicalDeviceMaintenance4Properties { + VkStructureType sType; + void* pNext; + VkDeviceSize maxBufferSize; +} VkPhysicalDeviceMaintenance4Properties; + +typedef struct VkDeviceBufferMemoryRequirements { + VkStructureType sType; + const void* pNext; + const VkBufferCreateInfo* pCreateInfo; +} VkDeviceBufferMemoryRequirements; + +typedef struct VkDeviceImageMemoryRequirements { + VkStructureType sType; + const void* pNext; + const VkImageCreateInfo* pCreateInfo; + VkImageAspectFlagBits planeAspect; +} VkDeviceImageMemoryRequirements; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceToolProperties)(VkPhysicalDevice physicalDevice, uint32_t* pToolCount, VkPhysicalDeviceToolProperties* pToolProperties); +typedef VkResult (VKAPI_PTR *PFN_vkCreatePrivateDataSlot)(VkDevice device, const VkPrivateDataSlotCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPrivateDataSlot* pPrivateDataSlot); +typedef void (VKAPI_PTR *PFN_vkDestroyPrivateDataSlot)(VkDevice device, VkPrivateDataSlot privateDataSlot, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkSetPrivateData)(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, uint64_t data); +typedef void (VKAPI_PTR *PFN_vkGetPrivateData)(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, uint64_t* pData); +typedef void (VKAPI_PTR *PFN_vkCmdSetEvent2)(VkCommandBuffer commandBuffer, VkEvent event, const VkDependencyInfo* pDependencyInfo); +typedef void (VKAPI_PTR *PFN_vkCmdResetEvent2)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags2 stageMask); +typedef void (VKAPI_PTR *PFN_vkCmdWaitEvents2)(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, const VkDependencyInfo* pDependencyInfos); +typedef void (VKAPI_PTR *PFN_vkCmdPipelineBarrier2)(VkCommandBuffer commandBuffer, const VkDependencyInfo* pDependencyInfo); +typedef void (VKAPI_PTR *PFN_vkCmdWriteTimestamp2)(VkCommandBuffer commandBuffer, VkPipelineStageFlags2 stage, VkQueryPool queryPool, uint32_t query); +typedef VkResult (VKAPI_PTR *PFN_vkQueueSubmit2)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo2* pSubmits, VkFence fence); +typedef void (VKAPI_PTR *PFN_vkCmdCopyBuffer2)(VkCommandBuffer commandBuffer, const VkCopyBufferInfo2* pCopyBufferInfo); +typedef void (VKAPI_PTR *PFN_vkCmdCopyImage2)(VkCommandBuffer commandBuffer, const VkCopyImageInfo2* pCopyImageInfo); +typedef void (VKAPI_PTR *PFN_vkCmdCopyBufferToImage2)(VkCommandBuffer commandBuffer, const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo); +typedef void (VKAPI_PTR *PFN_vkCmdCopyImageToBuffer2)(VkCommandBuffer commandBuffer, const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo); +typedef void (VKAPI_PTR *PFN_vkCmdBlitImage2)(VkCommandBuffer commandBuffer, const VkBlitImageInfo2* pBlitImageInfo); +typedef void (VKAPI_PTR *PFN_vkCmdResolveImage2)(VkCommandBuffer commandBuffer, const VkResolveImageInfo2* pResolveImageInfo); +typedef void (VKAPI_PTR *PFN_vkCmdBeginRendering)(VkCommandBuffer commandBuffer, const VkRenderingInfo* pRenderingInfo); +typedef void (VKAPI_PTR *PFN_vkCmdEndRendering)(VkCommandBuffer commandBuffer); +typedef void (VKAPI_PTR *PFN_vkCmdSetCullMode)(VkCommandBuffer commandBuffer, VkCullModeFlags cullMode); +typedef void (VKAPI_PTR *PFN_vkCmdSetFrontFace)(VkCommandBuffer commandBuffer, VkFrontFace frontFace); +typedef void (VKAPI_PTR *PFN_vkCmdSetPrimitiveTopology)(VkCommandBuffer commandBuffer, VkPrimitiveTopology primitiveTopology); +typedef void (VKAPI_PTR *PFN_vkCmdSetViewportWithCount)(VkCommandBuffer commandBuffer, uint32_t viewportCount, const VkViewport* pViewports); +typedef void (VKAPI_PTR *PFN_vkCmdSetScissorWithCount)(VkCommandBuffer commandBuffer, uint32_t scissorCount, const VkRect2D* pScissors); +typedef void (VKAPI_PTR *PFN_vkCmdBindVertexBuffers2)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes, const VkDeviceSize* pStrides); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthTestEnable)(VkCommandBuffer commandBuffer, VkBool32 depthTestEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthWriteEnable)(VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthCompareOp)(VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBoundsTestEnable)(VkCommandBuffer commandBuffer, VkBool32 depthBoundsTestEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetStencilTestEnable)(VkCommandBuffer commandBuffer, VkBool32 stencilTestEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetStencilOp)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, VkStencilOp failOp, VkStencilOp passOp, VkStencilOp depthFailOp, VkCompareOp compareOp); +typedef void (VKAPI_PTR *PFN_vkCmdSetRasterizerDiscardEnable)(VkCommandBuffer commandBuffer, VkBool32 rasterizerDiscardEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBiasEnable)(VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetPrimitiveRestartEnable)(VkCommandBuffer commandBuffer, VkBool32 primitiveRestartEnable); +typedef void (VKAPI_PTR *PFN_vkGetDeviceBufferMemoryRequirements)(VkDevice device, const VkDeviceBufferMemoryRequirements* pInfo, VkMemoryRequirements2* pMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkGetDeviceImageMemoryRequirements)(VkDevice device, const VkDeviceImageMemoryRequirements* pInfo, VkMemoryRequirements2* pMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkGetDeviceImageSparseMemoryRequirements)(VkDevice device, const VkDeviceImageMemoryRequirements* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceToolProperties( + VkPhysicalDevice physicalDevice, + uint32_t* pToolCount, + VkPhysicalDeviceToolProperties* pToolProperties); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreatePrivateDataSlot( + VkDevice device, + const VkPrivateDataSlotCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkPrivateDataSlot* pPrivateDataSlot); + +VKAPI_ATTR void VKAPI_CALL vkDestroyPrivateDataSlot( + VkDevice device, + VkPrivateDataSlot privateDataSlot, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkSetPrivateData( + VkDevice device, + VkObjectType objectType, + uint64_t objectHandle, + VkPrivateDataSlot privateDataSlot, + uint64_t data); + +VKAPI_ATTR void VKAPI_CALL vkGetPrivateData( + VkDevice device, + VkObjectType objectType, + uint64_t objectHandle, + VkPrivateDataSlot privateDataSlot, + uint64_t* pData); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent2( + VkCommandBuffer commandBuffer, + VkEvent event, + const VkDependencyInfo* pDependencyInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent2( + VkCommandBuffer commandBuffer, + VkEvent event, + VkPipelineStageFlags2 stageMask); + +VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents2( + VkCommandBuffer commandBuffer, + uint32_t eventCount, + const VkEvent* pEvents, + const VkDependencyInfo* pDependencyInfos); + +VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier2( + VkCommandBuffer commandBuffer, + const VkDependencyInfo* pDependencyInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp2( + VkCommandBuffer commandBuffer, + VkPipelineStageFlags2 stage, + VkQueryPool queryPool, + uint32_t query); + +VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit2( + VkQueue queue, + uint32_t submitCount, + const VkSubmitInfo2* pSubmits, + VkFence fence); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer2( + VkCommandBuffer commandBuffer, + const VkCopyBufferInfo2* pCopyBufferInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyImage2( + VkCommandBuffer commandBuffer, + const VkCopyImageInfo2* pCopyImageInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage2( + VkCommandBuffer commandBuffer, + const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer2( + VkCommandBuffer commandBuffer, + const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdBlitImage2( + VkCommandBuffer commandBuffer, + const VkBlitImageInfo2* pBlitImageInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdResolveImage2( + VkCommandBuffer commandBuffer, + const VkResolveImageInfo2* pResolveImageInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdBeginRendering( + VkCommandBuffer commandBuffer, + const VkRenderingInfo* pRenderingInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdEndRendering( + VkCommandBuffer commandBuffer); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetCullMode( + VkCommandBuffer commandBuffer, + VkCullModeFlags cullMode); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetFrontFace( + VkCommandBuffer commandBuffer, + VkFrontFace frontFace); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetPrimitiveTopology( + VkCommandBuffer commandBuffer, + VkPrimitiveTopology primitiveTopology); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportWithCount( + VkCommandBuffer commandBuffer, + uint32_t viewportCount, + const VkViewport* pViewports); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetScissorWithCount( + VkCommandBuffer commandBuffer, + uint32_t scissorCount, + const VkRect2D* pScissors); + +VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers2( + VkCommandBuffer commandBuffer, + uint32_t firstBinding, + uint32_t bindingCount, + const VkBuffer* pBuffers, + const VkDeviceSize* pOffsets, + const VkDeviceSize* pSizes, + const VkDeviceSize* pStrides); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthTestEnable( + VkCommandBuffer commandBuffer, + VkBool32 depthTestEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthWriteEnable( + VkCommandBuffer commandBuffer, + VkBool32 depthWriteEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthCompareOp( + VkCommandBuffer commandBuffer, + VkCompareOp depthCompareOp); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBoundsTestEnable( + VkCommandBuffer commandBuffer, + VkBool32 depthBoundsTestEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilTestEnable( + VkCommandBuffer commandBuffer, + VkBool32 stencilTestEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilOp( + VkCommandBuffer commandBuffer, + VkStencilFaceFlags faceMask, + VkStencilOp failOp, + VkStencilOp passOp, + VkStencilOp depthFailOp, + VkCompareOp compareOp); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetRasterizerDiscardEnable( + VkCommandBuffer commandBuffer, + VkBool32 rasterizerDiscardEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBiasEnable( + VkCommandBuffer commandBuffer, + VkBool32 depthBiasEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetPrimitiveRestartEnable( + VkCommandBuffer commandBuffer, + VkBool32 primitiveRestartEnable); + +VKAPI_ATTR void VKAPI_CALL vkGetDeviceBufferMemoryRequirements( + VkDevice device, + const VkDeviceBufferMemoryRequirements* pInfo, + VkMemoryRequirements2* pMemoryRequirements); + +VKAPI_ATTR void VKAPI_CALL vkGetDeviceImageMemoryRequirements( + VkDevice device, + const VkDeviceImageMemoryRequirements* pInfo, + VkMemoryRequirements2* pMemoryRequirements); + +VKAPI_ATTR void VKAPI_CALL vkGetDeviceImageSparseMemoryRequirements( + VkDevice device, + const VkDeviceImageMemoryRequirements* pInfo, + uint32_t* pSparseMemoryRequirementCount, + VkSparseImageMemoryRequirements2* pSparseMemoryRequirements); +#endif + + #define VK_KHR_surface 1 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR) - #define VK_KHR_SURFACE_SPEC_VERSION 25 #define VK_KHR_SURFACE_EXTENSION_NAME "VK_KHR_surface" +typedef enum VkPresentModeKHR { + VK_PRESENT_MODE_IMMEDIATE_KHR = 0, + VK_PRESENT_MODE_MAILBOX_KHR = 1, + VK_PRESENT_MODE_FIFO_KHR = 2, + VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3, + VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000, + VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001, + VK_PRESENT_MODE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkPresentModeKHR; typedef enum VkColorSpaceKHR { VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0, VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001, VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002, - VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003, + VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT = 1000104003, VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004, VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005, VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006, @@ -4661,27 +7444,12 @@ typedef enum VkColorSpaceKHR { VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012, VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013, VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = 1000104014, + VK_COLOR_SPACE_DISPLAY_NATIVE_AMD = 1000213000, VK_COLORSPACE_SRGB_NONLINEAR_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR, - VK_COLOR_SPACE_BEGIN_RANGE_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR, - VK_COLOR_SPACE_END_RANGE_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR, - VK_COLOR_SPACE_RANGE_SIZE_KHR = (VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - VK_COLOR_SPACE_SRGB_NONLINEAR_KHR + 1), + VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT, VK_COLOR_SPACE_MAX_ENUM_KHR = 0x7FFFFFFF } VkColorSpaceKHR; -typedef enum VkPresentModeKHR { - VK_PRESENT_MODE_IMMEDIATE_KHR = 0, - VK_PRESENT_MODE_MAILBOX_KHR = 1, - VK_PRESENT_MODE_FIFO_KHR = 2, - VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3, - VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000, - VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001, - VK_PRESENT_MODE_BEGIN_RANGE_KHR = VK_PRESENT_MODE_IMMEDIATE_KHR, - VK_PRESENT_MODE_END_RANGE_KHR = VK_PRESENT_MODE_FIFO_RELAXED_KHR, - VK_PRESENT_MODE_RANGE_SIZE_KHR = (VK_PRESENT_MODE_FIFO_RELAXED_KHR - VK_PRESENT_MODE_IMMEDIATE_KHR + 1), - VK_PRESENT_MODE_MAX_ENUM_KHR = 0x7FFFFFFF -} VkPresentModeKHR; - - typedef enum VkSurfaceTransformFlagBitsKHR { VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 0x00000001, VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 0x00000002, @@ -4694,7 +7462,6 @@ typedef enum VkSurfaceTransformFlagBitsKHR { VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 0x00000100, VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF } VkSurfaceTransformFlagBitsKHR; -typedef VkFlags VkSurfaceTransformFlagsKHR; typedef enum VkCompositeAlphaFlagBitsKHR { VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 0x00000001, @@ -4704,7 +7471,7 @@ typedef enum VkCompositeAlphaFlagBitsKHR { VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF } VkCompositeAlphaFlagBitsKHR; typedef VkFlags VkCompositeAlphaFlagsKHR; - +typedef VkFlags VkSurfaceTransformFlagsKHR; typedef struct VkSurfaceCapabilitiesKHR { uint32_t minImageCount; uint32_t maxImageCount; @@ -4723,7 +7490,6 @@ typedef struct VkSurfaceFormatKHR { VkColorSpaceKHR colorSpace; } VkSurfaceFormatKHR; - typedef void (VKAPI_PTR *PFN_vkDestroySurfaceKHR)(VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator); typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported); typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities); @@ -4760,16 +7526,17 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModesKHR( VkPresentModeKHR* pPresentModes); #endif + #define VK_KHR_swapchain 1 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSwapchainKHR) - #define VK_KHR_SWAPCHAIN_SPEC_VERSION 70 #define VK_KHR_SWAPCHAIN_EXTENSION_NAME "VK_KHR_swapchain" - typedef enum VkSwapchainCreateFlagBitsKHR { VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 0x00000001, VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 0x00000002, + VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 0x00000004, + VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT = 0x00000008, VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF } VkSwapchainCreateFlagBitsKHR; typedef VkFlags VkSwapchainCreateFlagsKHR; @@ -4782,7 +7549,6 @@ typedef enum VkDeviceGroupPresentModeFlagBitsKHR { VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF } VkDeviceGroupPresentModeFlagBitsKHR; typedef VkFlags VkDeviceGroupPresentModeFlagsKHR; - typedef struct VkSwapchainCreateInfoKHR { VkStructureType sType; const void* pNext; @@ -4840,7 +7606,7 @@ typedef struct VkAcquireNextImageInfoKHR { typedef struct VkDeviceGroupPresentCapabilitiesKHR { VkStructureType sType; - const void* pNext; + void* pNext; uint32_t presentMask[VK_MAX_DEVICE_GROUP_SIZE]; VkDeviceGroupPresentModeFlagsKHR modes; } VkDeviceGroupPresentCapabilitiesKHR; @@ -4859,7 +7625,6 @@ typedef struct VkDeviceGroupSwapchainCreateInfoKHR { VkDeviceGroupPresentModeFlagsKHR modes; } VkDeviceGroupSwapchainCreateInfoKHR; - typedef VkResult (VKAPI_PTR *PFN_vkCreateSwapchainKHR)(VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain); typedef void (VKAPI_PTR *PFN_vkDestroySwapchainKHR)(VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator); typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainImagesKHR)(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pSwapchainImageCount, VkImage* pSwapchainImages); @@ -4921,13 +7686,13 @@ VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImage2KHR( uint32_t* pImageIndex); #endif + #define VK_KHR_display 1 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayKHR) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayModeKHR) - -#define VK_KHR_DISPLAY_SPEC_VERSION 21 +#define VK_KHR_DISPLAY_SPEC_VERSION 23 #define VK_KHR_DISPLAY_EXTENSION_NAME "VK_KHR_display" - +typedef VkFlags VkDisplayModeCreateFlagsKHR; typedef enum VkDisplayPlaneAlphaFlagBitsKHR { VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 0x00000001, @@ -4937,29 +7702,12 @@ typedef enum VkDisplayPlaneAlphaFlagBitsKHR { VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF } VkDisplayPlaneAlphaFlagBitsKHR; typedef VkFlags VkDisplayPlaneAlphaFlagsKHR; -typedef VkFlags VkDisplayModeCreateFlagsKHR; typedef VkFlags VkDisplaySurfaceCreateFlagsKHR; - -typedef struct VkDisplayPropertiesKHR { - VkDisplayKHR display; - const char* displayName; - VkExtent2D physicalDimensions; - VkExtent2D physicalResolution; - VkSurfaceTransformFlagsKHR supportedTransforms; - VkBool32 planeReorderPossible; - VkBool32 persistentContent; -} VkDisplayPropertiesKHR; - typedef struct VkDisplayModeParametersKHR { VkExtent2D visibleRegion; uint32_t refreshRate; } VkDisplayModeParametersKHR; -typedef struct VkDisplayModePropertiesKHR { - VkDisplayModeKHR displayMode; - VkDisplayModeParametersKHR parameters; -} VkDisplayModePropertiesKHR; - typedef struct VkDisplayModeCreateInfoKHR { VkStructureType sType; const void* pNext; @@ -4967,6 +7715,11 @@ typedef struct VkDisplayModeCreateInfoKHR { VkDisplayModeParametersKHR parameters; } VkDisplayModeCreateInfoKHR; +typedef struct VkDisplayModePropertiesKHR { + VkDisplayModeKHR displayMode; + VkDisplayModeParametersKHR parameters; +} VkDisplayModePropertiesKHR; + typedef struct VkDisplayPlaneCapabilitiesKHR { VkDisplayPlaneAlphaFlagsKHR supportedAlpha; VkOffset2D minSrcPosition; @@ -4984,6 +7737,16 @@ typedef struct VkDisplayPlanePropertiesKHR { uint32_t currentStackIndex; } VkDisplayPlanePropertiesKHR; +typedef struct VkDisplayPropertiesKHR { + VkDisplayKHR display; + const char* displayName; + VkExtent2D physicalDimensions; + VkExtent2D physicalResolution; + VkSurfaceTransformFlagsKHR supportedTransforms; + VkBool32 planeReorderPossible; + VkBool32 persistentContent; +} VkDisplayPropertiesKHR; + typedef struct VkDisplaySurfaceCreateInfoKHR { VkStructureType sType; const void* pNext; @@ -4997,7 +7760,6 @@ typedef struct VkDisplaySurfaceCreateInfoKHR { VkExtent2D imageExtent; } VkDisplaySurfaceCreateInfoKHR; - typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPropertiesKHR* pProperties); typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties); typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneSupportedDisplaysKHR)(VkPhysicalDevice physicalDevice, uint32_t planeIndex, uint32_t* pDisplayCount, VkDisplayKHR* pDisplays); @@ -5049,10 +7811,10 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayPlaneSurfaceKHR( VkSurfaceKHR* pSurface); #endif -#define VK_KHR_display_swapchain 1 -#define VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION 9 -#define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME "VK_KHR_display_swapchain" +#define VK_KHR_display_swapchain 1 +#define VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION 10 +#define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME "VK_KHR_display_swapchain" typedef struct VkDisplayPresentInfoKHR { VkStructureType sType; const void* pNext; @@ -5061,7 +7823,6 @@ typedef struct VkDisplayPresentInfoKHR { VkBool32 persistent; } VkDisplayPresentInfoKHR; - typedef VkResult (VKAPI_PTR *PFN_vkCreateSharedSwapchainsKHR)(VkDevice device, uint32_t swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains); #ifndef VK_NO_PROTOTYPES @@ -5073,15 +7834,483 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateSharedSwapchainsKHR( VkSwapchainKHR* pSwapchains); #endif + #define VK_KHR_sampler_mirror_clamp_to_edge 1 -#define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION 1 +#define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION 3 #define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME "VK_KHR_sampler_mirror_clamp_to_edge" +#define VK_KHR_video_queue 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkVideoSessionKHR) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkVideoSessionParametersKHR) +#define VK_KHR_VIDEO_QUEUE_SPEC_VERSION 8 +#define VK_KHR_VIDEO_QUEUE_EXTENSION_NAME "VK_KHR_video_queue" + +typedef enum VkQueryResultStatusKHR { + VK_QUERY_RESULT_STATUS_ERROR_KHR = -1, + VK_QUERY_RESULT_STATUS_NOT_READY_KHR = 0, + VK_QUERY_RESULT_STATUS_COMPLETE_KHR = 1, + VK_QUERY_RESULT_STATUS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkQueryResultStatusKHR; + +typedef enum VkVideoCodecOperationFlagBitsKHR { + VK_VIDEO_CODEC_OPERATION_NONE_KHR = 0, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT = 0x00010000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT = 0x00020000, +#endif + VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR = 0x00000001, + VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR = 0x00000002, + VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoCodecOperationFlagBitsKHR; +typedef VkFlags VkVideoCodecOperationFlagsKHR; + +typedef enum VkVideoChromaSubsamplingFlagBitsKHR { + VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_KHR = 0, + VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR = 0x00000001, + VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR = 0x00000002, + VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR = 0x00000004, + VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR = 0x00000008, + VK_VIDEO_CHROMA_SUBSAMPLING_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoChromaSubsamplingFlagBitsKHR; +typedef VkFlags VkVideoChromaSubsamplingFlagsKHR; + +typedef enum VkVideoComponentBitDepthFlagBitsKHR { + VK_VIDEO_COMPONENT_BIT_DEPTH_INVALID_KHR = 0, + VK_VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR = 0x00000001, + VK_VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR = 0x00000004, + VK_VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR = 0x00000010, + VK_VIDEO_COMPONENT_BIT_DEPTH_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoComponentBitDepthFlagBitsKHR; +typedef VkFlags VkVideoComponentBitDepthFlagsKHR; + +typedef enum VkVideoCapabilityFlagBitsKHR { + VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 0x00000001, + VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 0x00000002, + VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoCapabilityFlagBitsKHR; +typedef VkFlags VkVideoCapabilityFlagsKHR; + +typedef enum VkVideoSessionCreateFlagBitsKHR { + VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 0x00000001, + VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoSessionCreateFlagBitsKHR; +typedef VkFlags VkVideoSessionCreateFlagsKHR; +typedef VkFlags VkVideoSessionParametersCreateFlagsKHR; +typedef VkFlags VkVideoBeginCodingFlagsKHR; +typedef VkFlags VkVideoEndCodingFlagsKHR; + +typedef enum VkVideoCodingControlFlagBitsKHR { + VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 0x00000001, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR = 0x00000002, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_LAYER_BIT_KHR = 0x00000004, +#endif + VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoCodingControlFlagBitsKHR; +typedef VkFlags VkVideoCodingControlFlagsKHR; +typedef struct VkQueueFamilyQueryResultStatusPropertiesKHR { + VkStructureType sType; + void* pNext; + VkBool32 queryResultStatusSupport; +} VkQueueFamilyQueryResultStatusPropertiesKHR; + +typedef struct VkQueueFamilyVideoPropertiesKHR { + VkStructureType sType; + void* pNext; + VkVideoCodecOperationFlagsKHR videoCodecOperations; +} VkQueueFamilyVideoPropertiesKHR; + +typedef struct VkVideoProfileInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoCodecOperationFlagBitsKHR videoCodecOperation; + VkVideoChromaSubsamplingFlagsKHR chromaSubsampling; + VkVideoComponentBitDepthFlagsKHR lumaBitDepth; + VkVideoComponentBitDepthFlagsKHR chromaBitDepth; +} VkVideoProfileInfoKHR; + +typedef struct VkVideoProfileListInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t profileCount; + const VkVideoProfileInfoKHR* pProfiles; +} VkVideoProfileListInfoKHR; + +typedef struct VkVideoCapabilitiesKHR { + VkStructureType sType; + void* pNext; + VkVideoCapabilityFlagsKHR flags; + VkDeviceSize minBitstreamBufferOffsetAlignment; + VkDeviceSize minBitstreamBufferSizeAlignment; + VkExtent2D pictureAccessGranularity; + VkExtent2D minCodedExtent; + VkExtent2D maxCodedExtent; + uint32_t maxDpbSlots; + uint32_t maxActiveReferencePictures; + VkExtensionProperties stdHeaderVersion; +} VkVideoCapabilitiesKHR; + +typedef struct VkPhysicalDeviceVideoFormatInfoKHR { + VkStructureType sType; + const void* pNext; + VkImageUsageFlags imageUsage; +} VkPhysicalDeviceVideoFormatInfoKHR; + +typedef struct VkVideoFormatPropertiesKHR { + VkStructureType sType; + void* pNext; + VkFormat format; + VkComponentMapping componentMapping; + VkImageCreateFlags imageCreateFlags; + VkImageType imageType; + VkImageTiling imageTiling; + VkImageUsageFlags imageUsageFlags; +} VkVideoFormatPropertiesKHR; + +typedef struct VkVideoPictureResourceInfoKHR { + VkStructureType sType; + const void* pNext; + VkOffset2D codedOffset; + VkExtent2D codedExtent; + uint32_t baseArrayLayer; + VkImageView imageViewBinding; +} VkVideoPictureResourceInfoKHR; + +typedef struct VkVideoReferenceSlotInfoKHR { + VkStructureType sType; + const void* pNext; + int32_t slotIndex; + const VkVideoPictureResourceInfoKHR* pPictureResource; +} VkVideoReferenceSlotInfoKHR; + +typedef struct VkVideoSessionMemoryRequirementsKHR { + VkStructureType sType; + void* pNext; + uint32_t memoryBindIndex; + VkMemoryRequirements memoryRequirements; +} VkVideoSessionMemoryRequirementsKHR; + +typedef struct VkBindVideoSessionMemoryInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t memoryBindIndex; + VkDeviceMemory memory; + VkDeviceSize memoryOffset; + VkDeviceSize memorySize; +} VkBindVideoSessionMemoryInfoKHR; + +typedef struct VkVideoSessionCreateInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t queueFamilyIndex; + VkVideoSessionCreateFlagsKHR flags; + const VkVideoProfileInfoKHR* pVideoProfile; + VkFormat pictureFormat; + VkExtent2D maxCodedExtent; + VkFormat referencePictureFormat; + uint32_t maxDpbSlots; + uint32_t maxActiveReferencePictures; + const VkExtensionProperties* pStdHeaderVersion; +} VkVideoSessionCreateInfoKHR; + +typedef struct VkVideoSessionParametersCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoSessionParametersCreateFlagsKHR flags; + VkVideoSessionParametersKHR videoSessionParametersTemplate; + VkVideoSessionKHR videoSession; +} VkVideoSessionParametersCreateInfoKHR; + +typedef struct VkVideoSessionParametersUpdateInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t updateSequenceCount; +} VkVideoSessionParametersUpdateInfoKHR; + +typedef struct VkVideoBeginCodingInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoBeginCodingFlagsKHR flags; + VkVideoSessionKHR videoSession; + VkVideoSessionParametersKHR videoSessionParameters; + uint32_t referenceSlotCount; + const VkVideoReferenceSlotInfoKHR* pReferenceSlots; +} VkVideoBeginCodingInfoKHR; + +typedef struct VkVideoEndCodingInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoEndCodingFlagsKHR flags; +} VkVideoEndCodingInfoKHR; + +typedef struct VkVideoCodingControlInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoCodingControlFlagsKHR flags; +} VkVideoCodingControlInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR)(VkPhysicalDevice physicalDevice, const VkVideoProfileInfoKHR* pVideoProfile, VkVideoCapabilitiesKHR* pCapabilities); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo, uint32_t* pVideoFormatPropertyCount, VkVideoFormatPropertiesKHR* pVideoFormatProperties); +typedef VkResult (VKAPI_PTR *PFN_vkCreateVideoSessionKHR)(VkDevice device, const VkVideoSessionCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionKHR* pVideoSession); +typedef void (VKAPI_PTR *PFN_vkDestroyVideoSessionKHR)(VkDevice device, VkVideoSessionKHR videoSession, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkGetVideoSessionMemoryRequirementsKHR)(VkDevice device, VkVideoSessionKHR videoSession, uint32_t* pMemoryRequirementsCount, VkVideoSessionMemoryRequirementsKHR* pMemoryRequirements); +typedef VkResult (VKAPI_PTR *PFN_vkBindVideoSessionMemoryKHR)(VkDevice device, VkVideoSessionKHR videoSession, uint32_t bindSessionMemoryInfoCount, const VkBindVideoSessionMemoryInfoKHR* pBindSessionMemoryInfos); +typedef VkResult (VKAPI_PTR *PFN_vkCreateVideoSessionParametersKHR)(VkDevice device, const VkVideoSessionParametersCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionParametersKHR* pVideoSessionParameters); +typedef VkResult (VKAPI_PTR *PFN_vkUpdateVideoSessionParametersKHR)(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo); +typedef void (VKAPI_PTR *PFN_vkDestroyVideoSessionParametersKHR)(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkCmdBeginVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoBeginCodingInfoKHR* pBeginInfo); +typedef void (VKAPI_PTR *PFN_vkCmdEndVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoEndCodingInfoKHR* pEndCodingInfo); +typedef void (VKAPI_PTR *PFN_vkCmdControlVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoCodingControlInfoKHR* pCodingControlInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoCapabilitiesKHR( + VkPhysicalDevice physicalDevice, + const VkVideoProfileInfoKHR* pVideoProfile, + VkVideoCapabilitiesKHR* pCapabilities); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoFormatPropertiesKHR( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo, + uint32_t* pVideoFormatPropertyCount, + VkVideoFormatPropertiesKHR* pVideoFormatProperties); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateVideoSessionKHR( + VkDevice device, + const VkVideoSessionCreateInfoKHR* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkVideoSessionKHR* pVideoSession); + +VKAPI_ATTR void VKAPI_CALL vkDestroyVideoSessionKHR( + VkDevice device, + VkVideoSessionKHR videoSession, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetVideoSessionMemoryRequirementsKHR( + VkDevice device, + VkVideoSessionKHR videoSession, + uint32_t* pMemoryRequirementsCount, + VkVideoSessionMemoryRequirementsKHR* pMemoryRequirements); + +VKAPI_ATTR VkResult VKAPI_CALL vkBindVideoSessionMemoryKHR( + VkDevice device, + VkVideoSessionKHR videoSession, + uint32_t bindSessionMemoryInfoCount, + const VkBindVideoSessionMemoryInfoKHR* pBindSessionMemoryInfos); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateVideoSessionParametersKHR( + VkDevice device, + const VkVideoSessionParametersCreateInfoKHR* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkVideoSessionParametersKHR* pVideoSessionParameters); + +VKAPI_ATTR VkResult VKAPI_CALL vkUpdateVideoSessionParametersKHR( + VkDevice device, + VkVideoSessionParametersKHR videoSessionParameters, + const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo); + +VKAPI_ATTR void VKAPI_CALL vkDestroyVideoSessionParametersKHR( + VkDevice device, + VkVideoSessionParametersKHR videoSessionParameters, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR void VKAPI_CALL vkCmdBeginVideoCodingKHR( + VkCommandBuffer commandBuffer, + const VkVideoBeginCodingInfoKHR* pBeginInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdEndVideoCodingKHR( + VkCommandBuffer commandBuffer, + const VkVideoEndCodingInfoKHR* pEndCodingInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdControlVideoCodingKHR( + VkCommandBuffer commandBuffer, + const VkVideoCodingControlInfoKHR* pCodingControlInfo); +#endif + + +#define VK_KHR_video_decode_queue 1 +#define VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION 7 +#define VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME "VK_KHR_video_decode_queue" + +typedef enum VkVideoDecodeCapabilityFlagBitsKHR { + VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR = 0x00000001, + VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR = 0x00000002, + VK_VIDEO_DECODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoDecodeCapabilityFlagBitsKHR; +typedef VkFlags VkVideoDecodeCapabilityFlagsKHR; + +typedef enum VkVideoDecodeUsageFlagBitsKHR { + VK_VIDEO_DECODE_USAGE_DEFAULT_KHR = 0, + VK_VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR = 0x00000001, + VK_VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR = 0x00000002, + VK_VIDEO_DECODE_USAGE_STREAMING_BIT_KHR = 0x00000004, + VK_VIDEO_DECODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoDecodeUsageFlagBitsKHR; +typedef VkFlags VkVideoDecodeUsageFlagsKHR; +typedef VkFlags VkVideoDecodeFlagsKHR; +typedef struct VkVideoDecodeCapabilitiesKHR { + VkStructureType sType; + void* pNext; + VkVideoDecodeCapabilityFlagsKHR flags; +} VkVideoDecodeCapabilitiesKHR; + +typedef struct VkVideoDecodeUsageInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoDecodeUsageFlagsKHR videoUsageHints; +} VkVideoDecodeUsageInfoKHR; + +typedef struct VkVideoDecodeInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoDecodeFlagsKHR flags; + VkBuffer srcBuffer; + VkDeviceSize srcBufferOffset; + VkDeviceSize srcBufferRange; + VkVideoPictureResourceInfoKHR dstPictureResource; + const VkVideoReferenceSlotInfoKHR* pSetupReferenceSlot; + uint32_t referenceSlotCount; + const VkVideoReferenceSlotInfoKHR* pReferenceSlots; +} VkVideoDecodeInfoKHR; + +typedef void (VKAPI_PTR *PFN_vkCmdDecodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoDecodeInfoKHR* pDecodeInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDecodeVideoKHR( + VkCommandBuffer commandBuffer, + const VkVideoDecodeInfoKHR* pDecodeInfo); +#endif + +#if 0 +#define VK_KHR_video_decode_h264 1 +#include "vk_video/vulkan_video_codec_h264std.h" +#include "vk_video/vulkan_video_codec_h264std_decode.h" +#define VK_KHR_VIDEO_DECODE_H264_SPEC_VERSION 8 +#define VK_KHR_VIDEO_DECODE_H264_EXTENSION_NAME "VK_KHR_video_decode_h264" + +typedef enum VkVideoDecodeH264PictureLayoutFlagBitsKHR { + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR = 0, + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR = 0x00000001, + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR = 0x00000002, + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoDecodeH264PictureLayoutFlagBitsKHR; +typedef VkFlags VkVideoDecodeH264PictureLayoutFlagsKHR; +typedef struct VkVideoDecodeH264ProfileInfoKHR { + VkStructureType sType; + const void* pNext; + StdVideoH264ProfileIdc stdProfileIdc; + VkVideoDecodeH264PictureLayoutFlagBitsKHR pictureLayout; +} VkVideoDecodeH264ProfileInfoKHR; + +typedef struct VkVideoDecodeH264CapabilitiesKHR { + VkStructureType sType; + void* pNext; + StdVideoH264LevelIdc maxLevelIdc; + VkOffset2D fieldOffsetGranularity; +} VkVideoDecodeH264CapabilitiesKHR; + +typedef struct VkVideoDecodeH264SessionParametersAddInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t stdSPSCount; + const StdVideoH264SequenceParameterSet* pStdSPSs; + uint32_t stdPPSCount; + const StdVideoH264PictureParameterSet* pStdPPSs; +} VkVideoDecodeH264SessionParametersAddInfoKHR; + +typedef struct VkVideoDecodeH264SessionParametersCreateInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t maxStdSPSCount; + uint32_t maxStdPPSCount; + const VkVideoDecodeH264SessionParametersAddInfoKHR* pParametersAddInfo; +} VkVideoDecodeH264SessionParametersCreateInfoKHR; + +typedef struct VkVideoDecodeH264PictureInfoKHR { + VkStructureType sType; + const void* pNext; + const StdVideoDecodeH264PictureInfo* pStdPictureInfo; + uint32_t sliceCount; + const uint32_t* pSliceOffsets; +} VkVideoDecodeH264PictureInfoKHR; + +typedef struct VkVideoDecodeH264DpbSlotInfoKHR { + VkStructureType sType; + const void* pNext; + const StdVideoDecodeH264ReferenceInfo* pStdReferenceInfo; +} VkVideoDecodeH264DpbSlotInfoKHR; + +#endif + +#define VK_KHR_dynamic_rendering 1 +#define VK_KHR_DYNAMIC_RENDERING_SPEC_VERSION 1 +#define VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME "VK_KHR_dynamic_rendering" +typedef VkRenderingFlags VkRenderingFlagsKHR; + +typedef VkRenderingFlagBits VkRenderingFlagBitsKHR; + +typedef VkRenderingInfo VkRenderingInfoKHR; + +typedef VkRenderingAttachmentInfo VkRenderingAttachmentInfoKHR; + +typedef VkPipelineRenderingCreateInfo VkPipelineRenderingCreateInfoKHR; + +typedef VkPhysicalDeviceDynamicRenderingFeatures VkPhysicalDeviceDynamicRenderingFeaturesKHR; + +typedef VkCommandBufferInheritanceRenderingInfo VkCommandBufferInheritanceRenderingInfoKHR; + +typedef struct VkRenderingFragmentShadingRateAttachmentInfoKHR { + VkStructureType sType; + const void* pNext; + VkImageView imageView; + VkImageLayout imageLayout; + VkExtent2D shadingRateAttachmentTexelSize; +} VkRenderingFragmentShadingRateAttachmentInfoKHR; + +typedef struct VkRenderingFragmentDensityMapAttachmentInfoEXT { + VkStructureType sType; + const void* pNext; + VkImageView imageView; + VkImageLayout imageLayout; +} VkRenderingFragmentDensityMapAttachmentInfoEXT; + +typedef struct VkAttachmentSampleCountInfoAMD { + VkStructureType sType; + const void* pNext; + uint32_t colorAttachmentCount; + const VkSampleCountFlagBits* pColorAttachmentSamples; + VkSampleCountFlagBits depthStencilAttachmentSamples; +} VkAttachmentSampleCountInfoAMD; + +typedef VkAttachmentSampleCountInfoAMD VkAttachmentSampleCountInfoNV; + +typedef struct VkMultiviewPerViewAttributesInfoNVX { + VkStructureType sType; + const void* pNext; + VkBool32 perViewAttributes; + VkBool32 perViewAttributesPositionXOnly; +} VkMultiviewPerViewAttributesInfoNVX; + +typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderingKHR)(VkCommandBuffer commandBuffer, const VkRenderingInfo* pRenderingInfo); +typedef void (VKAPI_PTR *PFN_vkCmdEndRenderingKHR)(VkCommandBuffer commandBuffer); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderingKHR( + VkCommandBuffer commandBuffer, + const VkRenderingInfo* pRenderingInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderingKHR( + VkCommandBuffer commandBuffer); +#endif + + #define VK_KHR_multiview 1 #define VK_KHR_MULTIVIEW_SPEC_VERSION 1 #define VK_KHR_MULTIVIEW_EXTENSION_NAME "VK_KHR_multiview" - typedef VkRenderPassMultiviewCreateInfo VkRenderPassMultiviewCreateInfoKHR; typedef VkPhysicalDeviceMultiviewFeatures VkPhysicalDeviceMultiviewFeaturesKHR; @@ -5091,9 +8320,8 @@ typedef VkPhysicalDeviceMultiviewProperties VkPhysicalDeviceMultiviewPropertiesK #define VK_KHR_get_physical_device_properties2 1 -#define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION 1 +#define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION 2 #define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_physical_device_properties2" - typedef VkPhysicalDeviceFeatures2 VkPhysicalDeviceFeatures2KHR; typedef VkPhysicalDeviceProperties2 VkPhysicalDeviceProperties2KHR; @@ -5112,7 +8340,6 @@ typedef VkSparseImageFormatProperties2 VkSparseImageFormatProperties2KHR; typedef VkPhysicalDeviceSparseImageFormatInfo2 VkPhysicalDeviceSparseImageFormatInfo2KHR; - typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures); typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties); typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties2KHR)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties); @@ -5156,10 +8383,10 @@ VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties2KHR( VkSparseImageFormatProperties2* pProperties); #endif -#define VK_KHR_device_group 1 -#define VK_KHR_DEVICE_GROUP_SPEC_VERSION 3 -#define VK_KHR_DEVICE_GROUP_EXTENSION_NAME "VK_KHR_device_group" +#define VK_KHR_device_group 1 +#define VK_KHR_DEVICE_GROUP_SPEC_VERSION 4 +#define VK_KHR_DEVICE_GROUP_EXTENSION_NAME "VK_KHR_device_group" typedef VkPeerMemoryFeatureFlags VkPeerMemoryFeatureFlagsKHR; typedef VkPeerMemoryFeatureFlagBits VkPeerMemoryFeatureFlagBitsKHR; @@ -5168,7 +8395,6 @@ typedef VkMemoryAllocateFlags VkMemoryAllocateFlagsKHR; typedef VkMemoryAllocateFlagBits VkMemoryAllocateFlagBitsKHR; - typedef VkMemoryAllocateFlagsInfo VkMemoryAllocateFlagsInfoKHR; typedef VkDeviceGroupRenderPassBeginInfo VkDeviceGroupRenderPassBeginInfoKHR; @@ -5183,7 +8409,6 @@ typedef VkBindBufferMemoryDeviceGroupInfo VkBindBufferMemoryDeviceGroupInfoKHR; typedef VkBindImageMemoryDeviceGroupInfo VkBindImageMemoryDeviceGroupInfoKHR; - typedef void (VKAPI_PTR *PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR)(VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures); typedef void (VKAPI_PTR *PFN_vkCmdSetDeviceMaskKHR)(VkCommandBuffer commandBuffer, uint32_t deviceMask); typedef void (VKAPI_PTR *PFN_vkCmdDispatchBaseKHR)(VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ); @@ -5210,18 +8435,19 @@ VKAPI_ATTR void VKAPI_CALL vkCmdDispatchBaseKHR( uint32_t groupCountZ); #endif + #define VK_KHR_shader_draw_parameters 1 #define VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION 1 #define VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME "VK_KHR_shader_draw_parameters" #define VK_KHR_maintenance1 1 -#define VK_KHR_MAINTENANCE1_SPEC_VERSION 2 -#define VK_KHR_MAINTENANCE1_EXTENSION_NAME "VK_KHR_maintenance1" - +#define VK_KHR_MAINTENANCE_1_SPEC_VERSION 2 +#define VK_KHR_MAINTENANCE_1_EXTENSION_NAME "VK_KHR_maintenance1" +#define VK_KHR_MAINTENANCE1_SPEC_VERSION VK_KHR_MAINTENANCE_1_SPEC_VERSION +#define VK_KHR_MAINTENANCE1_EXTENSION_NAME VK_KHR_MAINTENANCE_1_EXTENSION_NAME typedef VkCommandPoolTrimFlags VkCommandPoolTrimFlagsKHR; - typedef void (VKAPI_PTR *PFN_vkTrimCommandPoolKHR)(VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags); #ifndef VK_NO_PROTOTYPES @@ -5231,16 +8457,15 @@ VKAPI_ATTR void VKAPI_CALL vkTrimCommandPoolKHR( VkCommandPoolTrimFlags flags); #endif + #define VK_KHR_device_group_creation 1 #define VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION 1 #define VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME "VK_KHR_device_group_creation" #define VK_MAX_DEVICE_GROUP_SIZE_KHR VK_MAX_DEVICE_GROUP_SIZE - typedef VkPhysicalDeviceGroupProperties VkPhysicalDeviceGroupPropertiesKHR; typedef VkDeviceGroupDeviceCreateInfo VkDeviceGroupDeviceCreateInfoKHR; - typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceGroupsKHR)(VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties); #ifndef VK_NO_PROTOTYPES @@ -5250,11 +8475,11 @@ VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceGroupsKHR( VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties); #endif + #define VK_KHR_external_memory_capabilities 1 #define VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1 #define VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_memory_capabilities" #define VK_LUID_SIZE_KHR VK_LUID_SIZE - typedef VkExternalMemoryHandleTypeFlags VkExternalMemoryHandleTypeFlagsKHR; typedef VkExternalMemoryHandleTypeFlagBits VkExternalMemoryHandleTypeFlagBitsKHR; @@ -5263,7 +8488,6 @@ typedef VkExternalMemoryFeatureFlags VkExternalMemoryFeatureFlagsKHR; typedef VkExternalMemoryFeatureFlagBits VkExternalMemoryFeatureFlagBitsKHR; - typedef VkExternalMemoryProperties VkExternalMemoryPropertiesKHR; typedef VkPhysicalDeviceExternalImageFormatInfo VkPhysicalDeviceExternalImageFormatInfoKHR; @@ -5276,7 +8500,6 @@ typedef VkExternalBufferProperties VkExternalBufferPropertiesKHR; typedef VkPhysicalDeviceIDProperties VkPhysicalDeviceIDPropertiesKHR; - typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties); #ifndef VK_NO_PROTOTYPES @@ -5286,11 +8509,11 @@ VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalBufferPropertiesKHR( VkExternalBufferProperties* pExternalBufferProperties); #endif + #define VK_KHR_external_memory 1 #define VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION 1 #define VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME "VK_KHR_external_memory" #define VK_QUEUE_FAMILY_EXTERNAL_KHR VK_QUEUE_FAMILY_EXTERNAL - typedef VkExternalMemoryImageCreateInfo VkExternalMemoryImageCreateInfoKHR; typedef VkExternalMemoryBufferCreateInfo VkExternalMemoryBufferCreateInfoKHR; @@ -5302,7 +8525,6 @@ typedef VkExportMemoryAllocateInfo VkExportMemoryAllocateInfoKHR; #define VK_KHR_external_memory_fd 1 #define VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION 1 #define VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME "VK_KHR_external_memory_fd" - typedef struct VkImportMemoryFdInfoKHR { VkStructureType sType; const void* pNext; @@ -5323,7 +8545,6 @@ typedef struct VkMemoryGetFdInfoKHR { VkExternalMemoryHandleTypeFlagBits handleType; } VkMemoryGetFdInfoKHR; - typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryFdKHR)(VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo, int* pFd); typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryFdPropertiesKHR)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties); @@ -5340,10 +8561,10 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryFdPropertiesKHR( VkMemoryFdPropertiesKHR* pMemoryFdProperties); #endif + #define VK_KHR_external_semaphore_capabilities 1 #define VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION 1 #define VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_semaphore_capabilities" - typedef VkExternalSemaphoreHandleTypeFlags VkExternalSemaphoreHandleTypeFlagsKHR; typedef VkExternalSemaphoreHandleTypeFlagBits VkExternalSemaphoreHandleTypeFlagBitsKHR; @@ -5352,12 +8573,10 @@ typedef VkExternalSemaphoreFeatureFlags VkExternalSemaphoreFeatureFlagsKHR; typedef VkExternalSemaphoreFeatureFlagBits VkExternalSemaphoreFeatureFlagBitsKHR; - typedef VkPhysicalDeviceExternalSemaphoreInfo VkPhysicalDeviceExternalSemaphoreInfoKHR; typedef VkExternalSemaphoreProperties VkExternalSemaphorePropertiesKHR; - typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties); #ifndef VK_NO_PROTOTYPES @@ -5367,15 +8586,14 @@ VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( VkExternalSemaphoreProperties* pExternalSemaphoreProperties); #endif + #define VK_KHR_external_semaphore 1 #define VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION 1 #define VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME "VK_KHR_external_semaphore" - typedef VkSemaphoreImportFlags VkSemaphoreImportFlagsKHR; typedef VkSemaphoreImportFlagBits VkSemaphoreImportFlagBitsKHR; - typedef VkExportSemaphoreCreateInfo VkExportSemaphoreCreateInfoKHR; @@ -5383,7 +8601,6 @@ typedef VkExportSemaphoreCreateInfo VkExportSemaphoreCreateInfoKHR; #define VK_KHR_external_semaphore_fd 1 #define VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION 1 #define VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME "VK_KHR_external_semaphore_fd" - typedef struct VkImportSemaphoreFdInfoKHR { VkStructureType sType; const void* pNext; @@ -5400,7 +8617,6 @@ typedef struct VkSemaphoreGetFdInfoKHR { VkExternalSemaphoreHandleTypeFlagBits handleType; } VkSemaphoreGetFdInfoKHR; - typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreFdKHR)(VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo); typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreFdKHR)(VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd); @@ -5415,17 +8631,16 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreFdKHR( int* pFd); #endif + #define VK_KHR_push_descriptor 1 #define VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION 2 #define VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME "VK_KHR_push_descriptor" - typedef struct VkPhysicalDevicePushDescriptorPropertiesKHR { VkStructureType sType; void* pNext; uint32_t maxPushDescriptors; } VkPhysicalDevicePushDescriptorPropertiesKHR; - typedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSetKHR)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites); typedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSetWithTemplateKHR)(VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate, VkPipelineLayout layout, uint32_t set, const void* pData); @@ -5446,18 +8661,26 @@ VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSetWithTemplateKHR( const void* pData); #endif + +#define VK_KHR_shader_float16_int8 1 +#define VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION 1 +#define VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME "VK_KHR_shader_float16_int8" +typedef VkPhysicalDeviceShaderFloat16Int8Features VkPhysicalDeviceShaderFloat16Int8FeaturesKHR; + +typedef VkPhysicalDeviceShaderFloat16Int8Features VkPhysicalDeviceFloat16Int8FeaturesKHR; + + + #define VK_KHR_16bit_storage 1 #define VK_KHR_16BIT_STORAGE_SPEC_VERSION 1 #define VK_KHR_16BIT_STORAGE_EXTENSION_NAME "VK_KHR_16bit_storage" - typedef VkPhysicalDevice16BitStorageFeatures VkPhysicalDevice16BitStorageFeaturesKHR; #define VK_KHR_incremental_present 1 -#define VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION 1 +#define VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION 2 #define VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME "VK_KHR_incremental_present" - typedef struct VkRectLayerKHR { VkOffset2D offset; VkExtent2D extent; @@ -5481,21 +8704,16 @@ typedef struct VkPresentRegionsKHR { #define VK_KHR_descriptor_update_template 1 typedef VkDescriptorUpdateTemplate VkDescriptorUpdateTemplateKHR; - #define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION 1 #define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME "VK_KHR_descriptor_update_template" - typedef VkDescriptorUpdateTemplateType VkDescriptorUpdateTemplateTypeKHR; - typedef VkDescriptorUpdateTemplateCreateFlags VkDescriptorUpdateTemplateCreateFlagsKHR; - typedef VkDescriptorUpdateTemplateEntry VkDescriptorUpdateTemplateEntryKHR; typedef VkDescriptorUpdateTemplateCreateInfo VkDescriptorUpdateTemplateCreateInfoKHR; - typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorUpdateTemplateKHR)(VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate); typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorUpdateTemplateKHR)(VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator); typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSetWithTemplateKHR)(VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData); @@ -5519,125 +8737,74 @@ VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSetWithTemplateKHR( const void* pData); #endif + +#define VK_KHR_imageless_framebuffer 1 +#define VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION 1 +#define VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME "VK_KHR_imageless_framebuffer" +typedef VkPhysicalDeviceImagelessFramebufferFeatures VkPhysicalDeviceImagelessFramebufferFeaturesKHR; + +typedef VkFramebufferAttachmentsCreateInfo VkFramebufferAttachmentsCreateInfoKHR; + +typedef VkFramebufferAttachmentImageInfo VkFramebufferAttachmentImageInfoKHR; + +typedef VkRenderPassAttachmentBeginInfo VkRenderPassAttachmentBeginInfoKHR; + + + #define VK_KHR_create_renderpass2 1 #define VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION 1 #define VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME "VK_KHR_create_renderpass2" +typedef VkRenderPassCreateInfo2 VkRenderPassCreateInfo2KHR; -typedef struct VkAttachmentDescription2KHR { - VkStructureType sType; - const void* pNext; - VkAttachmentDescriptionFlags flags; - VkFormat format; - VkSampleCountFlagBits samples; - VkAttachmentLoadOp loadOp; - VkAttachmentStoreOp storeOp; - VkAttachmentLoadOp stencilLoadOp; - VkAttachmentStoreOp stencilStoreOp; - VkImageLayout initialLayout; - VkImageLayout finalLayout; -} VkAttachmentDescription2KHR; +typedef VkAttachmentDescription2 VkAttachmentDescription2KHR; -typedef struct VkAttachmentReference2KHR { - VkStructureType sType; - const void* pNext; - uint32_t attachment; - VkImageLayout layout; - VkImageAspectFlags aspectMask; -} VkAttachmentReference2KHR; +typedef VkAttachmentReference2 VkAttachmentReference2KHR; -typedef struct VkSubpassDescription2KHR { - VkStructureType sType; - const void* pNext; - VkSubpassDescriptionFlags flags; - VkPipelineBindPoint pipelineBindPoint; - uint32_t viewMask; - uint32_t inputAttachmentCount; - const VkAttachmentReference2KHR* pInputAttachments; - uint32_t colorAttachmentCount; - const VkAttachmentReference2KHR* pColorAttachments; - const VkAttachmentReference2KHR* pResolveAttachments; - const VkAttachmentReference2KHR* pDepthStencilAttachment; - uint32_t preserveAttachmentCount; - const uint32_t* pPreserveAttachments; -} VkSubpassDescription2KHR; +typedef VkSubpassDescription2 VkSubpassDescription2KHR; -typedef struct VkSubpassDependency2KHR { - VkStructureType sType; - const void* pNext; - uint32_t srcSubpass; - uint32_t dstSubpass; - VkPipelineStageFlags srcStageMask; - VkPipelineStageFlags dstStageMask; - VkAccessFlags srcAccessMask; - VkAccessFlags dstAccessMask; - VkDependencyFlags dependencyFlags; - int32_t viewOffset; -} VkSubpassDependency2KHR; +typedef VkSubpassDependency2 VkSubpassDependency2KHR; -typedef struct VkRenderPassCreateInfo2KHR { - VkStructureType sType; - const void* pNext; - VkRenderPassCreateFlags flags; - uint32_t attachmentCount; - const VkAttachmentDescription2KHR* pAttachments; - uint32_t subpassCount; - const VkSubpassDescription2KHR* pSubpasses; - uint32_t dependencyCount; - const VkSubpassDependency2KHR* pDependencies; - uint32_t correlatedViewMaskCount; - const uint32_t* pCorrelatedViewMasks; -} VkRenderPassCreateInfo2KHR; +typedef VkSubpassBeginInfo VkSubpassBeginInfoKHR; -typedef struct VkSubpassBeginInfoKHR { - VkStructureType sType; - const void* pNext; - VkSubpassContents contents; -} VkSubpassBeginInfoKHR; +typedef VkSubpassEndInfo VkSubpassEndInfoKHR; -typedef struct VkSubpassEndInfoKHR { - VkStructureType sType; - const void* pNext; -} VkSubpassEndInfoKHR; - - -typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass2KHR)(VkDevice device, const VkRenderPassCreateInfo2KHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass); -typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfoKHR* pSubpassBeginInfo); -typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassBeginInfoKHR* pSubpassBeginInfo, const VkSubpassEndInfoKHR* pSubpassEndInfo); -typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassEndInfoKHR* pSubpassEndInfo); +typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass2KHR)(VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass); +typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfo* pSubpassBeginInfo); +typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, const VkSubpassEndInfo* pSubpassEndInfo); +typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo); #ifndef VK_NO_PROTOTYPES VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass2KHR( VkDevice device, - const VkRenderPassCreateInfo2KHR* pCreateInfo, + const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass); VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass2KHR( VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, - const VkSubpassBeginInfoKHR* pSubpassBeginInfo); + const VkSubpassBeginInfo* pSubpassBeginInfo); VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass2KHR( VkCommandBuffer commandBuffer, - const VkSubpassBeginInfoKHR* pSubpassBeginInfo, - const VkSubpassEndInfoKHR* pSubpassEndInfo); + const VkSubpassBeginInfo* pSubpassBeginInfo, + const VkSubpassEndInfo* pSubpassEndInfo); VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass2KHR( VkCommandBuffer commandBuffer, - const VkSubpassEndInfoKHR* pSubpassEndInfo); + const VkSubpassEndInfo* pSubpassEndInfo); #endif + #define VK_KHR_shared_presentable_image 1 #define VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION 1 #define VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME "VK_KHR_shared_presentable_image" - typedef struct VkSharedPresentSurfaceCapabilitiesKHR { VkStructureType sType; void* pNext; VkImageUsageFlags sharedPresentSupportedUsageFlags; } VkSharedPresentSurfaceCapabilitiesKHR; - typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainStatusKHR)(VkDevice device, VkSwapchainKHR swapchain); #ifndef VK_NO_PROTOTYPES @@ -5646,10 +8813,10 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainStatusKHR( VkSwapchainKHR swapchain); #endif + #define VK_KHR_external_fence_capabilities 1 #define VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION 1 #define VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_fence_capabilities" - typedef VkExternalFenceHandleTypeFlags VkExternalFenceHandleTypeFlagsKHR; typedef VkExternalFenceHandleTypeFlagBits VkExternalFenceHandleTypeFlagBitsKHR; @@ -5658,12 +8825,10 @@ typedef VkExternalFenceFeatureFlags VkExternalFenceFeatureFlagsKHR; typedef VkExternalFenceFeatureFlagBits VkExternalFenceFeatureFlagBitsKHR; - typedef VkPhysicalDeviceExternalFenceInfo VkPhysicalDeviceExternalFenceInfoKHR; typedef VkExternalFenceProperties VkExternalFencePropertiesKHR; - typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties); #ifndef VK_NO_PROTOTYPES @@ -5673,15 +8838,14 @@ VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalFencePropertiesKHR( VkExternalFenceProperties* pExternalFenceProperties); #endif + #define VK_KHR_external_fence 1 #define VK_KHR_EXTERNAL_FENCE_SPEC_VERSION 1 #define VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME "VK_KHR_external_fence" - typedef VkFenceImportFlags VkFenceImportFlagsKHR; typedef VkFenceImportFlagBits VkFenceImportFlagBitsKHR; - typedef VkExportFenceCreateInfo VkExportFenceCreateInfoKHR; @@ -5689,7 +8853,6 @@ typedef VkExportFenceCreateInfo VkExportFenceCreateInfoKHR; #define VK_KHR_external_fence_fd 1 #define VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION 1 #define VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME "VK_KHR_external_fence_fd" - typedef struct VkImportFenceFdInfoKHR { VkStructureType sType; const void* pNext; @@ -5706,7 +8869,6 @@ typedef struct VkFenceGetFdInfoKHR { VkExternalFenceHandleTypeFlagBits handleType; } VkFenceGetFdInfoKHR; - typedef VkResult (VKAPI_PTR *PFN_vkImportFenceFdKHR)(VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo); typedef VkResult (VKAPI_PTR *PFN_vkGetFenceFdKHR)(VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd); @@ -5721,15 +8883,156 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceFdKHR( int* pFd); #endif -#define VK_KHR_maintenance2 1 -#define VK_KHR_MAINTENANCE2_SPEC_VERSION 1 -#define VK_KHR_MAINTENANCE2_EXTENSION_NAME "VK_KHR_maintenance2" +#define VK_KHR_performance_query 1 +#define VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION 1 +#define VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME "VK_KHR_performance_query" + +typedef enum VkPerformanceCounterUnitKHR { + VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0, + VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1, + VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2, + VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3, + VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4, + VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5, + VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6, + VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7, + VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8, + VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9, + VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10, + VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 0x7FFFFFFF +} VkPerformanceCounterUnitKHR; + +typedef enum VkPerformanceCounterScopeKHR { + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0, + VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1, + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2, + VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR, + VK_QUERY_SCOPE_RENDER_PASS_KHR = VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR, + VK_QUERY_SCOPE_COMMAND_KHR = VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR, + VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkPerformanceCounterScopeKHR; + +typedef enum VkPerformanceCounterStorageKHR { + VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0, + VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1, + VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2, + VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3, + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4, + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5, + VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkPerformanceCounterStorageKHR; + +typedef enum VkPerformanceCounterDescriptionFlagBitsKHR { + VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR = 0x00000001, + VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR = 0x00000002, + VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR, + VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR, + VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkPerformanceCounterDescriptionFlagBitsKHR; +typedef VkFlags VkPerformanceCounterDescriptionFlagsKHR; + +typedef enum VkAcquireProfilingLockFlagBitsKHR { + VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkAcquireProfilingLockFlagBitsKHR; +typedef VkFlags VkAcquireProfilingLockFlagsKHR; +typedef struct VkPhysicalDevicePerformanceQueryFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 performanceCounterQueryPools; + VkBool32 performanceCounterMultipleQueryPools; +} VkPhysicalDevicePerformanceQueryFeaturesKHR; + +typedef struct VkPhysicalDevicePerformanceQueryPropertiesKHR { + VkStructureType sType; + void* pNext; + VkBool32 allowCommandBufferQueryCopies; +} VkPhysicalDevicePerformanceQueryPropertiesKHR; + +typedef struct VkPerformanceCounterKHR { + VkStructureType sType; + void* pNext; + VkPerformanceCounterUnitKHR unit; + VkPerformanceCounterScopeKHR scope; + VkPerformanceCounterStorageKHR storage; + uint8_t uuid[VK_UUID_SIZE]; +} VkPerformanceCounterKHR; + +typedef struct VkPerformanceCounterDescriptionKHR { + VkStructureType sType; + void* pNext; + VkPerformanceCounterDescriptionFlagsKHR flags; + char name[VK_MAX_DESCRIPTION_SIZE]; + char category[VK_MAX_DESCRIPTION_SIZE]; + char description[VK_MAX_DESCRIPTION_SIZE]; +} VkPerformanceCounterDescriptionKHR; + +typedef struct VkQueryPoolPerformanceCreateInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t queueFamilyIndex; + uint32_t counterIndexCount; + const uint32_t* pCounterIndices; +} VkQueryPoolPerformanceCreateInfoKHR; + +typedef union VkPerformanceCounterResultKHR { + int32_t int32; + int64_t int64; + uint32_t uint32; + uint64_t uint64; + float float32; + double float64; +} VkPerformanceCounterResultKHR; + +typedef struct VkAcquireProfilingLockInfoKHR { + VkStructureType sType; + const void* pNext; + VkAcquireProfilingLockFlagsKHR flags; + uint64_t timeout; +} VkAcquireProfilingLockInfoKHR; + +typedef struct VkPerformanceQuerySubmitInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t counterPassIndex; +} VkPerformanceQuerySubmitInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, uint32_t* pCounterCount, VkPerformanceCounterKHR* pCounters, VkPerformanceCounterDescriptionKHR* pCounterDescriptions); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR)(VkPhysicalDevice physicalDevice, const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo, uint32_t* pNumPasses); +typedef VkResult (VKAPI_PTR *PFN_vkAcquireProfilingLockKHR)(VkDevice device, const VkAcquireProfilingLockInfoKHR* pInfo); +typedef void (VKAPI_PTR *PFN_vkReleaseProfilingLockKHR)(VkDevice device); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR( + VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + uint32_t* pCounterCount, + VkPerformanceCounterKHR* pCounters, + VkPerformanceCounterDescriptionKHR* pCounterDescriptions); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR( + VkPhysicalDevice physicalDevice, + const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo, + uint32_t* pNumPasses); + +VKAPI_ATTR VkResult VKAPI_CALL vkAcquireProfilingLockKHR( + VkDevice device, + const VkAcquireProfilingLockInfoKHR* pInfo); + +VKAPI_ATTR void VKAPI_CALL vkReleaseProfilingLockKHR( + VkDevice device); +#endif + + +#define VK_KHR_maintenance2 1 +#define VK_KHR_MAINTENANCE_2_SPEC_VERSION 1 +#define VK_KHR_MAINTENANCE_2_EXTENSION_NAME "VK_KHR_maintenance2" +#define VK_KHR_MAINTENANCE2_SPEC_VERSION VK_KHR_MAINTENANCE_2_SPEC_VERSION +#define VK_KHR_MAINTENANCE2_EXTENSION_NAME VK_KHR_MAINTENANCE_2_EXTENSION_NAME typedef VkPointClippingBehavior VkPointClippingBehaviorKHR; typedef VkTessellationDomainOrigin VkTessellationDomainOriginKHR; - typedef VkPhysicalDevicePointClippingProperties VkPhysicalDevicePointClippingPropertiesKHR; typedef VkRenderPassInputAttachmentAspectCreateInfo VkRenderPassInputAttachmentAspectCreateInfoKHR; @@ -5745,7 +9048,6 @@ typedef VkPipelineTessellationDomainOriginStateCreateInfo VkPipelineTessellation #define VK_KHR_get_surface_capabilities2 1 #define VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION 1 #define VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME "VK_KHR_get_surface_capabilities2" - typedef struct VkPhysicalDeviceSurfaceInfo2KHR { VkStructureType sType; const void* pNext; @@ -5764,7 +9066,6 @@ typedef struct VkSurfaceFormat2KHR { VkSurfaceFormatKHR surfaceFormat; } VkSurfaceFormat2KHR; - typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities); typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceFormats2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats); @@ -5781,18 +9082,19 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormats2KHR( VkSurfaceFormat2KHR* pSurfaceFormats); #endif + #define VK_KHR_variable_pointers 1 #define VK_KHR_VARIABLE_POINTERS_SPEC_VERSION 1 #define VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME "VK_KHR_variable_pointers" +typedef VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointerFeaturesKHR; -typedef VkPhysicalDeviceVariablePointerFeatures VkPhysicalDeviceVariablePointerFeaturesKHR; +typedef VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointersFeaturesKHR; #define VK_KHR_get_display_properties2 1 #define VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION 1 #define VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_display_properties2" - typedef struct VkDisplayProperties2KHR { VkStructureType sType; void* pNext; @@ -5824,7 +9126,6 @@ typedef struct VkDisplayPlaneCapabilities2KHR { VkDisplayPlaneCapabilitiesKHR capabilities; } VkDisplayPlaneCapabilities2KHR; - typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayProperties2KHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayProperties2KHR* pProperties); typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlaneProperties2KHR* pProperties); typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayModeProperties2KHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModeProperties2KHR* pProperties); @@ -5853,10 +9154,10 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneCapabilities2KHR( VkDisplayPlaneCapabilities2KHR* pCapabilities); #endif + #define VK_KHR_dedicated_allocation 1 #define VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION 3 #define VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_KHR_dedicated_allocation" - typedef VkMemoryDedicatedRequirements VkMemoryDedicatedRequirementsKHR; typedef VkMemoryDedicatedAllocateInfo VkMemoryDedicatedAllocateInfoKHR; @@ -5876,15 +9177,15 @@ typedef VkMemoryDedicatedAllocateInfo VkMemoryDedicatedAllocateInfoKHR; #define VK_KHR_get_memory_requirements2 1 #define VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION 1 #define VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME "VK_KHR_get_memory_requirements2" - typedef VkBufferMemoryRequirementsInfo2 VkBufferMemoryRequirementsInfo2KHR; typedef VkImageMemoryRequirementsInfo2 VkImageMemoryRequirementsInfo2KHR; typedef VkImageSparseMemoryRequirementsInfo2 VkImageSparseMemoryRequirementsInfo2KHR; -typedef VkSparseImageMemoryRequirements2 VkSparseImageMemoryRequirements2KHR; +typedef VkMemoryRequirements2 VkMemoryRequirements2KHR; +typedef VkSparseImageMemoryRequirements2 VkSparseImageMemoryRequirements2KHR; typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements2KHR)(VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements); typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements2KHR)(VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements); @@ -5908,33 +9209,25 @@ VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements2KHR( VkSparseImageMemoryRequirements2* pSparseMemoryRequirements); #endif + #define VK_KHR_image_format_list 1 #define VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION 1 #define VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME "VK_KHR_image_format_list" - -typedef struct VkImageFormatListCreateInfoKHR { - VkStructureType sType; - const void* pNext; - uint32_t viewFormatCount; - const VkFormat* pViewFormats; -} VkImageFormatListCreateInfoKHR; +typedef VkImageFormatListCreateInfo VkImageFormatListCreateInfoKHR; #define VK_KHR_sampler_ycbcr_conversion 1 typedef VkSamplerYcbcrConversion VkSamplerYcbcrConversionKHR; - -#define VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION 1 +#define VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION 14 #define VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME "VK_KHR_sampler_ycbcr_conversion" - typedef VkSamplerYcbcrModelConversion VkSamplerYcbcrModelConversionKHR; typedef VkSamplerYcbcrRange VkSamplerYcbcrRangeKHR; typedef VkChromaLocation VkChromaLocationKHR; - typedef VkSamplerYcbcrConversionCreateInfo VkSamplerYcbcrConversionCreateInfoKHR; typedef VkSamplerYcbcrConversionInfo VkSamplerYcbcrConversionInfoKHR; @@ -5947,7 +9240,6 @@ typedef VkPhysicalDeviceSamplerYcbcrConversionFeatures VkPhysicalDeviceSamplerYc typedef VkSamplerYcbcrConversionImageFormatProperties VkSamplerYcbcrConversionImageFormatPropertiesKHR; - typedef VkResult (VKAPI_PTR *PFN_vkCreateSamplerYcbcrConversionKHR)(VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion); typedef void (VKAPI_PTR *PFN_vkDestroySamplerYcbcrConversionKHR)(VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator); @@ -5964,15 +9256,14 @@ VKAPI_ATTR void VKAPI_CALL vkDestroySamplerYcbcrConversionKHR( const VkAllocationCallbacks* pAllocator); #endif + #define VK_KHR_bind_memory2 1 #define VK_KHR_BIND_MEMORY_2_SPEC_VERSION 1 #define VK_KHR_BIND_MEMORY_2_EXTENSION_NAME "VK_KHR_bind_memory2" - typedef VkBindBufferMemoryInfo VkBindBufferMemoryInfoKHR; typedef VkBindImageMemoryInfo VkBindImageMemoryInfoKHR; - typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory2KHR)(VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos); typedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory2KHR)(VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos); @@ -5988,15 +9279,16 @@ VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory2KHR( const VkBindImageMemoryInfo* pBindInfos); #endif -#define VK_KHR_maintenance3 1 -#define VK_KHR_MAINTENANCE3_SPEC_VERSION 1 -#define VK_KHR_MAINTENANCE3_EXTENSION_NAME "VK_KHR_maintenance3" +#define VK_KHR_maintenance3 1 +#define VK_KHR_MAINTENANCE_3_SPEC_VERSION 1 +#define VK_KHR_MAINTENANCE_3_EXTENSION_NAME "VK_KHR_maintenance3" +#define VK_KHR_MAINTENANCE3_SPEC_VERSION VK_KHR_MAINTENANCE_3_SPEC_VERSION +#define VK_KHR_MAINTENANCE3_EXTENSION_NAME VK_KHR_MAINTENANCE_3_EXTENSION_NAME typedef VkPhysicalDeviceMaintenance3Properties VkPhysicalDeviceMaintenance3PropertiesKHR; typedef VkDescriptorSetLayoutSupport VkDescriptorSetLayoutSupportKHR; - typedef void (VKAPI_PTR *PFN_vkGetDescriptorSetLayoutSupportKHR)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport); #ifndef VK_NO_PROTOTYPES @@ -6006,10 +9298,10 @@ VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutSupportKHR( VkDescriptorSetLayoutSupport* pSupport); #endif + #define VK_KHR_draw_indirect_count 1 #define VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION 1 #define VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME "VK_KHR_draw_indirect_count" - typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCountKHR)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCountKHR)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); @@ -6033,94 +9325,859 @@ VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountKHR( uint32_t stride); #endif + +#define VK_KHR_shader_subgroup_extended_types 1 +#define VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION 1 +#define VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME "VK_KHR_shader_subgroup_extended_types" +typedef VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR; + + + #define VK_KHR_8bit_storage 1 #define VK_KHR_8BIT_STORAGE_SPEC_VERSION 1 #define VK_KHR_8BIT_STORAGE_EXTENSION_NAME "VK_KHR_8bit_storage" - -typedef struct VkPhysicalDevice8BitStorageFeaturesKHR { - VkStructureType sType; - void* pNext; - VkBool32 storageBuffer8BitAccess; - VkBool32 uniformAndStorageBuffer8BitAccess; - VkBool32 storagePushConstant8; -} VkPhysicalDevice8BitStorageFeaturesKHR; +typedef VkPhysicalDevice8BitStorageFeatures VkPhysicalDevice8BitStorageFeaturesKHR; #define VK_KHR_shader_atomic_int64 1 #define VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION 1 #define VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME "VK_KHR_shader_atomic_int64" +typedef VkPhysicalDeviceShaderAtomicInt64Features VkPhysicalDeviceShaderAtomicInt64FeaturesKHR; -typedef struct VkPhysicalDeviceShaderAtomicInt64FeaturesKHR { + + +#define VK_KHR_shader_clock 1 +#define VK_KHR_SHADER_CLOCK_SPEC_VERSION 1 +#define VK_KHR_SHADER_CLOCK_EXTENSION_NAME "VK_KHR_shader_clock" +typedef struct VkPhysicalDeviceShaderClockFeaturesKHR { VkStructureType sType; void* pNext; - VkBool32 shaderBufferInt64Atomics; - VkBool32 shaderSharedInt64Atomics; -} VkPhysicalDeviceShaderAtomicInt64FeaturesKHR; + VkBool32 shaderSubgroupClock; + VkBool32 shaderDeviceClock; +} VkPhysicalDeviceShaderClockFeaturesKHR; + + +#if 0 +#define VK_KHR_video_decode_h265 1 +#include "vk_video/vulkan_video_codec_h265std.h" +#include "vk_video/vulkan_video_codec_h265std_decode.h" +#define VK_KHR_VIDEO_DECODE_H265_SPEC_VERSION 7 +#define VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME "VK_KHR_video_decode_h265" +typedef struct VkVideoDecodeH265ProfileInfoKHR { + VkStructureType sType; + const void* pNext; + StdVideoH265ProfileIdc stdProfileIdc; +} VkVideoDecodeH265ProfileInfoKHR; + +typedef struct VkVideoDecodeH265CapabilitiesKHR { + VkStructureType sType; + void* pNext; + StdVideoH265LevelIdc maxLevelIdc; +} VkVideoDecodeH265CapabilitiesKHR; + +typedef struct VkVideoDecodeH265SessionParametersAddInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t stdVPSCount; + const StdVideoH265VideoParameterSet* pStdVPSs; + uint32_t stdSPSCount; + const StdVideoH265SequenceParameterSet* pStdSPSs; + uint32_t stdPPSCount; + const StdVideoH265PictureParameterSet* pStdPPSs; +} VkVideoDecodeH265SessionParametersAddInfoKHR; + +typedef struct VkVideoDecodeH265SessionParametersCreateInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t maxStdVPSCount; + uint32_t maxStdSPSCount; + uint32_t maxStdPPSCount; + const VkVideoDecodeH265SessionParametersAddInfoKHR* pParametersAddInfo; +} VkVideoDecodeH265SessionParametersCreateInfoKHR; + +typedef struct VkVideoDecodeH265PictureInfoKHR { + VkStructureType sType; + const void* pNext; + StdVideoDecodeH265PictureInfo* pStdPictureInfo; + uint32_t sliceSegmentCount; + const uint32_t* pSliceSegmentOffsets; +} VkVideoDecodeH265PictureInfoKHR; + +typedef struct VkVideoDecodeH265DpbSlotInfoKHR { + VkStructureType sType; + const void* pNext; + const StdVideoDecodeH265ReferenceInfo* pStdReferenceInfo; +} VkVideoDecodeH265DpbSlotInfoKHR; + +#endif + +#define VK_KHR_global_priority 1 +#define VK_MAX_GLOBAL_PRIORITY_SIZE_KHR 16U +#define VK_KHR_GLOBAL_PRIORITY_SPEC_VERSION 1 +#define VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME "VK_KHR_global_priority" + +typedef enum VkQueueGlobalPriorityKHR { + VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR = 128, + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR = 256, + VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR = 512, + VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR = 1024, + VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT = VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR, + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR, + VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT = VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR, + VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR, + VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_KHR = 0x7FFFFFFF +} VkQueueGlobalPriorityKHR; +typedef struct VkDeviceQueueGlobalPriorityCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkQueueGlobalPriorityKHR globalPriority; +} VkDeviceQueueGlobalPriorityCreateInfoKHR; + +typedef struct VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 globalPriorityQuery; +} VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR; + +typedef struct VkQueueFamilyGlobalPriorityPropertiesKHR { + VkStructureType sType; + void* pNext; + uint32_t priorityCount; + VkQueueGlobalPriorityKHR priorities[VK_MAX_GLOBAL_PRIORITY_SIZE_KHR]; +} VkQueueFamilyGlobalPriorityPropertiesKHR; #define VK_KHR_driver_properties 1 -#define VK_MAX_DRIVER_NAME_SIZE_KHR 256 -#define VK_MAX_DRIVER_INFO_SIZE_KHR 256 #define VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION 1 #define VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME "VK_KHR_driver_properties" +#define VK_MAX_DRIVER_NAME_SIZE_KHR VK_MAX_DRIVER_NAME_SIZE +#define VK_MAX_DRIVER_INFO_SIZE_KHR VK_MAX_DRIVER_INFO_SIZE +typedef VkDriverId VkDriverIdKHR; + +typedef VkConformanceVersion VkConformanceVersionKHR; + +typedef VkPhysicalDeviceDriverProperties VkPhysicalDeviceDriverPropertiesKHR; -typedef enum VkDriverIdKHR { - VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1, - VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2, - VK_DRIVER_ID_MESA_RADV_KHR = 3, - VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = 4, - VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = 5, - VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = 6, - VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = 7, - VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = 8, - VK_DRIVER_ID_ARM_PROPRIETARY_KHR = 9, - VK_DRIVER_ID_BEGIN_RANGE_KHR = VK_DRIVER_ID_AMD_PROPRIETARY_KHR, - VK_DRIVER_ID_END_RANGE_KHR = VK_DRIVER_ID_ARM_PROPRIETARY_KHR, - VK_DRIVER_ID_RANGE_SIZE_KHR = (VK_DRIVER_ID_ARM_PROPRIETARY_KHR - VK_DRIVER_ID_AMD_PROPRIETARY_KHR + 1), - VK_DRIVER_ID_MAX_ENUM_KHR = 0x7FFFFFFF -} VkDriverIdKHR; -typedef struct VkConformanceVersionKHR { - uint8_t major; - uint8_t minor; - uint8_t subminor; - uint8_t patch; -} VkConformanceVersionKHR; +#define VK_KHR_shader_float_controls 1 +#define VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION 4 +#define VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME "VK_KHR_shader_float_controls" +typedef VkShaderFloatControlsIndependence VkShaderFloatControlsIndependenceKHR; -typedef struct VkPhysicalDeviceDriverPropertiesKHR { - VkStructureType sType; - void* pNext; - uint32_t driverID; - char driverName[VK_MAX_DRIVER_NAME_SIZE_KHR]; - char driverInfo[VK_MAX_DRIVER_INFO_SIZE_KHR]; - VkConformanceVersionKHR conformanceVersion; -} VkPhysicalDeviceDriverPropertiesKHR; +typedef VkPhysicalDeviceFloatControlsProperties VkPhysicalDeviceFloatControlsPropertiesKHR; +#define VK_KHR_depth_stencil_resolve 1 +#define VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION 1 +#define VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME "VK_KHR_depth_stencil_resolve" +typedef VkResolveModeFlagBits VkResolveModeFlagBitsKHR; + +typedef VkResolveModeFlags VkResolveModeFlagsKHR; + +typedef VkSubpassDescriptionDepthStencilResolve VkSubpassDescriptionDepthStencilResolveKHR; + +typedef VkPhysicalDeviceDepthStencilResolveProperties VkPhysicalDeviceDepthStencilResolvePropertiesKHR; + + + +#define VK_KHR_swapchain_mutable_format 1 +#define VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION 1 +#define VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME "VK_KHR_swapchain_mutable_format" + + +#define VK_KHR_timeline_semaphore 1 +#define VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION 2 +#define VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME "VK_KHR_timeline_semaphore" +typedef VkSemaphoreType VkSemaphoreTypeKHR; + +typedef VkSemaphoreWaitFlagBits VkSemaphoreWaitFlagBitsKHR; + +typedef VkSemaphoreWaitFlags VkSemaphoreWaitFlagsKHR; + +typedef VkPhysicalDeviceTimelineSemaphoreFeatures VkPhysicalDeviceTimelineSemaphoreFeaturesKHR; + +typedef VkPhysicalDeviceTimelineSemaphoreProperties VkPhysicalDeviceTimelineSemaphorePropertiesKHR; + +typedef VkSemaphoreTypeCreateInfo VkSemaphoreTypeCreateInfoKHR; + +typedef VkTimelineSemaphoreSubmitInfo VkTimelineSemaphoreSubmitInfoKHR; + +typedef VkSemaphoreWaitInfo VkSemaphoreWaitInfoKHR; + +typedef VkSemaphoreSignalInfo VkSemaphoreSignalInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreCounterValueKHR)(VkDevice device, VkSemaphore semaphore, uint64_t* pValue); +typedef VkResult (VKAPI_PTR *PFN_vkWaitSemaphoresKHR)(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout); +typedef VkResult (VKAPI_PTR *PFN_vkSignalSemaphoreKHR)(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreCounterValueKHR( + VkDevice device, + VkSemaphore semaphore, + uint64_t* pValue); + +VKAPI_ATTR VkResult VKAPI_CALL vkWaitSemaphoresKHR( + VkDevice device, + const VkSemaphoreWaitInfo* pWaitInfo, + uint64_t timeout); + +VKAPI_ATTR VkResult VKAPI_CALL vkSignalSemaphoreKHR( + VkDevice device, + const VkSemaphoreSignalInfo* pSignalInfo); +#endif + + #define VK_KHR_vulkan_memory_model 1 -#define VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION 2 +#define VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION 3 #define VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME "VK_KHR_vulkan_memory_model" +typedef VkPhysicalDeviceVulkanMemoryModelFeatures VkPhysicalDeviceVulkanMemoryModelFeaturesKHR; -typedef struct VkPhysicalDeviceVulkanMemoryModelFeaturesKHR { + + +#define VK_KHR_shader_terminate_invocation 1 +#define VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION 1 +#define VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME "VK_KHR_shader_terminate_invocation" +typedef VkPhysicalDeviceShaderTerminateInvocationFeatures VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR; + + + +#define VK_KHR_fragment_shading_rate 1 +#define VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION 2 +#define VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME "VK_KHR_fragment_shading_rate" + +typedef enum VkFragmentShadingRateCombinerOpKHR { + VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR = 0, + VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR = 1, + VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR = 2, + VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR = 3, + VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR = 4, + VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_ENUM_KHR = 0x7FFFFFFF +} VkFragmentShadingRateCombinerOpKHR; +typedef struct VkFragmentShadingRateAttachmentInfoKHR { + VkStructureType sType; + const void* pNext; + const VkAttachmentReference2* pFragmentShadingRateAttachment; + VkExtent2D shadingRateAttachmentTexelSize; +} VkFragmentShadingRateAttachmentInfoKHR; + +typedef struct VkPipelineFragmentShadingRateStateCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkExtent2D fragmentSize; + VkFragmentShadingRateCombinerOpKHR combinerOps[2]; +} VkPipelineFragmentShadingRateStateCreateInfoKHR; + +typedef struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR { VkStructureType sType; void* pNext; - VkBool32 vulkanMemoryModel; - VkBool32 vulkanMemoryModelDeviceScope; -} VkPhysicalDeviceVulkanMemoryModelFeaturesKHR; + VkBool32 pipelineFragmentShadingRate; + VkBool32 primitiveFragmentShadingRate; + VkBool32 attachmentFragmentShadingRate; +} VkPhysicalDeviceFragmentShadingRateFeaturesKHR; +typedef struct VkPhysicalDeviceFragmentShadingRatePropertiesKHR { + VkStructureType sType; + void* pNext; + VkExtent2D minFragmentShadingRateAttachmentTexelSize; + VkExtent2D maxFragmentShadingRateAttachmentTexelSize; + uint32_t maxFragmentShadingRateAttachmentTexelSizeAspectRatio; + VkBool32 primitiveFragmentShadingRateWithMultipleViewports; + VkBool32 layeredShadingRateAttachments; + VkBool32 fragmentShadingRateNonTrivialCombinerOps; + VkExtent2D maxFragmentSize; + uint32_t maxFragmentSizeAspectRatio; + uint32_t maxFragmentShadingRateCoverageSamples; + VkSampleCountFlagBits maxFragmentShadingRateRasterizationSamples; + VkBool32 fragmentShadingRateWithShaderDepthStencilWrites; + VkBool32 fragmentShadingRateWithSampleMask; + VkBool32 fragmentShadingRateWithShaderSampleMask; + VkBool32 fragmentShadingRateWithConservativeRasterization; + VkBool32 fragmentShadingRateWithFragmentShaderInterlock; + VkBool32 fragmentShadingRateWithCustomSampleLocations; + VkBool32 fragmentShadingRateStrictMultiplyCombiner; +} VkPhysicalDeviceFragmentShadingRatePropertiesKHR; + +typedef struct VkPhysicalDeviceFragmentShadingRateKHR { + VkStructureType sType; + void* pNext; + VkSampleCountFlags sampleCounts; + VkExtent2D fragmentSize; +} VkPhysicalDeviceFragmentShadingRateKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pFragmentShadingRateCount, VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates); +typedef void (VKAPI_PTR *PFN_vkCmdSetFragmentShadingRateKHR)(VkCommandBuffer commandBuffer, const VkExtent2D* pFragmentSize, const VkFragmentShadingRateCombinerOpKHR combinerOps[2]); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceFragmentShadingRatesKHR( + VkPhysicalDevice physicalDevice, + uint32_t* pFragmentShadingRateCount, + VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetFragmentShadingRateKHR( + VkCommandBuffer commandBuffer, + const VkExtent2D* pFragmentSize, + const VkFragmentShadingRateCombinerOpKHR combinerOps[2]); +#endif + + +#define VK_KHR_spirv_1_4 1 +#define VK_KHR_SPIRV_1_4_SPEC_VERSION 1 +#define VK_KHR_SPIRV_1_4_EXTENSION_NAME "VK_KHR_spirv_1_4" + + +#define VK_KHR_surface_protected_capabilities 1 +#define VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION 1 +#define VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME "VK_KHR_surface_protected_capabilities" +typedef struct VkSurfaceProtectedCapabilitiesKHR { + VkStructureType sType; + const void* pNext; + VkBool32 supportsProtected; +} VkSurfaceProtectedCapabilitiesKHR; + + + +#define VK_KHR_separate_depth_stencil_layouts 1 +#define VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION 1 +#define VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME "VK_KHR_separate_depth_stencil_layouts" +typedef VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR; + +typedef VkAttachmentReferenceStencilLayout VkAttachmentReferenceStencilLayoutKHR; + +typedef VkAttachmentDescriptionStencilLayout VkAttachmentDescriptionStencilLayoutKHR; + + + +#define VK_KHR_present_wait 1 +#define VK_KHR_PRESENT_WAIT_SPEC_VERSION 1 +#define VK_KHR_PRESENT_WAIT_EXTENSION_NAME "VK_KHR_present_wait" +typedef struct VkPhysicalDevicePresentWaitFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 presentWait; +} VkPhysicalDevicePresentWaitFeaturesKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkWaitForPresentKHR)(VkDevice device, VkSwapchainKHR swapchain, uint64_t presentId, uint64_t timeout); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkWaitForPresentKHR( + VkDevice device, + VkSwapchainKHR swapchain, + uint64_t presentId, + uint64_t timeout); +#endif + + +#define VK_KHR_uniform_buffer_standard_layout 1 +#define VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION 1 +#define VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME "VK_KHR_uniform_buffer_standard_layout" +typedef VkPhysicalDeviceUniformBufferStandardLayoutFeatures VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR; + + + +#define VK_KHR_buffer_device_address 1 +#define VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION 1 +#define VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME "VK_KHR_buffer_device_address" +typedef VkPhysicalDeviceBufferDeviceAddressFeatures VkPhysicalDeviceBufferDeviceAddressFeaturesKHR; + +typedef VkBufferDeviceAddressInfo VkBufferDeviceAddressInfoKHR; + +typedef VkBufferOpaqueCaptureAddressCreateInfo VkBufferOpaqueCaptureAddressCreateInfoKHR; + +typedef VkMemoryOpaqueCaptureAddressAllocateInfo VkMemoryOpaqueCaptureAddressAllocateInfoKHR; + +typedef VkDeviceMemoryOpaqueCaptureAddressInfo VkDeviceMemoryOpaqueCaptureAddressInfoKHR; + +typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddressKHR)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo); +typedef uint64_t (VKAPI_PTR *PFN_vkGetBufferOpaqueCaptureAddressKHR)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo); +typedef uint64_t (VKAPI_PTR *PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR)(VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddressKHR( + VkDevice device, + const VkBufferDeviceAddressInfo* pInfo); + +VKAPI_ATTR uint64_t VKAPI_CALL vkGetBufferOpaqueCaptureAddressKHR( + VkDevice device, + const VkBufferDeviceAddressInfo* pInfo); + +VKAPI_ATTR uint64_t VKAPI_CALL vkGetDeviceMemoryOpaqueCaptureAddressKHR( + VkDevice device, + const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo); +#endif + + +#define VK_KHR_deferred_host_operations 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDeferredOperationKHR) +#define VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION 4 +#define VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME "VK_KHR_deferred_host_operations" +typedef VkResult (VKAPI_PTR *PFN_vkCreateDeferredOperationKHR)(VkDevice device, const VkAllocationCallbacks* pAllocator, VkDeferredOperationKHR* pDeferredOperation); +typedef void (VKAPI_PTR *PFN_vkDestroyDeferredOperationKHR)(VkDevice device, VkDeferredOperationKHR operation, const VkAllocationCallbacks* pAllocator); +typedef uint32_t (VKAPI_PTR *PFN_vkGetDeferredOperationMaxConcurrencyKHR)(VkDevice device, VkDeferredOperationKHR operation); +typedef VkResult (VKAPI_PTR *PFN_vkGetDeferredOperationResultKHR)(VkDevice device, VkDeferredOperationKHR operation); +typedef VkResult (VKAPI_PTR *PFN_vkDeferredOperationJoinKHR)(VkDevice device, VkDeferredOperationKHR operation); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDeferredOperationKHR( + VkDevice device, + const VkAllocationCallbacks* pAllocator, + VkDeferredOperationKHR* pDeferredOperation); + +VKAPI_ATTR void VKAPI_CALL vkDestroyDeferredOperationKHR( + VkDevice device, + VkDeferredOperationKHR operation, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR uint32_t VKAPI_CALL vkGetDeferredOperationMaxConcurrencyKHR( + VkDevice device, + VkDeferredOperationKHR operation); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetDeferredOperationResultKHR( + VkDevice device, + VkDeferredOperationKHR operation); + +VKAPI_ATTR VkResult VKAPI_CALL vkDeferredOperationJoinKHR( + VkDevice device, + VkDeferredOperationKHR operation); +#endif + + +#define VK_KHR_pipeline_executable_properties 1 +#define VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION 1 +#define VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME "VK_KHR_pipeline_executable_properties" + +typedef enum VkPipelineExecutableStatisticFormatKHR { + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0, + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1, + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2, + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3, + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 0x7FFFFFFF +} VkPipelineExecutableStatisticFormatKHR; +typedef struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 pipelineExecutableInfo; +} VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR; + +typedef struct VkPipelineInfoKHR { + VkStructureType sType; + const void* pNext; + VkPipeline pipeline; +} VkPipelineInfoKHR; + +typedef struct VkPipelineExecutablePropertiesKHR { + VkStructureType sType; + void* pNext; + VkShaderStageFlags stages; + char name[VK_MAX_DESCRIPTION_SIZE]; + char description[VK_MAX_DESCRIPTION_SIZE]; + uint32_t subgroupSize; +} VkPipelineExecutablePropertiesKHR; + +typedef struct VkPipelineExecutableInfoKHR { + VkStructureType sType; + const void* pNext; + VkPipeline pipeline; + uint32_t executableIndex; +} VkPipelineExecutableInfoKHR; + +typedef union VkPipelineExecutableStatisticValueKHR { + VkBool32 b32; + int64_t i64; + uint64_t u64; + double f64; +} VkPipelineExecutableStatisticValueKHR; + +typedef struct VkPipelineExecutableStatisticKHR { + VkStructureType sType; + void* pNext; + char name[VK_MAX_DESCRIPTION_SIZE]; + char description[VK_MAX_DESCRIPTION_SIZE]; + VkPipelineExecutableStatisticFormatKHR format; + VkPipelineExecutableStatisticValueKHR value; +} VkPipelineExecutableStatisticKHR; + +typedef struct VkPipelineExecutableInternalRepresentationKHR { + VkStructureType sType; + void* pNext; + char name[VK_MAX_DESCRIPTION_SIZE]; + char description[VK_MAX_DESCRIPTION_SIZE]; + VkBool32 isText; + size_t dataSize; + void* pData; +} VkPipelineExecutableInternalRepresentationKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineExecutablePropertiesKHR)(VkDevice device, const VkPipelineInfoKHR* pPipelineInfo, uint32_t* pExecutableCount, VkPipelineExecutablePropertiesKHR* pProperties); +typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineExecutableStatisticsKHR)(VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pStatisticCount, VkPipelineExecutableStatisticKHR* pStatistics); +typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineExecutableInternalRepresentationsKHR)(VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pInternalRepresentationCount, VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutablePropertiesKHR( + VkDevice device, + const VkPipelineInfoKHR* pPipelineInfo, + uint32_t* pExecutableCount, + VkPipelineExecutablePropertiesKHR* pProperties); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutableStatisticsKHR( + VkDevice device, + const VkPipelineExecutableInfoKHR* pExecutableInfo, + uint32_t* pStatisticCount, + VkPipelineExecutableStatisticKHR* pStatistics); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutableInternalRepresentationsKHR( + VkDevice device, + const VkPipelineExecutableInfoKHR* pExecutableInfo, + uint32_t* pInternalRepresentationCount, + VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations); +#endif + + +#define VK_KHR_shader_integer_dot_product 1 +#define VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION 1 +#define VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME "VK_KHR_shader_integer_dot_product" +typedef VkPhysicalDeviceShaderIntegerDotProductFeatures VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR; + +typedef VkPhysicalDeviceShaderIntegerDotProductProperties VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR; + + + +#define VK_KHR_pipeline_library 1 +#define VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION 1 +#define VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME "VK_KHR_pipeline_library" +typedef struct VkPipelineLibraryCreateInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t libraryCount; + const VkPipeline* pLibraries; +} VkPipelineLibraryCreateInfoKHR; + + + +#define VK_KHR_shader_non_semantic_info 1 +#define VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION 1 +#define VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME "VK_KHR_shader_non_semantic_info" + + +#define VK_KHR_present_id 1 +#define VK_KHR_PRESENT_ID_SPEC_VERSION 1 +#define VK_KHR_PRESENT_ID_EXTENSION_NAME "VK_KHR_present_id" +typedef struct VkPresentIdKHR { + VkStructureType sType; + const void* pNext; + uint32_t swapchainCount; + const uint64_t* pPresentIds; +} VkPresentIdKHR; + +typedef struct VkPhysicalDevicePresentIdFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 presentId; +} VkPhysicalDevicePresentIdFeaturesKHR; + + + +#define VK_KHR_synchronization2 1 +#define VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION 1 +#define VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME "VK_KHR_synchronization2" +typedef VkPipelineStageFlags2 VkPipelineStageFlags2KHR; + +typedef VkPipelineStageFlagBits2 VkPipelineStageFlagBits2KHR; + +typedef VkAccessFlags2 VkAccessFlags2KHR; + +typedef VkAccessFlagBits2 VkAccessFlagBits2KHR; + +typedef VkSubmitFlagBits VkSubmitFlagBitsKHR; + +typedef VkSubmitFlags VkSubmitFlagsKHR; + +typedef VkMemoryBarrier2 VkMemoryBarrier2KHR; + +typedef VkBufferMemoryBarrier2 VkBufferMemoryBarrier2KHR; + +typedef VkImageMemoryBarrier2 VkImageMemoryBarrier2KHR; + +typedef VkDependencyInfo VkDependencyInfoKHR; + +typedef VkSubmitInfo2 VkSubmitInfo2KHR; + +typedef VkSemaphoreSubmitInfo VkSemaphoreSubmitInfoKHR; + +typedef VkCommandBufferSubmitInfo VkCommandBufferSubmitInfoKHR; + +typedef VkPhysicalDeviceSynchronization2Features VkPhysicalDeviceSynchronization2FeaturesKHR; + +typedef struct VkQueueFamilyCheckpointProperties2NV { + VkStructureType sType; + void* pNext; + VkPipelineStageFlags2 checkpointExecutionStageMask; +} VkQueueFamilyCheckpointProperties2NV; + +typedef struct VkCheckpointData2NV { + VkStructureType sType; + void* pNext; + VkPipelineStageFlags2 stage; + void* pCheckpointMarker; +} VkCheckpointData2NV; + +typedef void (VKAPI_PTR *PFN_vkCmdSetEvent2KHR)(VkCommandBuffer commandBuffer, VkEvent event, const VkDependencyInfo* pDependencyInfo); +typedef void (VKAPI_PTR *PFN_vkCmdResetEvent2KHR)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags2 stageMask); +typedef void (VKAPI_PTR *PFN_vkCmdWaitEvents2KHR)(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, const VkDependencyInfo* pDependencyInfos); +typedef void (VKAPI_PTR *PFN_vkCmdPipelineBarrier2KHR)(VkCommandBuffer commandBuffer, const VkDependencyInfo* pDependencyInfo); +typedef void (VKAPI_PTR *PFN_vkCmdWriteTimestamp2KHR)(VkCommandBuffer commandBuffer, VkPipelineStageFlags2 stage, VkQueryPool queryPool, uint32_t query); +typedef VkResult (VKAPI_PTR *PFN_vkQueueSubmit2KHR)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo2* pSubmits, VkFence fence); +typedef void (VKAPI_PTR *PFN_vkCmdWriteBufferMarker2AMD)(VkCommandBuffer commandBuffer, VkPipelineStageFlags2 stage, VkBuffer dstBuffer, VkDeviceSize dstOffset, uint32_t marker); +typedef void (VKAPI_PTR *PFN_vkGetQueueCheckpointData2NV)(VkQueue queue, uint32_t* pCheckpointDataCount, VkCheckpointData2NV* pCheckpointData); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent2KHR( + VkCommandBuffer commandBuffer, + VkEvent event, + const VkDependencyInfo* pDependencyInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent2KHR( + VkCommandBuffer commandBuffer, + VkEvent event, + VkPipelineStageFlags2 stageMask); + +VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents2KHR( + VkCommandBuffer commandBuffer, + uint32_t eventCount, + const VkEvent* pEvents, + const VkDependencyInfo* pDependencyInfos); + +VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier2KHR( + VkCommandBuffer commandBuffer, + const VkDependencyInfo* pDependencyInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp2KHR( + VkCommandBuffer commandBuffer, + VkPipelineStageFlags2 stage, + VkQueryPool queryPool, + uint32_t query); + +VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit2KHR( + VkQueue queue, + uint32_t submitCount, + const VkSubmitInfo2* pSubmits, + VkFence fence); + +VKAPI_ATTR void VKAPI_CALL vkCmdWriteBufferMarker2AMD( + VkCommandBuffer commandBuffer, + VkPipelineStageFlags2 stage, + VkBuffer dstBuffer, + VkDeviceSize dstOffset, + uint32_t marker); + +VKAPI_ATTR void VKAPI_CALL vkGetQueueCheckpointData2NV( + VkQueue queue, + uint32_t* pCheckpointDataCount, + VkCheckpointData2NV* pCheckpointData); +#endif + + +#define VK_KHR_fragment_shader_barycentric 1 +#define VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION 1 +#define VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME "VK_KHR_fragment_shader_barycentric" +typedef struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 fragmentShaderBarycentric; +} VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR; + +typedef struct VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR { + VkStructureType sType; + void* pNext; + VkBool32 triStripVertexOrderIndependentOfProvokingVertex; +} VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR; + + + +#define VK_KHR_shader_subgroup_uniform_control_flow 1 +#define VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION 1 +#define VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME "VK_KHR_shader_subgroup_uniform_control_flow" +typedef struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 shaderSubgroupUniformControlFlow; +} VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR; + + + +#define VK_KHR_zero_initialize_workgroup_memory 1 +#define VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION 1 +#define VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME "VK_KHR_zero_initialize_workgroup_memory" +typedef VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR; + + + +#define VK_KHR_workgroup_memory_explicit_layout 1 +#define VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION 1 +#define VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME "VK_KHR_workgroup_memory_explicit_layout" +typedef struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 workgroupMemoryExplicitLayout; + VkBool32 workgroupMemoryExplicitLayoutScalarBlockLayout; + VkBool32 workgroupMemoryExplicitLayout8BitAccess; + VkBool32 workgroupMemoryExplicitLayout16BitAccess; +} VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR; + + + +#define VK_KHR_copy_commands2 1 +#define VK_KHR_COPY_COMMANDS_2_SPEC_VERSION 1 +#define VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME "VK_KHR_copy_commands2" +typedef VkCopyBufferInfo2 VkCopyBufferInfo2KHR; + +typedef VkCopyImageInfo2 VkCopyImageInfo2KHR; + +typedef VkCopyBufferToImageInfo2 VkCopyBufferToImageInfo2KHR; + +typedef VkCopyImageToBufferInfo2 VkCopyImageToBufferInfo2KHR; + +typedef VkBlitImageInfo2 VkBlitImageInfo2KHR; + +typedef VkResolveImageInfo2 VkResolveImageInfo2KHR; + +typedef VkBufferCopy2 VkBufferCopy2KHR; + +typedef VkImageCopy2 VkImageCopy2KHR; + +typedef VkImageBlit2 VkImageBlit2KHR; + +typedef VkBufferImageCopy2 VkBufferImageCopy2KHR; + +typedef VkImageResolve2 VkImageResolve2KHR; + +typedef void (VKAPI_PTR *PFN_vkCmdCopyBuffer2KHR)(VkCommandBuffer commandBuffer, const VkCopyBufferInfo2* pCopyBufferInfo); +typedef void (VKAPI_PTR *PFN_vkCmdCopyImage2KHR)(VkCommandBuffer commandBuffer, const VkCopyImageInfo2* pCopyImageInfo); +typedef void (VKAPI_PTR *PFN_vkCmdCopyBufferToImage2KHR)(VkCommandBuffer commandBuffer, const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo); +typedef void (VKAPI_PTR *PFN_vkCmdCopyImageToBuffer2KHR)(VkCommandBuffer commandBuffer, const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo); +typedef void (VKAPI_PTR *PFN_vkCmdBlitImage2KHR)(VkCommandBuffer commandBuffer, const VkBlitImageInfo2* pBlitImageInfo); +typedef void (VKAPI_PTR *PFN_vkCmdResolveImage2KHR)(VkCommandBuffer commandBuffer, const VkResolveImageInfo2* pResolveImageInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer2KHR( + VkCommandBuffer commandBuffer, + const VkCopyBufferInfo2* pCopyBufferInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyImage2KHR( + VkCommandBuffer commandBuffer, + const VkCopyImageInfo2* pCopyImageInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage2KHR( + VkCommandBuffer commandBuffer, + const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer2KHR( + VkCommandBuffer commandBuffer, + const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdBlitImage2KHR( + VkCommandBuffer commandBuffer, + const VkBlitImageInfo2* pBlitImageInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdResolveImage2KHR( + VkCommandBuffer commandBuffer, + const VkResolveImageInfo2* pResolveImageInfo); +#endif + + +#define VK_KHR_format_feature_flags2 1 +#define VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION 2 +#define VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME "VK_KHR_format_feature_flags2" +typedef VkFormatFeatureFlags2 VkFormatFeatureFlags2KHR; + +typedef VkFormatFeatureFlagBits2 VkFormatFeatureFlagBits2KHR; + +typedef VkFormatProperties3 VkFormatProperties3KHR; + + + +#define VK_KHR_ray_tracing_maintenance1 1 +#define VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION 1 +#define VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME "VK_KHR_ray_tracing_maintenance1" +typedef struct VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 rayTracingMaintenance1; + VkBool32 rayTracingPipelineTraceRaysIndirect2; +} VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR; + +typedef struct VkTraceRaysIndirectCommand2KHR { + VkDeviceAddress raygenShaderRecordAddress; + VkDeviceSize raygenShaderRecordSize; + VkDeviceAddress missShaderBindingTableAddress; + VkDeviceSize missShaderBindingTableSize; + VkDeviceSize missShaderBindingTableStride; + VkDeviceAddress hitShaderBindingTableAddress; + VkDeviceSize hitShaderBindingTableSize; + VkDeviceSize hitShaderBindingTableStride; + VkDeviceAddress callableShaderBindingTableAddress; + VkDeviceSize callableShaderBindingTableSize; + VkDeviceSize callableShaderBindingTableStride; + uint32_t width; + uint32_t height; + uint32_t depth; +} VkTraceRaysIndirectCommand2KHR; + +typedef void (VKAPI_PTR *PFN_vkCmdTraceRaysIndirect2KHR)(VkCommandBuffer commandBuffer, VkDeviceAddress indirectDeviceAddress); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdTraceRaysIndirect2KHR( + VkCommandBuffer commandBuffer, + VkDeviceAddress indirectDeviceAddress); +#endif + + +#define VK_KHR_portability_enumeration 1 +#define VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION 1 +#define VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME "VK_KHR_portability_enumeration" + + +#define VK_KHR_maintenance4 1 +#define VK_KHR_MAINTENANCE_4_SPEC_VERSION 2 +#define VK_KHR_MAINTENANCE_4_EXTENSION_NAME "VK_KHR_maintenance4" +typedef VkPhysicalDeviceMaintenance4Features VkPhysicalDeviceMaintenance4FeaturesKHR; + +typedef VkPhysicalDeviceMaintenance4Properties VkPhysicalDeviceMaintenance4PropertiesKHR; + +typedef VkDeviceBufferMemoryRequirements VkDeviceBufferMemoryRequirementsKHR; + +typedef VkDeviceImageMemoryRequirements VkDeviceImageMemoryRequirementsKHR; + +typedef void (VKAPI_PTR *PFN_vkGetDeviceBufferMemoryRequirementsKHR)(VkDevice device, const VkDeviceBufferMemoryRequirements* pInfo, VkMemoryRequirements2* pMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkGetDeviceImageMemoryRequirementsKHR)(VkDevice device, const VkDeviceImageMemoryRequirements* pInfo, VkMemoryRequirements2* pMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkGetDeviceImageSparseMemoryRequirementsKHR)(VkDevice device, const VkDeviceImageMemoryRequirements* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetDeviceBufferMemoryRequirementsKHR( + VkDevice device, + const VkDeviceBufferMemoryRequirements* pInfo, + VkMemoryRequirements2* pMemoryRequirements); + +VKAPI_ATTR void VKAPI_CALL vkGetDeviceImageMemoryRequirementsKHR( + VkDevice device, + const VkDeviceImageMemoryRequirements* pInfo, + VkMemoryRequirements2* pMemoryRequirements); + +VKAPI_ATTR void VKAPI_CALL vkGetDeviceImageSparseMemoryRequirementsKHR( + VkDevice device, + const VkDeviceImageMemoryRequirements* pInfo, + uint32_t* pSparseMemoryRequirementCount, + VkSparseImageMemoryRequirements2* pSparseMemoryRequirements); +#endif #define VK_EXT_debug_report 1 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackEXT) - -#define VK_EXT_DEBUG_REPORT_SPEC_VERSION 9 +#define VK_EXT_DEBUG_REPORT_SPEC_VERSION 10 #define VK_EXT_DEBUG_REPORT_EXTENSION_NAME "VK_EXT_debug_report" - typedef enum VkDebugReportObjectTypeEXT { VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0, VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1, @@ -6153,23 +10210,21 @@ typedef enum VkDebugReportObjectTypeEXT { VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = 28, VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29, VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30, - VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT = 31, - VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT = 32, VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = 33, VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT = 1000156000, VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT = 1000085000, - VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NVX_EXT = 1000165000, + VK_DEBUG_REPORT_OBJECT_TYPE_CU_MODULE_NVX_EXT = 1000029000, + VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT = 1000029001, + VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT = 1000150000, + VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT = 1000165000, + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA_EXT = 1000366000, VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT, - VK_DEBUG_REPORT_OBJECT_TYPE_BEGIN_RANGE_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, - VK_DEBUG_REPORT_OBJECT_TYPE_END_RANGE_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT, - VK_DEBUG_REPORT_OBJECT_TYPE_RANGE_SIZE_EXT = (VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT - VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT + 1), VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF } VkDebugReportObjectTypeEXT; - typedef enum VkDebugReportFlagBitsEXT { VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 0x00000001, VK_DEBUG_REPORT_WARNING_BIT_EXT = 0x00000002, @@ -6179,7 +10234,6 @@ typedef enum VkDebugReportFlagBitsEXT { VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF } VkDebugReportFlagBitsEXT; typedef VkFlags VkDebugReportFlagsEXT; - typedef VkBool32 (VKAPI_PTR *PFN_vkDebugReportCallbackEXT)( VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, @@ -6198,7 +10252,6 @@ typedef struct VkDebugReportCallbackCreateInfoEXT { void* pUserData; } VkDebugReportCallbackCreateInfoEXT; - typedef VkResult (VKAPI_PTR *PFN_vkCreateDebugReportCallbackEXT)(VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback); typedef void (VKAPI_PTR *PFN_vkDestroyDebugReportCallbackEXT)(VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator); typedef void (VKAPI_PTR *PFN_vkDebugReportMessageEXT)(VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const char* pLayerPrefix, const char* pMessage); @@ -6226,6 +10279,7 @@ VKAPI_ATTR void VKAPI_CALL vkDebugReportMessageEXT( const char* pMessage); #endif + #define VK_NV_glsl_shader 1 #define VK_NV_GLSL_SHADER_SPEC_VERSION 1 #define VK_NV_GLSL_SHADER_EXTENSION_NAME "VK_NV_glsl_shader" @@ -6245,16 +10299,11 @@ VKAPI_ATTR void VKAPI_CALL vkDebugReportMessageEXT( #define VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION 1 #define VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME "VK_AMD_rasterization_order" - typedef enum VkRasterizationOrderAMD { VK_RASTERIZATION_ORDER_STRICT_AMD = 0, VK_RASTERIZATION_ORDER_RELAXED_AMD = 1, - VK_RASTERIZATION_ORDER_BEGIN_RANGE_AMD = VK_RASTERIZATION_ORDER_STRICT_AMD, - VK_RASTERIZATION_ORDER_END_RANGE_AMD = VK_RASTERIZATION_ORDER_RELAXED_AMD, - VK_RASTERIZATION_ORDER_RANGE_SIZE_AMD = (VK_RASTERIZATION_ORDER_RELAXED_AMD - VK_RASTERIZATION_ORDER_STRICT_AMD + 1), VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 0x7FFFFFFF } VkRasterizationOrderAMD; - typedef struct VkPipelineRasterizationStateRasterizationOrderAMD { VkStructureType sType; const void* pNext; @@ -6276,7 +10325,6 @@ typedef struct VkPipelineRasterizationStateRasterizationOrderAMD { #define VK_EXT_debug_marker 1 #define VK_EXT_DEBUG_MARKER_SPEC_VERSION 4 #define VK_EXT_DEBUG_MARKER_EXTENSION_NAME "VK_EXT_debug_marker" - typedef struct VkDebugMarkerObjectNameInfoEXT { VkStructureType sType; const void* pNext; @@ -6302,7 +10350,6 @@ typedef struct VkDebugMarkerMarkerInfoEXT { float color[4]; } VkDebugMarkerMarkerInfoEXT; - typedef VkResult (VKAPI_PTR *PFN_vkDebugMarkerSetObjectTagEXT)(VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo); typedef VkResult (VKAPI_PTR *PFN_vkDebugMarkerSetObjectNameEXT)(VkDevice device, const VkDebugMarkerObjectNameInfoEXT* pNameInfo); typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerBeginEXT)(VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo); @@ -6330,6 +10377,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerInsertEXT( const VkDebugMarkerMarkerInfoEXT* pMarkerInfo); #endif + #define VK_AMD_gcn_shader 1 #define VK_AMD_GCN_SHADER_SPEC_VERSION 1 #define VK_AMD_GCN_SHADER_EXTENSION_NAME "VK_AMD_gcn_shader" @@ -6338,7 +10386,6 @@ VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerInsertEXT( #define VK_NV_dedicated_allocation 1 #define VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION 1 #define VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_NV_dedicated_allocation" - typedef struct VkDedicatedAllocationImageCreateInfoNV { VkStructureType sType; const void* pNext; @@ -6360,10 +10407,200 @@ typedef struct VkDedicatedAllocationMemoryAllocateInfoNV { -#define VK_AMD_draw_indirect_count 1 -#define VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION 1 -#define VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME "VK_AMD_draw_indirect_count" +#define VK_EXT_transform_feedback 1 +#define VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION 1 +#define VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME "VK_EXT_transform_feedback" +typedef VkFlags VkPipelineRasterizationStateStreamCreateFlagsEXT; +typedef struct VkPhysicalDeviceTransformFeedbackFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 transformFeedback; + VkBool32 geometryStreams; +} VkPhysicalDeviceTransformFeedbackFeaturesEXT; +typedef struct VkPhysicalDeviceTransformFeedbackPropertiesEXT { + VkStructureType sType; + void* pNext; + uint32_t maxTransformFeedbackStreams; + uint32_t maxTransformFeedbackBuffers; + VkDeviceSize maxTransformFeedbackBufferSize; + uint32_t maxTransformFeedbackStreamDataSize; + uint32_t maxTransformFeedbackBufferDataSize; + uint32_t maxTransformFeedbackBufferDataStride; + VkBool32 transformFeedbackQueries; + VkBool32 transformFeedbackStreamsLinesTriangles; + VkBool32 transformFeedbackRasterizationStreamSelect; + VkBool32 transformFeedbackDraw; +} VkPhysicalDeviceTransformFeedbackPropertiesEXT; + +typedef struct VkPipelineRasterizationStateStreamCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkPipelineRasterizationStateStreamCreateFlagsEXT flags; + uint32_t rasterizationStream; +} VkPipelineRasterizationStateStreamCreateInfoEXT; + +typedef void (VKAPI_PTR *PFN_vkCmdBindTransformFeedbackBuffersEXT)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes); +typedef void (VKAPI_PTR *PFN_vkCmdBeginTransformFeedbackEXT)(VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets); +typedef void (VKAPI_PTR *PFN_vkCmdEndTransformFeedbackEXT)(VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets); +typedef void (VKAPI_PTR *PFN_vkCmdBeginQueryIndexedEXT)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags, uint32_t index); +typedef void (VKAPI_PTR *PFN_vkCmdEndQueryIndexedEXT)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, uint32_t index); +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectByteCountEXT)(VkCommandBuffer commandBuffer, uint32_t instanceCount, uint32_t firstInstance, VkBuffer counterBuffer, VkDeviceSize counterBufferOffset, uint32_t counterOffset, uint32_t vertexStride); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBindTransformFeedbackBuffersEXT( + VkCommandBuffer commandBuffer, + uint32_t firstBinding, + uint32_t bindingCount, + const VkBuffer* pBuffers, + const VkDeviceSize* pOffsets, + const VkDeviceSize* pSizes); + +VKAPI_ATTR void VKAPI_CALL vkCmdBeginTransformFeedbackEXT( + VkCommandBuffer commandBuffer, + uint32_t firstCounterBuffer, + uint32_t counterBufferCount, + const VkBuffer* pCounterBuffers, + const VkDeviceSize* pCounterBufferOffsets); + +VKAPI_ATTR void VKAPI_CALL vkCmdEndTransformFeedbackEXT( + VkCommandBuffer commandBuffer, + uint32_t firstCounterBuffer, + uint32_t counterBufferCount, + const VkBuffer* pCounterBuffers, + const VkDeviceSize* pCounterBufferOffsets); + +VKAPI_ATTR void VKAPI_CALL vkCmdBeginQueryIndexedEXT( + VkCommandBuffer commandBuffer, + VkQueryPool queryPool, + uint32_t query, + VkQueryControlFlags flags, + uint32_t index); + +VKAPI_ATTR void VKAPI_CALL vkCmdEndQueryIndexedEXT( + VkCommandBuffer commandBuffer, + VkQueryPool queryPool, + uint32_t query, + uint32_t index); + +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectByteCountEXT( + VkCommandBuffer commandBuffer, + uint32_t instanceCount, + uint32_t firstInstance, + VkBuffer counterBuffer, + VkDeviceSize counterBufferOffset, + uint32_t counterOffset, + uint32_t vertexStride); +#endif + + +#define VK_NVX_binary_import 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCuModuleNVX) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCuFunctionNVX) +#define VK_NVX_BINARY_IMPORT_SPEC_VERSION 1 +#define VK_NVX_BINARY_IMPORT_EXTENSION_NAME "VK_NVX_binary_import" +typedef struct VkCuModuleCreateInfoNVX { + VkStructureType sType; + const void* pNext; + size_t dataSize; + const void* pData; +} VkCuModuleCreateInfoNVX; + +typedef struct VkCuFunctionCreateInfoNVX { + VkStructureType sType; + const void* pNext; + VkCuModuleNVX module; + const char* pName; +} VkCuFunctionCreateInfoNVX; + +typedef struct VkCuLaunchInfoNVX { + VkStructureType sType; + const void* pNext; + VkCuFunctionNVX function; + uint32_t gridDimX; + uint32_t gridDimY; + uint32_t gridDimZ; + uint32_t blockDimX; + uint32_t blockDimY; + uint32_t blockDimZ; + uint32_t sharedMemBytes; + size_t paramCount; + const void* const * pParams; + size_t extraCount; + const void* const * pExtras; +} VkCuLaunchInfoNVX; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateCuModuleNVX)(VkDevice device, const VkCuModuleCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCuModuleNVX* pModule); +typedef VkResult (VKAPI_PTR *PFN_vkCreateCuFunctionNVX)(VkDevice device, const VkCuFunctionCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCuFunctionNVX* pFunction); +typedef void (VKAPI_PTR *PFN_vkDestroyCuModuleNVX)(VkDevice device, VkCuModuleNVX module, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkDestroyCuFunctionNVX)(VkDevice device, VkCuFunctionNVX function, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkCmdCuLaunchKernelNVX)(VkCommandBuffer commandBuffer, const VkCuLaunchInfoNVX* pLaunchInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateCuModuleNVX( + VkDevice device, + const VkCuModuleCreateInfoNVX* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkCuModuleNVX* pModule); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateCuFunctionNVX( + VkDevice device, + const VkCuFunctionCreateInfoNVX* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkCuFunctionNVX* pFunction); + +VKAPI_ATTR void VKAPI_CALL vkDestroyCuModuleNVX( + VkDevice device, + VkCuModuleNVX module, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR void VKAPI_CALL vkDestroyCuFunctionNVX( + VkDevice device, + VkCuFunctionNVX function, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR void VKAPI_CALL vkCmdCuLaunchKernelNVX( + VkCommandBuffer commandBuffer, + const VkCuLaunchInfoNVX* pLaunchInfo); +#endif + + +#define VK_NVX_image_view_handle 1 +#define VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION 2 +#define VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME "VK_NVX_image_view_handle" +typedef struct VkImageViewHandleInfoNVX { + VkStructureType sType; + const void* pNext; + VkImageView imageView; + VkDescriptorType descriptorType; + VkSampler sampler; +} VkImageViewHandleInfoNVX; + +typedef struct VkImageViewAddressPropertiesNVX { + VkStructureType sType; + void* pNext; + VkDeviceAddress deviceAddress; + VkDeviceSize size; +} VkImageViewAddressPropertiesNVX; + +typedef uint32_t (VKAPI_PTR *PFN_vkGetImageViewHandleNVX)(VkDevice device, const VkImageViewHandleInfoNVX* pInfo); +typedef VkResult (VKAPI_PTR *PFN_vkGetImageViewAddressNVX)(VkDevice device, VkImageView imageView, VkImageViewAddressPropertiesNVX* pProperties); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR uint32_t VKAPI_CALL vkGetImageViewHandleNVX( + VkDevice device, + const VkImageViewHandleInfoNVX* pInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetImageViewAddressNVX( + VkDevice device, + VkImageView imageView, + VkImageViewAddressPropertiesNVX* pProperties); +#endif + + +#define VK_AMD_draw_indirect_count 1 +#define VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION 2 +#define VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME "VK_AMD_draw_indirect_count" typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCountAMD)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCountAMD)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); @@ -6387,13 +10624,14 @@ VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountAMD( uint32_t stride); #endif + #define VK_AMD_negative_viewport_height 1 #define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION 1 #define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME "VK_AMD_negative_viewport_height" #define VK_AMD_gpu_shader_half_float 1 -#define VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION 1 +#define VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION 2 #define VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME "VK_AMD_gpu_shader_half_float" @@ -6405,7 +10643,6 @@ VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountAMD( #define VK_AMD_texture_gather_bias_lod 1 #define VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION 1 #define VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME "VK_AMD_texture_gather_bias_lod" - typedef struct VkTextureLODGatherFormatPropertiesAMD { VkStructureType sType; void* pNext; @@ -6418,17 +10655,12 @@ typedef struct VkTextureLODGatherFormatPropertiesAMD { #define VK_AMD_SHADER_INFO_SPEC_VERSION 1 #define VK_AMD_SHADER_INFO_EXTENSION_NAME "VK_AMD_shader_info" - typedef enum VkShaderInfoTypeAMD { VK_SHADER_INFO_TYPE_STATISTICS_AMD = 0, VK_SHADER_INFO_TYPE_BINARY_AMD = 1, VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD = 2, - VK_SHADER_INFO_TYPE_BEGIN_RANGE_AMD = VK_SHADER_INFO_TYPE_STATISTICS_AMD, - VK_SHADER_INFO_TYPE_END_RANGE_AMD = VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD, - VK_SHADER_INFO_TYPE_RANGE_SIZE_AMD = (VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD - VK_SHADER_INFO_TYPE_STATISTICS_AMD + 1), VK_SHADER_INFO_TYPE_MAX_ENUM_AMD = 0x7FFFFFFF } VkShaderInfoTypeAMD; - typedef struct VkShaderResourceUsageAMD { uint32_t numUsedVgprs; uint32_t numUsedSgprs; @@ -6447,7 +10679,6 @@ typedef struct VkShaderStatisticsInfoAMD { uint32_t computeWorkGroupSize[3]; } VkShaderStatisticsInfoAMD; - typedef VkResult (VKAPI_PTR *PFN_vkGetShaderInfoAMD)(VkDevice device, VkPipeline pipeline, VkShaderStageFlagBits shaderStage, VkShaderInfoTypeAMD infoType, size_t* pInfoSize, void* pInfo); #ifndef VK_NO_PROTOTYPES @@ -6460,6 +10691,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetShaderInfoAMD( void* pInfo); #endif + #define VK_AMD_shader_image_load_store_lod 1 #define VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION 1 #define VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME "VK_AMD_shader_image_load_store_lod" @@ -6468,7 +10700,6 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetShaderInfoAMD( #define VK_NV_corner_sampled_image 1 #define VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION 2 #define VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME "VK_NV_corner_sampled_image" - typedef struct VkPhysicalDeviceCornerSampledImageFeaturesNV { VkStructureType sType; void* pNext; @@ -6486,7 +10717,6 @@ typedef struct VkPhysicalDeviceCornerSampledImageFeaturesNV { #define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1 #define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_NV_external_memory_capabilities" - typedef enum VkExternalMemoryHandleTypeFlagBitsNV { VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 0x00000001, VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 0x00000002, @@ -6503,7 +10733,6 @@ typedef enum VkExternalMemoryFeatureFlagBitsNV { VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF } VkExternalMemoryFeatureFlagBitsNV; typedef VkFlags VkExternalMemoryFeatureFlagsNV; - typedef struct VkExternalImageFormatPropertiesNV { VkImageFormatProperties imageFormatProperties; VkExternalMemoryFeatureFlagsNV externalMemoryFeatures; @@ -6511,7 +10740,6 @@ typedef struct VkExternalImageFormatPropertiesNV { VkExternalMemoryHandleTypeFlagsNV compatibleHandleTypes; } VkExternalImageFormatPropertiesNV; - typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties); #ifndef VK_NO_PROTOTYPES @@ -6526,10 +10754,10 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceExternalImageFormatPropertiesN VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties); #endif + #define VK_NV_external_memory 1 #define VK_NV_EXTERNAL_MEMORY_SPEC_VERSION 1 #define VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME "VK_NV_external_memory" - typedef struct VkExternalMemoryImageCreateInfoNV { VkStructureType sType; const void* pNext; @@ -6545,19 +10773,14 @@ typedef struct VkExportMemoryAllocateInfoNV { #define VK_EXT_validation_flags 1 -#define VK_EXT_VALIDATION_FLAGS_SPEC_VERSION 1 +#define VK_EXT_VALIDATION_FLAGS_SPEC_VERSION 2 #define VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME "VK_EXT_validation_flags" - typedef enum VkValidationCheckEXT { VK_VALIDATION_CHECK_ALL_EXT = 0, VK_VALIDATION_CHECK_SHADERS_EXT = 1, - VK_VALIDATION_CHECK_BEGIN_RANGE_EXT = VK_VALIDATION_CHECK_ALL_EXT, - VK_VALIDATION_CHECK_END_RANGE_EXT = VK_VALIDATION_CHECK_SHADERS_EXT, - VK_VALIDATION_CHECK_RANGE_SIZE_EXT = (VK_VALIDATION_CHECK_SHADERS_EXT - VK_VALIDATION_CHECK_ALL_EXT + 1), VK_VALIDATION_CHECK_MAX_ENUM_EXT = 0x7FFFFFFF } VkValidationCheckEXT; - typedef struct VkValidationFlagsEXT { VkStructureType sType; const void* pNext; @@ -6577,10 +10800,16 @@ typedef struct VkValidationFlagsEXT { #define VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME "VK_EXT_shader_subgroup_vote" +#define VK_EXT_texture_compression_astc_hdr 1 +#define VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION 1 +#define VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME "VK_EXT_texture_compression_astc_hdr" +typedef VkPhysicalDeviceTextureCompressionASTCHDRFeatures VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT; + + + #define VK_EXT_astc_decode_mode 1 #define VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION 1 #define VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME "VK_EXT_astc_decode_mode" - typedef struct VkImageViewASTCDecodeModeEXT { VkStructureType sType; const void* pNext; @@ -6595,17 +10824,60 @@ typedef struct VkPhysicalDeviceASTCDecodeFeaturesEXT { -#define VK_EXT_conditional_rendering 1 -#define VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION 1 -#define VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME "VK_EXT_conditional_rendering" +#define VK_EXT_pipeline_robustness 1 +#define VK_EXT_PIPELINE_ROBUSTNESS_SPEC_VERSION 1 +#define VK_EXT_PIPELINE_ROBUSTNESS_EXTENSION_NAME "VK_EXT_pipeline_robustness" +typedef enum VkPipelineRobustnessBufferBehaviorEXT { + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT = 0, + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT = 1, + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT = 2, + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT = 3, + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_MAX_ENUM_EXT = 0x7FFFFFFF +} VkPipelineRobustnessBufferBehaviorEXT; + +typedef enum VkPipelineRobustnessImageBehaviorEXT { + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT = 0, + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT = 1, + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT = 2, + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT = 3, + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_MAX_ENUM_EXT = 0x7FFFFFFF +} VkPipelineRobustnessImageBehaviorEXT; +typedef struct VkPhysicalDevicePipelineRobustnessFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 pipelineRobustness; +} VkPhysicalDevicePipelineRobustnessFeaturesEXT; + +typedef struct VkPhysicalDevicePipelineRobustnessPropertiesEXT { + VkStructureType sType; + void* pNext; + VkPipelineRobustnessBufferBehaviorEXT defaultRobustnessStorageBuffers; + VkPipelineRobustnessBufferBehaviorEXT defaultRobustnessUniformBuffers; + VkPipelineRobustnessBufferBehaviorEXT defaultRobustnessVertexInputs; + VkPipelineRobustnessImageBehaviorEXT defaultRobustnessImages; +} VkPhysicalDevicePipelineRobustnessPropertiesEXT; + +typedef struct VkPipelineRobustnessCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkPipelineRobustnessBufferBehaviorEXT storageBuffers; + VkPipelineRobustnessBufferBehaviorEXT uniformBuffers; + VkPipelineRobustnessBufferBehaviorEXT vertexInputs; + VkPipelineRobustnessImageBehaviorEXT images; +} VkPipelineRobustnessCreateInfoEXT; + + + +#define VK_EXT_conditional_rendering 1 +#define VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION 2 +#define VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME "VK_EXT_conditional_rendering" typedef enum VkConditionalRenderingFlagBitsEXT { VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 0x00000001, VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF } VkConditionalRenderingFlagBitsEXT; typedef VkFlags VkConditionalRenderingFlagsEXT; - typedef struct VkConditionalRenderingBeginInfoEXT { VkStructureType sType; const void* pNext; @@ -6627,7 +10899,6 @@ typedef struct VkCommandBufferInheritanceConditionalRenderingInfoEXT { VkBool32 conditionalRenderingEnable; } VkCommandBufferInheritanceConditionalRenderingInfoEXT; - typedef void (VKAPI_PTR *PFN_vkCmdBeginConditionalRenderingEXT)(VkCommandBuffer commandBuffer, const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin); typedef void (VKAPI_PTR *PFN_vkCmdEndConditionalRenderingEXT)(VkCommandBuffer commandBuffer); @@ -6640,237 +10911,10 @@ VKAPI_ATTR void VKAPI_CALL vkCmdEndConditionalRenderingEXT( VkCommandBuffer commandBuffer); #endif -#define VK_NVX_device_generated_commands 1 -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkObjectTableNVX) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkIndirectCommandsLayoutNVX) - -#define VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION 3 -#define VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME "VK_NVX_device_generated_commands" - - -typedef enum VkIndirectCommandsTokenTypeNVX { - VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX = 0, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX = 1, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX = 2, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX = 3, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX = 4, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX = 5, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX = 6, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX = 7, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_BEGIN_RANGE_NVX = VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_END_RANGE_NVX = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_RANGE_SIZE_NVX = (VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX - VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX + 1), - VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NVX = 0x7FFFFFFF -} VkIndirectCommandsTokenTypeNVX; - -typedef enum VkObjectEntryTypeNVX { - VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX = 0, - VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX = 1, - VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX = 2, - VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX = 3, - VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX = 4, - VK_OBJECT_ENTRY_TYPE_BEGIN_RANGE_NVX = VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX, - VK_OBJECT_ENTRY_TYPE_END_RANGE_NVX = VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX, - VK_OBJECT_ENTRY_TYPE_RANGE_SIZE_NVX = (VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX - VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX + 1), - VK_OBJECT_ENTRY_TYPE_MAX_ENUM_NVX = 0x7FFFFFFF -} VkObjectEntryTypeNVX; - - -typedef enum VkIndirectCommandsLayoutUsageFlagBitsNVX { - VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX = 0x00000001, - VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX = 0x00000002, - VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX = 0x00000004, - VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX = 0x00000008, - VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NVX = 0x7FFFFFFF -} VkIndirectCommandsLayoutUsageFlagBitsNVX; -typedef VkFlags VkIndirectCommandsLayoutUsageFlagsNVX; - -typedef enum VkObjectEntryUsageFlagBitsNVX { - VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX = 0x00000001, - VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX = 0x00000002, - VK_OBJECT_ENTRY_USAGE_FLAG_BITS_MAX_ENUM_NVX = 0x7FFFFFFF -} VkObjectEntryUsageFlagBitsNVX; -typedef VkFlags VkObjectEntryUsageFlagsNVX; - -typedef struct VkDeviceGeneratedCommandsFeaturesNVX { - VkStructureType sType; - const void* pNext; - VkBool32 computeBindingPointSupport; -} VkDeviceGeneratedCommandsFeaturesNVX; - -typedef struct VkDeviceGeneratedCommandsLimitsNVX { - VkStructureType sType; - const void* pNext; - uint32_t maxIndirectCommandsLayoutTokenCount; - uint32_t maxObjectEntryCounts; - uint32_t minSequenceCountBufferOffsetAlignment; - uint32_t minSequenceIndexBufferOffsetAlignment; - uint32_t minCommandsTokenBufferOffsetAlignment; -} VkDeviceGeneratedCommandsLimitsNVX; - -typedef struct VkIndirectCommandsTokenNVX { - VkIndirectCommandsTokenTypeNVX tokenType; - VkBuffer buffer; - VkDeviceSize offset; -} VkIndirectCommandsTokenNVX; - -typedef struct VkIndirectCommandsLayoutTokenNVX { - VkIndirectCommandsTokenTypeNVX tokenType; - uint32_t bindingUnit; - uint32_t dynamicCount; - uint32_t divisor; -} VkIndirectCommandsLayoutTokenNVX; - -typedef struct VkIndirectCommandsLayoutCreateInfoNVX { - VkStructureType sType; - const void* pNext; - VkPipelineBindPoint pipelineBindPoint; - VkIndirectCommandsLayoutUsageFlagsNVX flags; - uint32_t tokenCount; - const VkIndirectCommandsLayoutTokenNVX* pTokens; -} VkIndirectCommandsLayoutCreateInfoNVX; - -typedef struct VkCmdProcessCommandsInfoNVX { - VkStructureType sType; - const void* pNext; - VkObjectTableNVX objectTable; - VkIndirectCommandsLayoutNVX indirectCommandsLayout; - uint32_t indirectCommandsTokenCount; - const VkIndirectCommandsTokenNVX* pIndirectCommandsTokens; - uint32_t maxSequencesCount; - VkCommandBuffer targetCommandBuffer; - VkBuffer sequencesCountBuffer; - VkDeviceSize sequencesCountOffset; - VkBuffer sequencesIndexBuffer; - VkDeviceSize sequencesIndexOffset; -} VkCmdProcessCommandsInfoNVX; - -typedef struct VkCmdReserveSpaceForCommandsInfoNVX { - VkStructureType sType; - const void* pNext; - VkObjectTableNVX objectTable; - VkIndirectCommandsLayoutNVX indirectCommandsLayout; - uint32_t maxSequencesCount; -} VkCmdReserveSpaceForCommandsInfoNVX; - -typedef struct VkObjectTableCreateInfoNVX { - VkStructureType sType; - const void* pNext; - uint32_t objectCount; - const VkObjectEntryTypeNVX* pObjectEntryTypes; - const uint32_t* pObjectEntryCounts; - const VkObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags; - uint32_t maxUniformBuffersPerDescriptor; - uint32_t maxStorageBuffersPerDescriptor; - uint32_t maxStorageImagesPerDescriptor; - uint32_t maxSampledImagesPerDescriptor; - uint32_t maxPipelineLayouts; -} VkObjectTableCreateInfoNVX; - -typedef struct VkObjectTableEntryNVX { - VkObjectEntryTypeNVX type; - VkObjectEntryUsageFlagsNVX flags; -} VkObjectTableEntryNVX; - -typedef struct VkObjectTablePipelineEntryNVX { - VkObjectEntryTypeNVX type; - VkObjectEntryUsageFlagsNVX flags; - VkPipeline pipeline; -} VkObjectTablePipelineEntryNVX; - -typedef struct VkObjectTableDescriptorSetEntryNVX { - VkObjectEntryTypeNVX type; - VkObjectEntryUsageFlagsNVX flags; - VkPipelineLayout pipelineLayout; - VkDescriptorSet descriptorSet; -} VkObjectTableDescriptorSetEntryNVX; - -typedef struct VkObjectTableVertexBufferEntryNVX { - VkObjectEntryTypeNVX type; - VkObjectEntryUsageFlagsNVX flags; - VkBuffer buffer; -} VkObjectTableVertexBufferEntryNVX; - -typedef struct VkObjectTableIndexBufferEntryNVX { - VkObjectEntryTypeNVX type; - VkObjectEntryUsageFlagsNVX flags; - VkBuffer buffer; - VkIndexType indexType; -} VkObjectTableIndexBufferEntryNVX; - -typedef struct VkObjectTablePushConstantEntryNVX { - VkObjectEntryTypeNVX type; - VkObjectEntryUsageFlagsNVX flags; - VkPipelineLayout pipelineLayout; - VkShaderStageFlags stageFlags; -} VkObjectTablePushConstantEntryNVX; - - -typedef void (VKAPI_PTR *PFN_vkCmdProcessCommandsNVX)(VkCommandBuffer commandBuffer, const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo); -typedef void (VKAPI_PTR *PFN_vkCmdReserveSpaceForCommandsNVX)(VkCommandBuffer commandBuffer, const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo); -typedef VkResult (VKAPI_PTR *PFN_vkCreateIndirectCommandsLayoutNVX)(VkDevice device, const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout); -typedef void (VKAPI_PTR *PFN_vkDestroyIndirectCommandsLayoutNVX)(VkDevice device, VkIndirectCommandsLayoutNVX indirectCommandsLayout, const VkAllocationCallbacks* pAllocator); -typedef VkResult (VKAPI_PTR *PFN_vkCreateObjectTableNVX)(VkDevice device, const VkObjectTableCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkObjectTableNVX* pObjectTable); -typedef void (VKAPI_PTR *PFN_vkDestroyObjectTableNVX)(VkDevice device, VkObjectTableNVX objectTable, const VkAllocationCallbacks* pAllocator); -typedef VkResult (VKAPI_PTR *PFN_vkRegisterObjectsNVX)(VkDevice device, VkObjectTableNVX objectTable, uint32_t objectCount, const VkObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices); -typedef VkResult (VKAPI_PTR *PFN_vkUnregisterObjectsNVX)(VkDevice device, VkObjectTableNVX objectTable, uint32_t objectCount, const VkObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices); -typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX)(VkPhysicalDevice physicalDevice, VkDeviceGeneratedCommandsFeaturesNVX* pFeatures, VkDeviceGeneratedCommandsLimitsNVX* pLimits); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdProcessCommandsNVX( - VkCommandBuffer commandBuffer, - const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdReserveSpaceForCommandsNVX( - VkCommandBuffer commandBuffer, - const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo); - -VKAPI_ATTR VkResult VKAPI_CALL vkCreateIndirectCommandsLayoutNVX( - VkDevice device, - const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout); - -VKAPI_ATTR void VKAPI_CALL vkDestroyIndirectCommandsLayoutNVX( - VkDevice device, - VkIndirectCommandsLayoutNVX indirectCommandsLayout, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR VkResult VKAPI_CALL vkCreateObjectTableNVX( - VkDevice device, - const VkObjectTableCreateInfoNVX* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkObjectTableNVX* pObjectTable); - -VKAPI_ATTR void VKAPI_CALL vkDestroyObjectTableNVX( - VkDevice device, - VkObjectTableNVX objectTable, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR VkResult VKAPI_CALL vkRegisterObjectsNVX( - VkDevice device, - VkObjectTableNVX objectTable, - uint32_t objectCount, - const VkObjectTableEntryNVX* const* ppObjectTableEntries, - const uint32_t* pObjectIndices); - -VKAPI_ATTR VkResult VKAPI_CALL vkUnregisterObjectsNVX( - VkDevice device, - VkObjectTableNVX objectTable, - uint32_t objectCount, - const VkObjectEntryTypeNVX* pObjectEntryTypes, - const uint32_t* pObjectIndices); - -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( - VkPhysicalDevice physicalDevice, - VkDeviceGeneratedCommandsFeaturesNVX* pFeatures, - VkDeviceGeneratedCommandsLimitsNVX* pLimits); -#endif #define VK_NV_clip_space_w_scaling 1 #define VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION 1 #define VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME "VK_NV_clip_space_w_scaling" - typedef struct VkViewportWScalingNV { float xcoeff; float ycoeff; @@ -6884,7 +10928,6 @@ typedef struct VkPipelineViewportWScalingStateCreateInfoNV { const VkViewportWScalingNV* pViewportWScalings; } VkPipelineViewportWScalingStateCreateInfoNV; - typedef void (VKAPI_PTR *PFN_vkCmdSetViewportWScalingNV)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewportWScalingNV* pViewportWScalings); #ifndef VK_NO_PROTOTYPES @@ -6895,10 +10938,10 @@ VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportWScalingNV( const VkViewportWScalingNV* pViewportWScalings); #endif + #define VK_EXT_direct_mode_display 1 #define VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION 1 #define VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME "VK_EXT_direct_mode_display" - typedef VkResult (VKAPI_PTR *PFN_vkReleaseDisplayEXT)(VkPhysicalDevice physicalDevice, VkDisplayKHR display); #ifndef VK_NO_PROTOTYPES @@ -6907,17 +10950,17 @@ VKAPI_ATTR VkResult VKAPI_CALL vkReleaseDisplayEXT( VkDisplayKHR display); #endif + #define VK_EXT_display_surface_counter 1 #define VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION 1 #define VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME "VK_EXT_display_surface_counter" - typedef enum VkSurfaceCounterFlagBitsEXT { - VK_SURFACE_COUNTER_VBLANK_EXT = 0x00000001, + VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 0x00000001, + VK_SURFACE_COUNTER_VBLANK_EXT = VK_SURFACE_COUNTER_VBLANK_BIT_EXT, VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF } VkSurfaceCounterFlagBitsEXT; typedef VkFlags VkSurfaceCounterFlagsEXT; - typedef struct VkSurfaceCapabilities2EXT { VkStructureType sType; void* pNext; @@ -6934,7 +10977,6 @@ typedef struct VkSurfaceCapabilities2EXT { VkSurfaceCounterFlagsEXT supportedSurfaceCounters; } VkSurfaceCapabilities2EXT; - typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities); #ifndef VK_NO_PROTOTYPES @@ -6944,37 +10986,27 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilities2EXT( VkSurfaceCapabilities2EXT* pSurfaceCapabilities); #endif + #define VK_EXT_display_control 1 #define VK_EXT_DISPLAY_CONTROL_SPEC_VERSION 1 #define VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME "VK_EXT_display_control" - typedef enum VkDisplayPowerStateEXT { VK_DISPLAY_POWER_STATE_OFF_EXT = 0, VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1, VK_DISPLAY_POWER_STATE_ON_EXT = 2, - VK_DISPLAY_POWER_STATE_BEGIN_RANGE_EXT = VK_DISPLAY_POWER_STATE_OFF_EXT, - VK_DISPLAY_POWER_STATE_END_RANGE_EXT = VK_DISPLAY_POWER_STATE_ON_EXT, - VK_DISPLAY_POWER_STATE_RANGE_SIZE_EXT = (VK_DISPLAY_POWER_STATE_ON_EXT - VK_DISPLAY_POWER_STATE_OFF_EXT + 1), VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT = 0x7FFFFFFF } VkDisplayPowerStateEXT; typedef enum VkDeviceEventTypeEXT { VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0, - VK_DEVICE_EVENT_TYPE_BEGIN_RANGE_EXT = VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT, - VK_DEVICE_EVENT_TYPE_END_RANGE_EXT = VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT, - VK_DEVICE_EVENT_TYPE_RANGE_SIZE_EXT = (VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT - VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT + 1), VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF } VkDeviceEventTypeEXT; typedef enum VkDisplayEventTypeEXT { VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0, - VK_DISPLAY_EVENT_TYPE_BEGIN_RANGE_EXT = VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT, - VK_DISPLAY_EVENT_TYPE_END_RANGE_EXT = VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT, - VK_DISPLAY_EVENT_TYPE_RANGE_SIZE_EXT = (VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT - VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT + 1), VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF } VkDisplayEventTypeEXT; - typedef struct VkDisplayPowerInfoEXT { VkStructureType sType; const void* pNext; @@ -6999,7 +11031,6 @@ typedef struct VkSwapchainCounterCreateInfoEXT { VkSurfaceCounterFlagsEXT surfaceCounters; } VkSwapchainCounterCreateInfoEXT; - typedef VkResult (VKAPI_PTR *PFN_vkDisplayPowerControlEXT)(VkDevice device, VkDisplayKHR display, const VkDisplayPowerInfoEXT* pDisplayPowerInfo); typedef VkResult (VKAPI_PTR *PFN_vkRegisterDeviceEventEXT)(VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence); typedef VkResult (VKAPI_PTR *PFN_vkRegisterDisplayEventEXT)(VkDevice device, VkDisplayKHR display, const VkDisplayEventInfoEXT* pDisplayEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence); @@ -7031,10 +11062,10 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainCounterEXT( uint64_t* pCounterValue); #endif + #define VK_GOOGLE_display_timing 1 #define VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION 1 #define VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME "VK_GOOGLE_display_timing" - typedef struct VkRefreshCycleDurationGOOGLE { uint64_t refreshDuration; } VkRefreshCycleDurationGOOGLE; @@ -7059,7 +11090,6 @@ typedef struct VkPresentTimesInfoGOOGLE { const VkPresentTimeGOOGLE* pTimes; } VkPresentTimesInfoGOOGLE; - typedef VkResult (VKAPI_PTR *PFN_vkGetRefreshCycleDurationGOOGLE)(VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties); typedef VkResult (VKAPI_PTR *PFN_vkGetPastPresentationTimingGOOGLE)(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings); @@ -7076,6 +11106,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetPastPresentationTimingGOOGLE( VkPastPresentationTimingGOOGLE* pPresentationTimings); #endif + #define VK_NV_sample_mask_override_coverage 1 #define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION 1 #define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME "VK_NV_sample_mask_override_coverage" @@ -7087,14 +11118,15 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetPastPresentationTimingGOOGLE( #define VK_NV_viewport_array2 1 -#define VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION 1 -#define VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME "VK_NV_viewport_array2" +#define VK_NV_VIEWPORT_ARRAY_2_SPEC_VERSION 1 +#define VK_NV_VIEWPORT_ARRAY_2_EXTENSION_NAME "VK_NV_viewport_array2" +#define VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION VK_NV_VIEWPORT_ARRAY_2_SPEC_VERSION +#define VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME VK_NV_VIEWPORT_ARRAY_2_EXTENSION_NAME #define VK_NVX_multiview_per_view_attributes 1 #define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION 1 #define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME "VK_NVX_multiview_per_view_attributes" - typedef struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX { VkStructureType sType; void* pNext; @@ -7107,7 +11139,6 @@ typedef struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX { #define VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION 1 #define VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME "VK_NV_viewport_swizzle" - typedef enum VkViewportCoordinateSwizzleNV { VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0, VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1, @@ -7117,14 +11148,9 @@ typedef enum VkViewportCoordinateSwizzleNV { VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5, VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6, VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7, - VK_VIEWPORT_COORDINATE_SWIZZLE_BEGIN_RANGE_NV = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV, - VK_VIEWPORT_COORDINATE_SWIZZLE_END_RANGE_NV = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV, - VK_VIEWPORT_COORDINATE_SWIZZLE_RANGE_SIZE_NV = (VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV - VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV + 1), VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV = 0x7FFFFFFF } VkViewportCoordinateSwizzleNV; - typedef VkFlags VkPipelineViewportSwizzleStateCreateFlagsNV; - typedef struct VkViewportSwizzleNV { VkViewportCoordinateSwizzleNV x; VkViewportCoordinateSwizzleNV y; @@ -7143,21 +11169,15 @@ typedef struct VkPipelineViewportSwizzleStateCreateInfoNV { #define VK_EXT_discard_rectangles 1 -#define VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION 1 +#define VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION 2 #define VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME "VK_EXT_discard_rectangles" - typedef enum VkDiscardRectangleModeEXT { VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0, VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1, - VK_DISCARD_RECTANGLE_MODE_BEGIN_RANGE_EXT = VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT, - VK_DISCARD_RECTANGLE_MODE_END_RANGE_EXT = VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT, - VK_DISCARD_RECTANGLE_MODE_RANGE_SIZE_EXT = (VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT - VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT + 1), VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 0x7FFFFFFF } VkDiscardRectangleModeEXT; - typedef VkFlags VkPipelineDiscardRectangleStateCreateFlagsEXT; - typedef struct VkPhysicalDeviceDiscardRectanglePropertiesEXT { VkStructureType sType; void* pNext; @@ -7173,8 +11193,9 @@ typedef struct VkPipelineDiscardRectangleStateCreateInfoEXT { const VkRect2D* pDiscardRectangles; } VkPipelineDiscardRectangleStateCreateInfoEXT; - typedef void (VKAPI_PTR *PFN_vkCmdSetDiscardRectangleEXT)(VkCommandBuffer commandBuffer, uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const VkRect2D* pDiscardRectangles); +typedef void (VKAPI_PTR *PFN_vkCmdSetDiscardRectangleEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 discardRectangleEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetDiscardRectangleModeEXT)(VkCommandBuffer commandBuffer, VkDiscardRectangleModeEXT discardRectangleMode); #ifndef VK_NO_PROTOTYPES VKAPI_ATTR void VKAPI_CALL vkCmdSetDiscardRectangleEXT( @@ -7182,25 +11203,28 @@ VKAPI_ATTR void VKAPI_CALL vkCmdSetDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const VkRect2D* pDiscardRectangles); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDiscardRectangleEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 discardRectangleEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDiscardRectangleModeEXT( + VkCommandBuffer commandBuffer, + VkDiscardRectangleModeEXT discardRectangleMode); #endif + #define VK_EXT_conservative_rasterization 1 #define VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION 1 #define VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME "VK_EXT_conservative_rasterization" - typedef enum VkConservativeRasterizationModeEXT { VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = 0, VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = 1, VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = 2, - VK_CONSERVATIVE_RASTERIZATION_MODE_BEGIN_RANGE_EXT = VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT, - VK_CONSERVATIVE_RASTERIZATION_MODE_END_RANGE_EXT = VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT, - VK_CONSERVATIVE_RASTERIZATION_MODE_RANGE_SIZE_EXT = (VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT - VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT + 1), VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT = 0x7FFFFFFF } VkConservativeRasterizationModeEXT; - typedef VkFlags VkPipelineRasterizationConservativeStateCreateFlagsEXT; - typedef struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT { VkStructureType sType; void* pNext; @@ -7225,15 +11249,33 @@ typedef struct VkPipelineRasterizationConservativeStateCreateInfoEXT { +#define VK_EXT_depth_clip_enable 1 +#define VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION 1 +#define VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME "VK_EXT_depth_clip_enable" +typedef VkFlags VkPipelineRasterizationDepthClipStateCreateFlagsEXT; +typedef struct VkPhysicalDeviceDepthClipEnableFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 depthClipEnable; +} VkPhysicalDeviceDepthClipEnableFeaturesEXT; + +typedef struct VkPipelineRasterizationDepthClipStateCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkPipelineRasterizationDepthClipStateCreateFlagsEXT flags; + VkBool32 depthClipEnable; +} VkPipelineRasterizationDepthClipStateCreateInfoEXT; + + + #define VK_EXT_swapchain_colorspace 1 -#define VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION 3 +#define VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION 4 #define VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME "VK_EXT_swapchain_colorspace" #define VK_EXT_hdr_metadata 1 -#define VK_EXT_HDR_METADATA_SPEC_VERSION 1 +#define VK_EXT_HDR_METADATA_SPEC_VERSION 2 #define VK_EXT_HDR_METADATA_EXTENSION_NAME "VK_EXT_hdr_metadata" - typedef struct VkXYColorEXT { float x; float y; @@ -7252,7 +11294,6 @@ typedef struct VkHdrMetadataEXT { float maxFrameAverageLightLevel; } VkHdrMetadataEXT; - typedef void (VKAPI_PTR *PFN_vkSetHdrMetadataEXT)(VkDevice device, uint32_t swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata); #ifndef VK_NO_PROTOTYPES @@ -7263,6 +11304,7 @@ VKAPI_ATTR void VKAPI_CALL vkSetHdrMetadataEXT( const VkHdrMetadataEXT* pMetadata); #endif + #define VK_EXT_external_memory_dma_buf 1 #define VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION 1 #define VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME "VK_EXT_external_memory_dma_buf" @@ -7271,17 +11313,14 @@ VKAPI_ATTR void VKAPI_CALL vkSetHdrMetadataEXT( #define VK_EXT_queue_family_foreign 1 #define VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION 1 #define VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME "VK_EXT_queue_family_foreign" -#define VK_QUEUE_FAMILY_FOREIGN_EXT (~0U-2) +#define VK_QUEUE_FAMILY_FOREIGN_EXT (~2U) #define VK_EXT_debug_utils 1 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugUtilsMessengerEXT) - -#define VK_EXT_DEBUG_UTILS_SPEC_VERSION 1 +#define VK_EXT_DEBUG_UTILS_SPEC_VERSION 2 #define VK_EXT_DEBUG_UTILS_EXTENSION_NAME "VK_EXT_debug_utils" - typedef VkFlags VkDebugUtilsMessengerCallbackDataFlagsEXT; -typedef VkFlags VkDebugUtilsMessengerCreateFlagsEXT; typedef enum VkDebugUtilsMessageSeverityFlagBitsEXT { VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = 0x00000001, @@ -7290,15 +11329,23 @@ typedef enum VkDebugUtilsMessageSeverityFlagBitsEXT { VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = 0x00001000, VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF } VkDebugUtilsMessageSeverityFlagBitsEXT; -typedef VkFlags VkDebugUtilsMessageSeverityFlagsEXT; typedef enum VkDebugUtilsMessageTypeFlagBitsEXT { VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = 0x00000001, VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = 0x00000002, VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = 0x00000004, + VK_DEBUG_UTILS_MESSAGE_TYPE_DEVICE_ADDRESS_BINDING_BIT_EXT = 0x00000008, VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF } VkDebugUtilsMessageTypeFlagBitsEXT; typedef VkFlags VkDebugUtilsMessageTypeFlagsEXT; +typedef VkFlags VkDebugUtilsMessageSeverityFlagsEXT; +typedef VkFlags VkDebugUtilsMessengerCreateFlagsEXT; +typedef struct VkDebugUtilsLabelEXT { + VkStructureType sType; + const void* pNext; + const char* pLabelName; + float color[4]; +} VkDebugUtilsLabelEXT; typedef struct VkDebugUtilsObjectNameInfoEXT { VkStructureType sType; @@ -7308,23 +11355,6 @@ typedef struct VkDebugUtilsObjectNameInfoEXT { const char* pObjectName; } VkDebugUtilsObjectNameInfoEXT; -typedef struct VkDebugUtilsObjectTagInfoEXT { - VkStructureType sType; - const void* pNext; - VkObjectType objectType; - uint64_t objectHandle; - uint64_t tagName; - size_t tagSize; - const void* pTag; -} VkDebugUtilsObjectTagInfoEXT; - -typedef struct VkDebugUtilsLabelEXT { - VkStructureType sType; - const void* pNext; - const char* pLabelName; - float color[4]; -} VkDebugUtilsLabelEXT; - typedef struct VkDebugUtilsMessengerCallbackDataEXT { VkStructureType sType; const void* pNext; @@ -7333,16 +11363,16 @@ typedef struct VkDebugUtilsMessengerCallbackDataEXT { int32_t messageIdNumber; const char* pMessage; uint32_t queueLabelCount; - VkDebugUtilsLabelEXT* pQueueLabels; + const VkDebugUtilsLabelEXT* pQueueLabels; uint32_t cmdBufLabelCount; - VkDebugUtilsLabelEXT* pCmdBufLabels; + const VkDebugUtilsLabelEXT* pCmdBufLabels; uint32_t objectCount; - VkDebugUtilsObjectNameInfoEXT* pObjects; + const VkDebugUtilsObjectNameInfoEXT* pObjects; } VkDebugUtilsMessengerCallbackDataEXT; typedef VkBool32 (VKAPI_PTR *PFN_vkDebugUtilsMessengerCallbackEXT)( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, - VkDebugUtilsMessageTypeFlagsEXT messageType, + VkDebugUtilsMessageTypeFlagsEXT messageTypes, const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData, void* pUserData); @@ -7356,6 +11386,15 @@ typedef struct VkDebugUtilsMessengerCreateInfoEXT { void* pUserData; } VkDebugUtilsMessengerCreateInfoEXT; +typedef struct VkDebugUtilsObjectTagInfoEXT { + VkStructureType sType; + const void* pNext; + VkObjectType objectType; + uint64_t objectHandle; + uint64_t tagName; + size_t tagSize; + const void* pTag; +} VkDebugUtilsObjectTagInfoEXT; typedef VkResult (VKAPI_PTR *PFN_vkSetDebugUtilsObjectNameEXT)(VkDevice device, const VkDebugUtilsObjectNameInfoEXT* pNameInfo); typedef VkResult (VKAPI_PTR *PFN_vkSetDebugUtilsObjectTagEXT)(VkDevice device, const VkDebugUtilsObjectTagInfoEXT* pTagInfo); @@ -7418,38 +11457,20 @@ VKAPI_ATTR void VKAPI_CALL vkSubmitDebugUtilsMessageEXT( const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData); #endif + #define VK_EXT_sampler_filter_minmax 1 -#define VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION 1 +#define VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION 2 #define VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME "VK_EXT_sampler_filter_minmax" +typedef VkSamplerReductionMode VkSamplerReductionModeEXT; +typedef VkSamplerReductionModeCreateInfo VkSamplerReductionModeCreateInfoEXT; -typedef enum VkSamplerReductionModeEXT { - VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0, - VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1, - VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2, - VK_SAMPLER_REDUCTION_MODE_BEGIN_RANGE_EXT = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT, - VK_SAMPLER_REDUCTION_MODE_END_RANGE_EXT = VK_SAMPLER_REDUCTION_MODE_MAX_EXT, - VK_SAMPLER_REDUCTION_MODE_RANGE_SIZE_EXT = (VK_SAMPLER_REDUCTION_MODE_MAX_EXT - VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT + 1), - VK_SAMPLER_REDUCTION_MODE_MAX_ENUM_EXT = 0x7FFFFFFF -} VkSamplerReductionModeEXT; - -typedef struct VkSamplerReductionModeCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkSamplerReductionModeEXT reductionMode; -} VkSamplerReductionModeCreateInfoEXT; - -typedef struct VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT { - VkStructureType sType; - void* pNext; - VkBool32 filterMinmaxSingleComponentFormats; - VkBool32 filterMinmaxImageComponentMapping; -} VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT; +typedef VkPhysicalDeviceSamplerFilterMinmaxProperties VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT; #define VK_AMD_gpu_shader_int16 1 -#define VK_AMD_GPU_SHADER_INT16_SPEC_VERSION 1 +#define VK_AMD_GPU_SHADER_INT16_SPEC_VERSION 2 #define VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME "VK_AMD_gpu_shader_int16" @@ -7466,36 +11487,13 @@ typedef struct VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT { #define VK_EXT_inline_uniform_block 1 #define VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION 1 #define VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME "VK_EXT_inline_uniform_block" +typedef VkPhysicalDeviceInlineUniformBlockFeatures VkPhysicalDeviceInlineUniformBlockFeaturesEXT; -typedef struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 inlineUniformBlock; - VkBool32 descriptorBindingInlineUniformBlockUpdateAfterBind; -} VkPhysicalDeviceInlineUniformBlockFeaturesEXT; +typedef VkPhysicalDeviceInlineUniformBlockProperties VkPhysicalDeviceInlineUniformBlockPropertiesEXT; -typedef struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT { - VkStructureType sType; - void* pNext; - uint32_t maxInlineUniformBlockSize; - uint32_t maxPerStageDescriptorInlineUniformBlocks; - uint32_t maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks; - uint32_t maxDescriptorSetInlineUniformBlocks; - uint32_t maxDescriptorSetUpdateAfterBindInlineUniformBlocks; -} VkPhysicalDeviceInlineUniformBlockPropertiesEXT; +typedef VkWriteDescriptorSetInlineUniformBlock VkWriteDescriptorSetInlineUniformBlockEXT; -typedef struct VkWriteDescriptorSetInlineUniformBlockEXT { - VkStructureType sType; - const void* pNext; - uint32_t dataSize; - const void* pData; -} VkWriteDescriptorSetInlineUniformBlockEXT; - -typedef struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT { - VkStructureType sType; - const void* pNext; - uint32_t maxInlineUniformBlockBindings; -} VkDescriptorPoolInlineUniformBlockCreateInfoEXT; +typedef VkDescriptorPoolInlineUniformBlockCreateInfo VkDescriptorPoolInlineUniformBlockCreateInfoEXT; @@ -7507,7 +11505,6 @@ typedef struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT { #define VK_EXT_sample_locations 1 #define VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION 1 #define VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME "VK_EXT_sample_locations" - typedef struct VkSampleLocationEXT { float x; float y; @@ -7564,7 +11561,6 @@ typedef struct VkMultisamplePropertiesEXT { VkExtent2D maxSampleLocationGridSize; } VkMultisamplePropertiesEXT; - typedef void (VKAPI_PTR *PFN_vkCmdSetSampleLocationsEXT)(VkCommandBuffer commandBuffer, const VkSampleLocationsInfoEXT* pSampleLocationsInfo); typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT)(VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties); @@ -7579,21 +11575,17 @@ VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMultisamplePropertiesEXT( VkMultisamplePropertiesEXT* pMultisampleProperties); #endif + #define VK_EXT_blend_operation_advanced 1 #define VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION 2 #define VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME "VK_EXT_blend_operation_advanced" - typedef enum VkBlendOverlapEXT { VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0, VK_BLEND_OVERLAP_DISJOINT_EXT = 1, VK_BLEND_OVERLAP_CONJOINT_EXT = 2, - VK_BLEND_OVERLAP_BEGIN_RANGE_EXT = VK_BLEND_OVERLAP_UNCORRELATED_EXT, - VK_BLEND_OVERLAP_END_RANGE_EXT = VK_BLEND_OVERLAP_CONJOINT_EXT, - VK_BLEND_OVERLAP_RANGE_SIZE_EXT = (VK_BLEND_OVERLAP_CONJOINT_EXT - VK_BLEND_OVERLAP_UNCORRELATED_EXT + 1), VK_BLEND_OVERLAP_MAX_ENUM_EXT = 0x7FFFFFFF } VkBlendOverlapEXT; - typedef struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT { VkStructureType sType; void* pNext; @@ -7624,9 +11616,7 @@ typedef struct VkPipelineColorBlendAdvancedStateCreateInfoEXT { #define VK_NV_fragment_coverage_to_color 1 #define VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION 1 #define VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME "VK_NV_fragment_coverage_to_color" - typedef VkFlags VkPipelineCoverageToColorStateCreateFlagsNV; - typedef struct VkPipelineCoverageToColorStateCreateInfoNV { VkStructureType sType; const void* pNext; @@ -7641,20 +11631,14 @@ typedef struct VkPipelineCoverageToColorStateCreateInfoNV { #define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION 1 #define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME "VK_NV_framebuffer_mixed_samples" - typedef enum VkCoverageModulationModeNV { VK_COVERAGE_MODULATION_MODE_NONE_NV = 0, VK_COVERAGE_MODULATION_MODE_RGB_NV = 1, VK_COVERAGE_MODULATION_MODE_ALPHA_NV = 2, VK_COVERAGE_MODULATION_MODE_RGBA_NV = 3, - VK_COVERAGE_MODULATION_MODE_BEGIN_RANGE_NV = VK_COVERAGE_MODULATION_MODE_NONE_NV, - VK_COVERAGE_MODULATION_MODE_END_RANGE_NV = VK_COVERAGE_MODULATION_MODE_RGBA_NV, - VK_COVERAGE_MODULATION_MODE_RANGE_SIZE_NV = (VK_COVERAGE_MODULATION_MODE_RGBA_NV - VK_COVERAGE_MODULATION_MODE_NONE_NV + 1), VK_COVERAGE_MODULATION_MODE_MAX_ENUM_NV = 0x7FFFFFFF } VkCoverageModulationModeNV; - typedef VkFlags VkPipelineCoverageModulationStateCreateFlagsNV; - typedef struct VkPipelineCoverageModulationStateCreateInfoNV { VkStructureType sType; const void* pNext; @@ -7672,28 +11656,108 @@ typedef struct VkPipelineCoverageModulationStateCreateInfoNV { #define VK_NV_FILL_RECTANGLE_EXTENSION_NAME "VK_NV_fill_rectangle" +#define VK_NV_shader_sm_builtins 1 +#define VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION 1 +#define VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME "VK_NV_shader_sm_builtins" +typedef struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV { + VkStructureType sType; + void* pNext; + uint32_t shaderSMCount; + uint32_t shaderWarpsPerSM; +} VkPhysicalDeviceShaderSMBuiltinsPropertiesNV; + +typedef struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 shaderSMBuiltins; +} VkPhysicalDeviceShaderSMBuiltinsFeaturesNV; + + + #define VK_EXT_post_depth_coverage 1 #define VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION 1 #define VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME "VK_EXT_post_depth_coverage" +#define VK_EXT_image_drm_format_modifier 1 +#define VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION 2 +#define VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME "VK_EXT_image_drm_format_modifier" +typedef struct VkDrmFormatModifierPropertiesEXT { + uint64_t drmFormatModifier; + uint32_t drmFormatModifierPlaneCount; + VkFormatFeatureFlags drmFormatModifierTilingFeatures; +} VkDrmFormatModifierPropertiesEXT; + +typedef struct VkDrmFormatModifierPropertiesListEXT { + VkStructureType sType; + void* pNext; + uint32_t drmFormatModifierCount; + VkDrmFormatModifierPropertiesEXT* pDrmFormatModifierProperties; +} VkDrmFormatModifierPropertiesListEXT; + +typedef struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT { + VkStructureType sType; + const void* pNext; + uint64_t drmFormatModifier; + VkSharingMode sharingMode; + uint32_t queueFamilyIndexCount; + const uint32_t* pQueueFamilyIndices; +} VkPhysicalDeviceImageDrmFormatModifierInfoEXT; + +typedef struct VkImageDrmFormatModifierListCreateInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t drmFormatModifierCount; + const uint64_t* pDrmFormatModifiers; +} VkImageDrmFormatModifierListCreateInfoEXT; + +typedef struct VkImageDrmFormatModifierExplicitCreateInfoEXT { + VkStructureType sType; + const void* pNext; + uint64_t drmFormatModifier; + uint32_t drmFormatModifierPlaneCount; + const VkSubresourceLayout* pPlaneLayouts; +} VkImageDrmFormatModifierExplicitCreateInfoEXT; + +typedef struct VkImageDrmFormatModifierPropertiesEXT { + VkStructureType sType; + void* pNext; + uint64_t drmFormatModifier; +} VkImageDrmFormatModifierPropertiesEXT; + +typedef struct VkDrmFormatModifierProperties2EXT { + uint64_t drmFormatModifier; + uint32_t drmFormatModifierPlaneCount; + VkFormatFeatureFlags2 drmFormatModifierTilingFeatures; +} VkDrmFormatModifierProperties2EXT; + +typedef struct VkDrmFormatModifierPropertiesList2EXT { + VkStructureType sType; + void* pNext; + uint32_t drmFormatModifierCount; + VkDrmFormatModifierProperties2EXT* pDrmFormatModifierProperties; +} VkDrmFormatModifierPropertiesList2EXT; + +typedef VkResult (VKAPI_PTR *PFN_vkGetImageDrmFormatModifierPropertiesEXT)(VkDevice device, VkImage image, VkImageDrmFormatModifierPropertiesEXT* pProperties); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetImageDrmFormatModifierPropertiesEXT( + VkDevice device, + VkImage image, + VkImageDrmFormatModifierPropertiesEXT* pProperties); +#endif + + #define VK_EXT_validation_cache 1 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkValidationCacheEXT) - #define VK_EXT_VALIDATION_CACHE_SPEC_VERSION 1 #define VK_EXT_VALIDATION_CACHE_EXTENSION_NAME "VK_EXT_validation_cache" - typedef enum VkValidationCacheHeaderVersionEXT { VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1, - VK_VALIDATION_CACHE_HEADER_VERSION_BEGIN_RANGE_EXT = VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT, - VK_VALIDATION_CACHE_HEADER_VERSION_END_RANGE_EXT = VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT, - VK_VALIDATION_CACHE_HEADER_VERSION_RANGE_SIZE_EXT = (VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT - VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT + 1), VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 0x7FFFFFFF } VkValidationCacheHeaderVersionEXT; - typedef VkFlags VkValidationCacheCreateFlagsEXT; - typedef struct VkValidationCacheCreateInfoEXT { VkStructureType sType; const void* pNext; @@ -7708,7 +11772,6 @@ typedef struct VkShaderModuleValidationCacheCreateInfoEXT { VkValidationCacheEXT validationCache; } VkShaderModuleValidationCacheCreateInfoEXT; - typedef VkResult (VKAPI_PTR *PFN_vkCreateValidationCacheEXT)(VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkValidationCacheEXT* pValidationCache); typedef void (VKAPI_PTR *PFN_vkDestroyValidationCacheEXT)(VkDevice device, VkValidationCacheEXT validationCache, const VkAllocationCallbacks* pAllocator); typedef VkResult (VKAPI_PTR *PFN_vkMergeValidationCachesEXT)(VkDevice device, VkValidationCacheEXT dstCache, uint32_t srcCacheCount, const VkValidationCacheEXT* pSrcCaches); @@ -7739,92 +11802,23 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetValidationCacheDataEXT( void* pData); #endif + #define VK_EXT_descriptor_indexing 1 #define VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION 2 #define VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME "VK_EXT_descriptor_indexing" +typedef VkDescriptorBindingFlagBits VkDescriptorBindingFlagBitsEXT; +typedef VkDescriptorBindingFlags VkDescriptorBindingFlagsEXT; -typedef enum VkDescriptorBindingFlagBitsEXT { - VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = 0x00000001, - VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = 0x00000002, - VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = 0x00000004, - VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = 0x00000008, - VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF -} VkDescriptorBindingFlagBitsEXT; -typedef VkFlags VkDescriptorBindingFlagsEXT; +typedef VkDescriptorSetLayoutBindingFlagsCreateInfo VkDescriptorSetLayoutBindingFlagsCreateInfoEXT; -typedef struct VkDescriptorSetLayoutBindingFlagsCreateInfoEXT { - VkStructureType sType; - const void* pNext; - uint32_t bindingCount; - const VkDescriptorBindingFlagsEXT* pBindingFlags; -} VkDescriptorSetLayoutBindingFlagsCreateInfoEXT; +typedef VkPhysicalDeviceDescriptorIndexingFeatures VkPhysicalDeviceDescriptorIndexingFeaturesEXT; -typedef struct VkPhysicalDeviceDescriptorIndexingFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 shaderInputAttachmentArrayDynamicIndexing; - VkBool32 shaderUniformTexelBufferArrayDynamicIndexing; - VkBool32 shaderStorageTexelBufferArrayDynamicIndexing; - VkBool32 shaderUniformBufferArrayNonUniformIndexing; - VkBool32 shaderSampledImageArrayNonUniformIndexing; - VkBool32 shaderStorageBufferArrayNonUniformIndexing; - VkBool32 shaderStorageImageArrayNonUniformIndexing; - VkBool32 shaderInputAttachmentArrayNonUniformIndexing; - VkBool32 shaderUniformTexelBufferArrayNonUniformIndexing; - VkBool32 shaderStorageTexelBufferArrayNonUniformIndexing; - VkBool32 descriptorBindingUniformBufferUpdateAfterBind; - VkBool32 descriptorBindingSampledImageUpdateAfterBind; - VkBool32 descriptorBindingStorageImageUpdateAfterBind; - VkBool32 descriptorBindingStorageBufferUpdateAfterBind; - VkBool32 descriptorBindingUniformTexelBufferUpdateAfterBind; - VkBool32 descriptorBindingStorageTexelBufferUpdateAfterBind; - VkBool32 descriptorBindingUpdateUnusedWhilePending; - VkBool32 descriptorBindingPartiallyBound; - VkBool32 descriptorBindingVariableDescriptorCount; - VkBool32 runtimeDescriptorArray; -} VkPhysicalDeviceDescriptorIndexingFeaturesEXT; +typedef VkPhysicalDeviceDescriptorIndexingProperties VkPhysicalDeviceDescriptorIndexingPropertiesEXT; -typedef struct VkPhysicalDeviceDescriptorIndexingPropertiesEXT { - VkStructureType sType; - void* pNext; - uint32_t maxUpdateAfterBindDescriptorsInAllPools; - VkBool32 shaderUniformBufferArrayNonUniformIndexingNative; - VkBool32 shaderSampledImageArrayNonUniformIndexingNative; - VkBool32 shaderStorageBufferArrayNonUniformIndexingNative; - VkBool32 shaderStorageImageArrayNonUniformIndexingNative; - VkBool32 shaderInputAttachmentArrayNonUniformIndexingNative; - VkBool32 robustBufferAccessUpdateAfterBind; - VkBool32 quadDivergentImplicitLod; - uint32_t maxPerStageDescriptorUpdateAfterBindSamplers; - uint32_t maxPerStageDescriptorUpdateAfterBindUniformBuffers; - uint32_t maxPerStageDescriptorUpdateAfterBindStorageBuffers; - uint32_t maxPerStageDescriptorUpdateAfterBindSampledImages; - uint32_t maxPerStageDescriptorUpdateAfterBindStorageImages; - uint32_t maxPerStageDescriptorUpdateAfterBindInputAttachments; - uint32_t maxPerStageUpdateAfterBindResources; - uint32_t maxDescriptorSetUpdateAfterBindSamplers; - uint32_t maxDescriptorSetUpdateAfterBindUniformBuffers; - uint32_t maxDescriptorSetUpdateAfterBindUniformBuffersDynamic; - uint32_t maxDescriptorSetUpdateAfterBindStorageBuffers; - uint32_t maxDescriptorSetUpdateAfterBindStorageBuffersDynamic; - uint32_t maxDescriptorSetUpdateAfterBindSampledImages; - uint32_t maxDescriptorSetUpdateAfterBindStorageImages; - uint32_t maxDescriptorSetUpdateAfterBindInputAttachments; -} VkPhysicalDeviceDescriptorIndexingPropertiesEXT; +typedef VkDescriptorSetVariableDescriptorCountAllocateInfo VkDescriptorSetVariableDescriptorCountAllocateInfoEXT; -typedef struct VkDescriptorSetVariableDescriptorCountAllocateInfoEXT { - VkStructureType sType; - const void* pNext; - uint32_t descriptorSetCount; - const uint32_t* pDescriptorCounts; -} VkDescriptorSetVariableDescriptorCountAllocateInfoEXT; - -typedef struct VkDescriptorSetVariableDescriptorCountLayoutSupportEXT { - VkStructureType sType; - void* pNext; - uint32_t maxVariableDescriptorCount; -} VkDescriptorSetVariableDescriptorCountLayoutSupportEXT; +typedef VkDescriptorSetVariableDescriptorCountLayoutSupport VkDescriptorSetVariableDescriptorCountLayoutSupportEXT; @@ -7837,7 +11831,6 @@ typedef struct VkDescriptorSetVariableDescriptorCountLayoutSupportEXT { #define VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION 3 #define VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME "VK_NV_shading_rate_image" - typedef enum VkShadingRatePaletteEntryNV { VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0, VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1, @@ -7851,9 +11844,6 @@ typedef enum VkShadingRatePaletteEntryNV { VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9, VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10, VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11, - VK_SHADING_RATE_PALETTE_ENTRY_BEGIN_RANGE_NV = VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV, - VK_SHADING_RATE_PALETTE_ENTRY_END_RANGE_NV = VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV, - VK_SHADING_RATE_PALETTE_ENTRY_RANGE_SIZE_NV = (VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV - VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV + 1), VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV = 0x7FFFFFFF } VkShadingRatePaletteEntryNV; @@ -7862,12 +11852,8 @@ typedef enum VkCoarseSampleOrderTypeNV { VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1, VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2, VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3, - VK_COARSE_SAMPLE_ORDER_TYPE_BEGIN_RANGE_NV = VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV, - VK_COARSE_SAMPLE_ORDER_TYPE_END_RANGE_NV = VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV, - VK_COARSE_SAMPLE_ORDER_TYPE_RANGE_SIZE_NV = (VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV - VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV + 1), VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV = 0x7FFFFFFF } VkCoarseSampleOrderTypeNV; - typedef struct VkShadingRatePaletteNV { uint32_t shadingRatePaletteEntryCount; const VkShadingRatePaletteEntryNV* pShadingRatePaletteEntries; @@ -7917,7 +11903,6 @@ typedef struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV { const VkCoarseSampleOrderCustomNV* pCustomSampleOrders; } VkPipelineViewportCoarseSampleOrderStateCreateInfoNV; - typedef void (VKAPI_PTR *PFN_vkCmdBindShadingRateImageNV)(VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout); typedef void (VKAPI_PTR *PFN_vkCmdSetViewportShadingRatePaletteNV)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkShadingRatePaletteNV* pShadingRatePalettes); typedef void (VKAPI_PTR *PFN_vkCmdSetCoarseSampleOrderNV)(VkCommandBuffer commandBuffer, VkCoarseSampleOrderTypeNV sampleOrderType, uint32_t customSampleOrderCount, const VkCoarseSampleOrderCustomNV* pCustomSampleOrders); @@ -7941,81 +11926,147 @@ VKAPI_ATTR void VKAPI_CALL vkCmdSetCoarseSampleOrderNV( const VkCoarseSampleOrderCustomNV* pCustomSampleOrders); #endif -#define VK_NVX_raytracing 1 -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkAccelerationStructureNVX) -#define VK_NVX_RAYTRACING_SPEC_VERSION 1 -#define VK_NVX_RAYTRACING_EXTENSION_NAME "VK_NVX_raytracing" +#define VK_NV_ray_tracing 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkAccelerationStructureNV) +#define VK_NV_RAY_TRACING_SPEC_VERSION 3 +#define VK_NV_RAY_TRACING_EXTENSION_NAME "VK_NV_ray_tracing" +#define VK_SHADER_UNUSED_KHR (~0U) +#define VK_SHADER_UNUSED_NV VK_SHADER_UNUSED_KHR + +typedef enum VkRayTracingShaderGroupTypeKHR { + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0, + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1, + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2, + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR, + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR, + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR, + VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkRayTracingShaderGroupTypeKHR; +typedef VkRayTracingShaderGroupTypeKHR VkRayTracingShaderGroupTypeNV; -typedef enum VkGeometryTypeNVX { - VK_GEOMETRY_TYPE_TRIANGLES_NVX = 0, - VK_GEOMETRY_TYPE_AABBS_NVX = 1, - VK_GEOMETRY_TYPE_BEGIN_RANGE_NVX = VK_GEOMETRY_TYPE_TRIANGLES_NVX, - VK_GEOMETRY_TYPE_END_RANGE_NVX = VK_GEOMETRY_TYPE_AABBS_NVX, - VK_GEOMETRY_TYPE_RANGE_SIZE_NVX = (VK_GEOMETRY_TYPE_AABBS_NVX - VK_GEOMETRY_TYPE_TRIANGLES_NVX + 1), - VK_GEOMETRY_TYPE_MAX_ENUM_NVX = 0x7FFFFFFF -} VkGeometryTypeNVX; - -typedef enum VkAccelerationStructureTypeNVX { - VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NVX = 0, - VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NVX = 1, - VK_ACCELERATION_STRUCTURE_TYPE_BEGIN_RANGE_NVX = VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NVX, - VK_ACCELERATION_STRUCTURE_TYPE_END_RANGE_NVX = VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NVX, - VK_ACCELERATION_STRUCTURE_TYPE_RANGE_SIZE_NVX = (VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NVX - VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NVX + 1), - VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_NVX = 0x7FFFFFFF -} VkAccelerationStructureTypeNVX; - -typedef enum VkCopyAccelerationStructureModeNVX { - VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NVX = 0, - VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NVX = 1, - VK_COPY_ACCELERATION_STRUCTURE_MODE_BEGIN_RANGE_NVX = VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NVX, - VK_COPY_ACCELERATION_STRUCTURE_MODE_END_RANGE_NVX = VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NVX, - VK_COPY_ACCELERATION_STRUCTURE_MODE_RANGE_SIZE_NVX = (VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NVX - VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NVX + 1), - VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_NVX = 0x7FFFFFFF -} VkCopyAccelerationStructureModeNVX; +typedef enum VkGeometryTypeKHR { + VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0, + VK_GEOMETRY_TYPE_AABBS_KHR = 1, + VK_GEOMETRY_TYPE_INSTANCES_KHR = 2, + VK_GEOMETRY_TYPE_TRIANGLES_NV = VK_GEOMETRY_TYPE_TRIANGLES_KHR, + VK_GEOMETRY_TYPE_AABBS_NV = VK_GEOMETRY_TYPE_AABBS_KHR, + VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkGeometryTypeKHR; +typedef VkGeometryTypeKHR VkGeometryTypeNV; -typedef enum VkGeometryFlagBitsNVX { - VK_GEOMETRY_OPAQUE_BIT_NVX = 0x00000001, - VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NVX = 0x00000002, - VK_GEOMETRY_FLAG_BITS_MAX_ENUM_NVX = 0x7FFFFFFF -} VkGeometryFlagBitsNVX; -typedef VkFlags VkGeometryFlagsNVX; +typedef enum VkAccelerationStructureTypeKHR { + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0, + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1, + VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR = 2, + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR, + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR, + VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkAccelerationStructureTypeKHR; +typedef VkAccelerationStructureTypeKHR VkAccelerationStructureTypeNV; -typedef enum VkGeometryInstanceFlagBitsNVX { - VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NVX = 0x00000001, - VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_FLIP_WINDING_BIT_NVX = 0x00000002, - VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NVX = 0x00000004, - VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NVX = 0x00000008, - VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_NVX = 0x7FFFFFFF -} VkGeometryInstanceFlagBitsNVX; -typedef VkFlags VkGeometryInstanceFlagsNVX; -typedef enum VkBuildAccelerationStructureFlagBitsNVX { - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NVX = 0x00000001, - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NVX = 0x00000002, - VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NVX = 0x00000004, - VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NVX = 0x00000008, - VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NVX = 0x00000010, - VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_NVX = 0x7FFFFFFF -} VkBuildAccelerationStructureFlagBitsNVX; -typedef VkFlags VkBuildAccelerationStructureFlagsNVX; +typedef enum VkCopyAccelerationStructureModeKHR { + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0, + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1, + VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2, + VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3, + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR, + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR, + VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkCopyAccelerationStructureModeKHR; +typedef VkCopyAccelerationStructureModeKHR VkCopyAccelerationStructureModeNV; -typedef struct VkRaytracingPipelineCreateInfoNVX { - VkStructureType sType; - const void* pNext; - VkPipelineCreateFlags flags; - uint32_t stageCount; - const VkPipelineShaderStageCreateInfo* pStages; - const uint32_t* pGroupNumbers; - uint32_t maxRecursionDepth; - VkPipelineLayout layout; - VkPipeline basePipelineHandle; - int32_t basePipelineIndex; -} VkRaytracingPipelineCreateInfoNVX; -typedef struct VkGeometryTrianglesNVX { +typedef enum VkAccelerationStructureMemoryRequirementsTypeNV { + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0, + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1, + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2, + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_NV = 0x7FFFFFFF +} VkAccelerationStructureMemoryRequirementsTypeNV; + +typedef enum VkGeometryFlagBitsKHR { + VK_GEOMETRY_OPAQUE_BIT_KHR = 0x00000001, + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 0x00000002, + VK_GEOMETRY_OPAQUE_BIT_NV = VK_GEOMETRY_OPAQUE_BIT_KHR, + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR, + VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkGeometryFlagBitsKHR; +typedef VkFlags VkGeometryFlagsKHR; +typedef VkGeometryFlagsKHR VkGeometryFlagsNV; + +typedef VkGeometryFlagBitsKHR VkGeometryFlagBitsNV; + + +typedef enum VkGeometryInstanceFlagBitsKHR { + VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 0x00000001, + VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR = 0x00000002, + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 0x00000004, + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 0x00000008, + VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_EXT = 0x00000010, + VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT = 0x00000020, + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR, + VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR, + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR, + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR, + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR, + VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkGeometryInstanceFlagBitsKHR; +typedef VkFlags VkGeometryInstanceFlagsKHR; +typedef VkGeometryInstanceFlagsKHR VkGeometryInstanceFlagsNV; + +typedef VkGeometryInstanceFlagBitsKHR VkGeometryInstanceFlagBitsNV; + + +typedef enum VkBuildAccelerationStructureFlagBitsKHR { + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 0x00000001, + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 0x00000002, + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 0x00000004, + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 0x00000008, + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 0x00000010, + VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV = 0x00000020, + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT = 0x00000040, + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT = 0x00000080, + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT = 0x00000100, + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR, + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR, + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR, + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR, + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR, + VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkBuildAccelerationStructureFlagBitsKHR; +typedef VkFlags VkBuildAccelerationStructureFlagsKHR; +typedef VkBuildAccelerationStructureFlagsKHR VkBuildAccelerationStructureFlagsNV; + +typedef VkBuildAccelerationStructureFlagBitsKHR VkBuildAccelerationStructureFlagBitsNV; + +typedef struct VkRayTracingShaderGroupCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkRayTracingShaderGroupTypeKHR type; + uint32_t generalShader; + uint32_t closestHitShader; + uint32_t anyHitShader; + uint32_t intersectionShader; +} VkRayTracingShaderGroupCreateInfoNV; + +typedef struct VkRayTracingPipelineCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkPipelineCreateFlags flags; + uint32_t stageCount; + const VkPipelineShaderStageCreateInfo* pStages; + uint32_t groupCount; + const VkRayTracingShaderGroupCreateInfoNV* pGroups; + uint32_t maxRecursionDepth; + VkPipelineLayout layout; + VkPipeline basePipelineHandle; + int32_t basePipelineIndex; +} VkRayTracingPipelineCreateInfoNV; + +typedef struct VkGeometryTrianglesNV { VkStructureType sType; const void* pNext; VkBuffer vertexData; @@ -8029,136 +12080,166 @@ typedef struct VkGeometryTrianglesNVX { VkIndexType indexType; VkBuffer transformData; VkDeviceSize transformOffset; -} VkGeometryTrianglesNVX; +} VkGeometryTrianglesNV; -typedef struct VkGeometryAABBNVX { +typedef struct VkGeometryAABBNV { VkStructureType sType; const void* pNext; VkBuffer aabbData; uint32_t numAABBs; uint32_t stride; VkDeviceSize offset; -} VkGeometryAABBNVX; +} VkGeometryAABBNV; -typedef struct VkGeometryDataNVX { - VkGeometryTrianglesNVX triangles; - VkGeometryAABBNVX aabbs; -} VkGeometryDataNVX; +typedef struct VkGeometryDataNV { + VkGeometryTrianglesNV triangles; + VkGeometryAABBNV aabbs; +} VkGeometryDataNV; -typedef struct VkGeometryNVX { +typedef struct VkGeometryNV { VkStructureType sType; const void* pNext; - VkGeometryTypeNVX geometryType; - VkGeometryDataNVX geometry; - VkGeometryFlagsNVX flags; -} VkGeometryNVX; + VkGeometryTypeKHR geometryType; + VkGeometryDataNV geometry; + VkGeometryFlagsKHR flags; +} VkGeometryNV; -typedef struct VkAccelerationStructureCreateInfoNVX { - VkStructureType sType; - const void* pNext; - VkAccelerationStructureTypeNVX type; - VkBuildAccelerationStructureFlagsNVX flags; - VkDeviceSize compactedSize; - uint32_t instanceCount; - uint32_t geometryCount; - const VkGeometryNVX* pGeometries; -} VkAccelerationStructureCreateInfoNVX; +typedef struct VkAccelerationStructureInfoNV { + VkStructureType sType; + const void* pNext; + VkAccelerationStructureTypeNV type; + VkBuildAccelerationStructureFlagsNV flags; + uint32_t instanceCount; + uint32_t geometryCount; + const VkGeometryNV* pGeometries; +} VkAccelerationStructureInfoNV; -typedef struct VkBindAccelerationStructureMemoryInfoNVX { - VkStructureType sType; - const void* pNext; - VkAccelerationStructureNVX accelerationStructure; - VkDeviceMemory memory; - VkDeviceSize memoryOffset; - uint32_t deviceIndexCount; - const uint32_t* pDeviceIndices; -} VkBindAccelerationStructureMemoryInfoNVX; +typedef struct VkAccelerationStructureCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkDeviceSize compactedSize; + VkAccelerationStructureInfoNV info; +} VkAccelerationStructureCreateInfoNV; -typedef struct VkDescriptorAccelerationStructureInfoNVX { - VkStructureType sType; - const void* pNext; - uint32_t accelerationStructureCount; - const VkAccelerationStructureNVX* pAccelerationStructures; -} VkDescriptorAccelerationStructureInfoNVX; +typedef struct VkBindAccelerationStructureMemoryInfoNV { + VkStructureType sType; + const void* pNext; + VkAccelerationStructureNV accelerationStructure; + VkDeviceMemory memory; + VkDeviceSize memoryOffset; + uint32_t deviceIndexCount; + const uint32_t* pDeviceIndices; +} VkBindAccelerationStructureMemoryInfoNV; -typedef struct VkAccelerationStructureMemoryRequirementsInfoNVX { - VkStructureType sType; - const void* pNext; - VkAccelerationStructureNVX accelerationStructure; -} VkAccelerationStructureMemoryRequirementsInfoNVX; +typedef struct VkWriteDescriptorSetAccelerationStructureNV { + VkStructureType sType; + const void* pNext; + uint32_t accelerationStructureCount; + const VkAccelerationStructureNV* pAccelerationStructures; +} VkWriteDescriptorSetAccelerationStructureNV; -typedef struct VkPhysicalDeviceRaytracingPropertiesNVX { +typedef struct VkAccelerationStructureMemoryRequirementsInfoNV { + VkStructureType sType; + const void* pNext; + VkAccelerationStructureMemoryRequirementsTypeNV type; + VkAccelerationStructureNV accelerationStructure; +} VkAccelerationStructureMemoryRequirementsInfoNV; + +typedef struct VkPhysicalDeviceRayTracingPropertiesNV { VkStructureType sType; void* pNext; - uint32_t shaderHeaderSize; + uint32_t shaderGroupHandleSize; uint32_t maxRecursionDepth; - uint32_t maxGeometryCount; -} VkPhysicalDeviceRaytracingPropertiesNVX; + uint32_t maxShaderGroupStride; + uint32_t shaderGroupBaseAlignment; + uint64_t maxGeometryCount; + uint64_t maxInstanceCount; + uint64_t maxTriangleCount; + uint32_t maxDescriptorSetAccelerationStructures; +} VkPhysicalDeviceRayTracingPropertiesNV; +typedef struct VkTransformMatrixKHR { + float matrix[3][4]; +} VkTransformMatrixKHR; -typedef VkResult (VKAPI_PTR *PFN_vkCreateAccelerationStructureNVX)(VkDevice device, const VkAccelerationStructureCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureNVX* pAccelerationStructure); -typedef void (VKAPI_PTR *PFN_vkDestroyAccelerationStructureNVX)(VkDevice device, VkAccelerationStructureNVX accelerationStructure, const VkAllocationCallbacks* pAllocator); -typedef void (VKAPI_PTR *PFN_vkGetAccelerationStructureMemoryRequirementsNVX)(VkDevice device, const VkAccelerationStructureMemoryRequirementsInfoNVX* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements); -typedef void (VKAPI_PTR *PFN_vkGetAccelerationStructureScratchMemoryRequirementsNVX)(VkDevice device, const VkAccelerationStructureMemoryRequirementsInfoNVX* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements); -typedef VkResult (VKAPI_PTR *PFN_vkBindAccelerationStructureMemoryNVX)(VkDevice device, uint32_t bindInfoCount, const VkBindAccelerationStructureMemoryInfoNVX* pBindInfos); -typedef void (VKAPI_PTR *PFN_vkCmdBuildAccelerationStructureNVX)(VkCommandBuffer commandBuffer, VkAccelerationStructureTypeNVX type, uint32_t instanceCount, VkBuffer instanceData, VkDeviceSize instanceOffset, uint32_t geometryCount, const VkGeometryNVX* pGeometries, VkBuildAccelerationStructureFlagsNVX flags, VkBool32 update, VkAccelerationStructureNVX dst, VkAccelerationStructureNVX src, VkBuffer scratch, VkDeviceSize scratchOffset); -typedef void (VKAPI_PTR *PFN_vkCmdCopyAccelerationStructureNVX)(VkCommandBuffer commandBuffer, VkAccelerationStructureNVX dst, VkAccelerationStructureNVX src, VkCopyAccelerationStructureModeNVX mode); -typedef void (VKAPI_PTR *PFN_vkCmdTraceRaysNVX)(VkCommandBuffer commandBuffer, VkBuffer raygenShaderBindingTableBuffer, VkDeviceSize raygenShaderBindingOffset, VkBuffer missShaderBindingTableBuffer, VkDeviceSize missShaderBindingOffset, VkDeviceSize missShaderBindingStride, VkBuffer hitShaderBindingTableBuffer, VkDeviceSize hitShaderBindingOffset, VkDeviceSize hitShaderBindingStride, uint32_t width, uint32_t height); -typedef VkResult (VKAPI_PTR *PFN_vkCreateRaytracingPipelinesNVX)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkRaytracingPipelineCreateInfoNVX* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines); -typedef VkResult (VKAPI_PTR *PFN_vkGetRaytracingShaderHandlesNVX)(VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData); -typedef VkResult (VKAPI_PTR *PFN_vkGetAccelerationStructureHandleNVX)(VkDevice device, VkAccelerationStructureNVX accelerationStructure, size_t dataSize, void* pData); -typedef void (VKAPI_PTR *PFN_vkCmdWriteAccelerationStructurePropertiesNVX)(VkCommandBuffer commandBuffer, VkAccelerationStructureNVX accelerationStructure, VkQueryType queryType, VkQueryPool queryPool, uint32_t query); -typedef VkResult (VKAPI_PTR *PFN_vkCompileDeferredNVX)(VkDevice device, VkPipeline pipeline, uint32_t shader); +typedef VkTransformMatrixKHR VkTransformMatrixNV; + +typedef struct VkAabbPositionsKHR { + float minX; + float minY; + float minZ; + float maxX; + float maxY; + float maxZ; +} VkAabbPositionsKHR; + +typedef VkAabbPositionsKHR VkAabbPositionsNV; + +typedef struct VkAccelerationStructureInstanceKHR { + VkTransformMatrixKHR transform; + uint32_t instanceCustomIndex:24; + uint32_t mask:8; + uint32_t instanceShaderBindingTableRecordOffset:24; + VkGeometryInstanceFlagsKHR flags:8; + uint64_t accelerationStructureReference; +} VkAccelerationStructureInstanceKHR; + +typedef VkAccelerationStructureInstanceKHR VkAccelerationStructureInstanceNV; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateAccelerationStructureNV)(VkDevice device, const VkAccelerationStructureCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureNV* pAccelerationStructure); +typedef void (VKAPI_PTR *PFN_vkDestroyAccelerationStructureNV)(VkDevice device, VkAccelerationStructureNV accelerationStructure, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkGetAccelerationStructureMemoryRequirementsNV)(VkDevice device, const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements); +typedef VkResult (VKAPI_PTR *PFN_vkBindAccelerationStructureMemoryNV)(VkDevice device, uint32_t bindInfoCount, const VkBindAccelerationStructureMemoryInfoNV* pBindInfos); +typedef void (VKAPI_PTR *PFN_vkCmdBuildAccelerationStructureNV)(VkCommandBuffer commandBuffer, const VkAccelerationStructureInfoNV* pInfo, VkBuffer instanceData, VkDeviceSize instanceOffset, VkBool32 update, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkBuffer scratch, VkDeviceSize scratchOffset); +typedef void (VKAPI_PTR *PFN_vkCmdCopyAccelerationStructureNV)(VkCommandBuffer commandBuffer, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkCopyAccelerationStructureModeKHR mode); +typedef void (VKAPI_PTR *PFN_vkCmdTraceRaysNV)(VkCommandBuffer commandBuffer, VkBuffer raygenShaderBindingTableBuffer, VkDeviceSize raygenShaderBindingOffset, VkBuffer missShaderBindingTableBuffer, VkDeviceSize missShaderBindingOffset, VkDeviceSize missShaderBindingStride, VkBuffer hitShaderBindingTableBuffer, VkDeviceSize hitShaderBindingOffset, VkDeviceSize hitShaderBindingStride, VkBuffer callableShaderBindingTableBuffer, VkDeviceSize callableShaderBindingOffset, VkDeviceSize callableShaderBindingStride, uint32_t width, uint32_t height, uint32_t depth); +typedef VkResult (VKAPI_PTR *PFN_vkCreateRayTracingPipelinesNV)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkRayTracingPipelineCreateInfoNV* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines); +typedef VkResult (VKAPI_PTR *PFN_vkGetRayTracingShaderGroupHandlesKHR)(VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData); +typedef VkResult (VKAPI_PTR *PFN_vkGetRayTracingShaderGroupHandlesNV)(VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData); +typedef VkResult (VKAPI_PTR *PFN_vkGetAccelerationStructureHandleNV)(VkDevice device, VkAccelerationStructureNV accelerationStructure, size_t dataSize, void* pData); +typedef void (VKAPI_PTR *PFN_vkCmdWriteAccelerationStructuresPropertiesNV)(VkCommandBuffer commandBuffer, uint32_t accelerationStructureCount, const VkAccelerationStructureNV* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery); +typedef VkResult (VKAPI_PTR *PFN_vkCompileDeferredNV)(VkDevice device, VkPipeline pipeline, uint32_t shader); #ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkCreateAccelerationStructureNVX( +VKAPI_ATTR VkResult VKAPI_CALL vkCreateAccelerationStructureNV( VkDevice device, - const VkAccelerationStructureCreateInfoNVX* pCreateInfo, + const VkAccelerationStructureCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, - VkAccelerationStructureNVX* pAccelerationStructure); + VkAccelerationStructureNV* pAccelerationStructure); -VKAPI_ATTR void VKAPI_CALL vkDestroyAccelerationStructureNVX( +VKAPI_ATTR void VKAPI_CALL vkDestroyAccelerationStructureNV( VkDevice device, - VkAccelerationStructureNVX accelerationStructure, + VkAccelerationStructureNV accelerationStructure, const VkAllocationCallbacks* pAllocator); -VKAPI_ATTR void VKAPI_CALL vkGetAccelerationStructureMemoryRequirementsNVX( +VKAPI_ATTR void VKAPI_CALL vkGetAccelerationStructureMemoryRequirementsNV( VkDevice device, - const VkAccelerationStructureMemoryRequirementsInfoNVX* pInfo, + const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements); -VKAPI_ATTR void VKAPI_CALL vkGetAccelerationStructureScratchMemoryRequirementsNVX( - VkDevice device, - const VkAccelerationStructureMemoryRequirementsInfoNVX* pInfo, - VkMemoryRequirements2KHR* pMemoryRequirements); - -VKAPI_ATTR VkResult VKAPI_CALL vkBindAccelerationStructureMemoryNVX( +VKAPI_ATTR VkResult VKAPI_CALL vkBindAccelerationStructureMemoryNV( VkDevice device, uint32_t bindInfoCount, - const VkBindAccelerationStructureMemoryInfoNVX* pBindInfos); + const VkBindAccelerationStructureMemoryInfoNV* pBindInfos); -VKAPI_ATTR void VKAPI_CALL vkCmdBuildAccelerationStructureNVX( +VKAPI_ATTR void VKAPI_CALL vkCmdBuildAccelerationStructureNV( VkCommandBuffer commandBuffer, - VkAccelerationStructureTypeNVX type, - uint32_t instanceCount, + const VkAccelerationStructureInfoNV* pInfo, VkBuffer instanceData, VkDeviceSize instanceOffset, - uint32_t geometryCount, - const VkGeometryNVX* pGeometries, - VkBuildAccelerationStructureFlagsNVX flags, VkBool32 update, - VkAccelerationStructureNVX dst, - VkAccelerationStructureNVX src, + VkAccelerationStructureNV dst, + VkAccelerationStructureNV src, VkBuffer scratch, VkDeviceSize scratchOffset); -VKAPI_ATTR void VKAPI_CALL vkCmdCopyAccelerationStructureNVX( +VKAPI_ATTR void VKAPI_CALL vkCmdCopyAccelerationStructureNV( VkCommandBuffer commandBuffer, - VkAccelerationStructureNVX dst, - VkAccelerationStructureNVX src, - VkCopyAccelerationStructureModeNVX mode); + VkAccelerationStructureNV dst, + VkAccelerationStructureNV src, + VkCopyAccelerationStructureModeKHR mode); -VKAPI_ATTR void VKAPI_CALL vkCmdTraceRaysNVX( +VKAPI_ATTR void VKAPI_CALL vkCmdTraceRaysNV( VkCommandBuffer commandBuffer, VkBuffer raygenShaderBindingTableBuffer, VkDeviceSize raygenShaderBindingOffset, @@ -8168,18 +12249,22 @@ VKAPI_ATTR void VKAPI_CALL vkCmdTraceRaysNVX( VkBuffer hitShaderBindingTableBuffer, VkDeviceSize hitShaderBindingOffset, VkDeviceSize hitShaderBindingStride, + VkBuffer callableShaderBindingTableBuffer, + VkDeviceSize callableShaderBindingOffset, + VkDeviceSize callableShaderBindingStride, uint32_t width, - uint32_t height); + uint32_t height, + uint32_t depth); -VKAPI_ATTR VkResult VKAPI_CALL vkCreateRaytracingPipelinesNVX( +VKAPI_ATTR VkResult VKAPI_CALL vkCreateRayTracingPipelinesNV( VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, - const VkRaytracingPipelineCreateInfoNVX* pCreateInfos, + const VkRayTracingPipelineCreateInfoNV* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines); -VKAPI_ATTR VkResult VKAPI_CALL vkGetRaytracingShaderHandlesNVX( +VKAPI_ATTR VkResult VKAPI_CALL vkGetRayTracingShaderGroupHandlesKHR( VkDevice device, VkPipeline pipeline, uint32_t firstGroup, @@ -8187,29 +12272,38 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetRaytracingShaderHandlesNVX( size_t dataSize, void* pData); -VKAPI_ATTR VkResult VKAPI_CALL vkGetAccelerationStructureHandleNVX( +VKAPI_ATTR VkResult VKAPI_CALL vkGetRayTracingShaderGroupHandlesNV( VkDevice device, - VkAccelerationStructureNVX accelerationStructure, + VkPipeline pipeline, + uint32_t firstGroup, + uint32_t groupCount, size_t dataSize, void* pData); -VKAPI_ATTR void VKAPI_CALL vkCmdWriteAccelerationStructurePropertiesNVX( +VKAPI_ATTR VkResult VKAPI_CALL vkGetAccelerationStructureHandleNV( + VkDevice device, + VkAccelerationStructureNV accelerationStructure, + size_t dataSize, + void* pData); + +VKAPI_ATTR void VKAPI_CALL vkCmdWriteAccelerationStructuresPropertiesNV( VkCommandBuffer commandBuffer, - VkAccelerationStructureNVX accelerationStructure, + uint32_t accelerationStructureCount, + const VkAccelerationStructureNV* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, - uint32_t query); + uint32_t firstQuery); -VKAPI_ATTR VkResult VKAPI_CALL vkCompileDeferredNVX( +VKAPI_ATTR VkResult VKAPI_CALL vkCompileDeferredNV( VkDevice device, VkPipeline pipeline, uint32_t shader); #endif -#define VK_NV_representative_fragment_test 1 -#define VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION 1 -#define VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME "VK_NV_representative_fragment_test" +#define VK_NV_representative_fragment_test 1 +#define VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION 2 +#define VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME "VK_NV_representative_fragment_test" typedef struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV { VkStructureType sType; void* pNext; @@ -8224,34 +12318,41 @@ typedef struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV { +#define VK_EXT_filter_cubic 1 +#define VK_EXT_FILTER_CUBIC_SPEC_VERSION 3 +#define VK_EXT_FILTER_CUBIC_EXTENSION_NAME "VK_EXT_filter_cubic" +typedef struct VkPhysicalDeviceImageViewImageFormatInfoEXT { + VkStructureType sType; + void* pNext; + VkImageViewType imageViewType; +} VkPhysicalDeviceImageViewImageFormatInfoEXT; + +typedef struct VkFilterCubicImageViewImageFormatPropertiesEXT { + VkStructureType sType; + void* pNext; + VkBool32 filterCubic; + VkBool32 filterCubicMinmax; +} VkFilterCubicImageViewImageFormatPropertiesEXT; + + + +#define VK_QCOM_render_pass_shader_resolve 1 +#define VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION 4 +#define VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME "VK_QCOM_render_pass_shader_resolve" + + #define VK_EXT_global_priority 1 #define VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION 2 #define VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME "VK_EXT_global_priority" +typedef VkQueueGlobalPriorityKHR VkQueueGlobalPriorityEXT; - -typedef enum VkQueueGlobalPriorityEXT { - VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT = 128, - VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = 256, - VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT = 512, - VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = 1024, - VK_QUEUE_GLOBAL_PRIORITY_BEGIN_RANGE_EXT = VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT, - VK_QUEUE_GLOBAL_PRIORITY_END_RANGE_EXT = VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT, - VK_QUEUE_GLOBAL_PRIORITY_RANGE_SIZE_EXT = (VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT - VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT + 1), - VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_EXT = 0x7FFFFFFF -} VkQueueGlobalPriorityEXT; - -typedef struct VkDeviceQueueGlobalPriorityCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkQueueGlobalPriorityEXT globalPriority; -} VkDeviceQueueGlobalPriorityCreateInfoEXT; +typedef VkDeviceQueueGlobalPriorityCreateInfoKHR VkDeviceQueueGlobalPriorityCreateInfoEXT; #define VK_EXT_external_memory_host 1 #define VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION 1 #define VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME "VK_EXT_external_memory_host" - typedef struct VkImportMemoryHostPointerInfoEXT { VkStructureType sType; const void* pNext; @@ -8271,7 +12372,6 @@ typedef struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT { VkDeviceSize minImportedHostPointerAlignment; } VkPhysicalDeviceExternalMemoryHostPropertiesEXT; - typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryHostPointerPropertiesEXT)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties); #ifndef VK_NO_PROTOTYPES @@ -8282,10 +12382,10 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryHostPointerPropertiesEXT( VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties); #endif + #define VK_AMD_buffer_marker 1 #define VK_AMD_BUFFER_MARKER_SPEC_VERSION 1 #define VK_AMD_BUFFER_MARKER_EXTENSION_NAME "VK_AMD_buffer_marker" - typedef void (VKAPI_PTR *PFN_vkCmdWriteBufferMarkerAMD)(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkBuffer dstBuffer, VkDeviceSize dstOffset, uint32_t marker); #ifndef VK_NO_PROTOTYPES @@ -8297,10 +12397,61 @@ VKAPI_ATTR void VKAPI_CALL vkCmdWriteBufferMarkerAMD( uint32_t marker); #endif -#define VK_AMD_shader_core_properties 1 -#define VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION 1 -#define VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME "VK_AMD_shader_core_properties" +#define VK_AMD_pipeline_compiler_control 1 +#define VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION 1 +#define VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME "VK_AMD_pipeline_compiler_control" + +typedef enum VkPipelineCompilerControlFlagBitsAMD { + VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 0x7FFFFFFF +} VkPipelineCompilerControlFlagBitsAMD; +typedef VkFlags VkPipelineCompilerControlFlagsAMD; +typedef struct VkPipelineCompilerControlCreateInfoAMD { + VkStructureType sType; + const void* pNext; + VkPipelineCompilerControlFlagsAMD compilerControlFlags; +} VkPipelineCompilerControlCreateInfoAMD; + + + +#define VK_EXT_calibrated_timestamps 1 +#define VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION 2 +#define VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME "VK_EXT_calibrated_timestamps" + +typedef enum VkTimeDomainEXT { + VK_TIME_DOMAIN_DEVICE_EXT = 0, + VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1, + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2, + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3, + VK_TIME_DOMAIN_MAX_ENUM_EXT = 0x7FFFFFFF +} VkTimeDomainEXT; +typedef struct VkCalibratedTimestampInfoEXT { + VkStructureType sType; + const void* pNext; + VkTimeDomainEXT timeDomain; +} VkCalibratedTimestampInfoEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT)(VkPhysicalDevice physicalDevice, uint32_t* pTimeDomainCount, VkTimeDomainEXT* pTimeDomains); +typedef VkResult (VKAPI_PTR *PFN_vkGetCalibratedTimestampsEXT)(VkDevice device, uint32_t timestampCount, const VkCalibratedTimestampInfoEXT* pTimestampInfos, uint64_t* pTimestamps, uint64_t* pMaxDeviation); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( + VkPhysicalDevice physicalDevice, + uint32_t* pTimeDomainCount, + VkTimeDomainEXT* pTimeDomains); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetCalibratedTimestampsEXT( + VkDevice device, + uint32_t timestampCount, + const VkCalibratedTimestampInfoEXT* pTimestampInfos, + uint64_t* pTimestamps, + uint64_t* pMaxDeviation); +#endif + + +#define VK_AMD_shader_core_properties 1 +#define VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION 2 +#define VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME "VK_AMD_shader_core_properties" typedef struct VkPhysicalDeviceShaderCorePropertiesAMD { VkStructureType sType; void* pNext; @@ -8322,10 +12473,27 @@ typedef struct VkPhysicalDeviceShaderCorePropertiesAMD { +#define VK_AMD_memory_overallocation_behavior 1 +#define VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION 1 +#define VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME "VK_AMD_memory_overallocation_behavior" + +typedef enum VkMemoryOverallocationBehaviorAMD { + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0, + VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1, + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2, + VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 0x7FFFFFFF +} VkMemoryOverallocationBehaviorAMD; +typedef struct VkDeviceMemoryOverallocationCreateInfoAMD { + VkStructureType sType; + const void* pNext; + VkMemoryOverallocationBehaviorAMD overallocationBehavior; +} VkDeviceMemoryOverallocationCreateInfoAMD; + + + #define VK_EXT_vertex_attribute_divisor 1 #define VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION 3 #define VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME "VK_EXT_vertex_attribute_divisor" - typedef struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT { VkStructureType sType; void* pNext; @@ -8353,6 +12521,19 @@ typedef struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT { +#define VK_EXT_pipeline_creation_feedback 1 +#define VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION 1 +#define VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME "VK_EXT_pipeline_creation_feedback" +typedef VkPipelineCreationFeedbackFlagBits VkPipelineCreationFeedbackFlagBitsEXT; + +typedef VkPipelineCreationFeedbackFlags VkPipelineCreationFeedbackFlagsEXT; + +typedef VkPipelineCreationFeedbackCreateInfo VkPipelineCreationFeedbackCreateInfoEXT; + +typedef VkPipelineCreationFeedback VkPipelineCreationFeedbackEXT; + + + #define VK_NV_shader_subgroup_partitioned 1 #define VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION 1 #define VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME "VK_NV_shader_subgroup_partitioned" @@ -8361,7 +12542,6 @@ typedef struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT { #define VK_NV_compute_shader_derivatives 1 #define VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION 1 #define VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME "VK_NV_compute_shader_derivatives" - typedef struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV { VkStructureType sType; void* pNext; @@ -8374,7 +12554,6 @@ typedef struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV { #define VK_NV_mesh_shader 1 #define VK_NV_MESH_SHADER_SPEC_VERSION 1 #define VK_NV_MESH_SHADER_EXTENSION_NAME "VK_NV_mesh_shader" - typedef struct VkPhysicalDeviceMeshShaderFeaturesNV { VkStructureType sType; void* pNext; @@ -8405,7 +12584,6 @@ typedef struct VkDrawMeshTasksIndirectCommandNV { uint32_t firstTask; } VkDrawMeshTasksIndirectCommandNV; - typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksNV)(VkCommandBuffer commandBuffer, uint32_t taskCount, uint32_t firstTask); typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksIndirectNV)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride); typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksIndirectCountNV)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); @@ -8433,22 +12611,17 @@ VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksIndirectCountNV( uint32_t stride); #endif + #define VK_NV_fragment_shader_barycentric 1 #define VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION 1 #define VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME "VK_NV_fragment_shader_barycentric" - -typedef struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV { - VkStructureType sType; - void* pNext; - VkBool32 fragmentShaderBarycentric; -} VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV; +typedef VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV; #define VK_NV_shader_image_footprint 1 -#define VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION 1 +#define VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION 2 #define VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME "VK_NV_shader_image_footprint" - typedef struct VkPhysicalDeviceShaderImageFootprintFeaturesNV { VkStructureType sType; void* pNext; @@ -8458,9 +12631,8 @@ typedef struct VkPhysicalDeviceShaderImageFootprintFeaturesNV { #define VK_NV_scissor_exclusive 1 -#define VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION 1 +#define VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION 2 #define VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME "VK_NV_scissor_exclusive" - typedef struct VkPipelineViewportExclusiveScissorStateCreateInfoNV { VkStructureType sType; const void* pNext; @@ -8474,10 +12646,16 @@ typedef struct VkPhysicalDeviceExclusiveScissorFeaturesNV { VkBool32 exclusiveScissor; } VkPhysicalDeviceExclusiveScissorFeaturesNV; - +typedef void (VKAPI_PTR *PFN_vkCmdSetExclusiveScissorEnableNV)(VkCommandBuffer commandBuffer, uint32_t firstExclusiveScissor, uint32_t exclusiveScissorCount, const VkBool32* pExclusiveScissorEnables); typedef void (VKAPI_PTR *PFN_vkCmdSetExclusiveScissorNV)(VkCommandBuffer commandBuffer, uint32_t firstExclusiveScissor, uint32_t exclusiveScissorCount, const VkRect2D* pExclusiveScissors); #ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetExclusiveScissorEnableNV( + VkCommandBuffer commandBuffer, + uint32_t firstExclusiveScissor, + uint32_t exclusiveScissorCount, + const VkBool32* pExclusiveScissorEnables); + VKAPI_ATTR void VKAPI_CALL vkCmdSetExclusiveScissorNV( VkCommandBuffer commandBuffer, uint32_t firstExclusiveScissor, @@ -8485,10 +12663,10 @@ VKAPI_ATTR void VKAPI_CALL vkCmdSetExclusiveScissorNV( const VkRect2D* pExclusiveScissors); #endif + #define VK_NV_device_diagnostic_checkpoints 1 #define VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION 2 #define VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME "VK_NV_device_diagnostic_checkpoints" - typedef struct VkQueueFamilyCheckpointPropertiesNV { VkStructureType sType; void* pNext; @@ -8502,7 +12680,6 @@ typedef struct VkCheckpointDataNV { void* pCheckpointMarker; } VkCheckpointDataNV; - typedef void (VKAPI_PTR *PFN_vkCmdSetCheckpointNV)(VkCommandBuffer commandBuffer, const void* pCheckpointMarker); typedef void (VKAPI_PTR *PFN_vkGetQueueCheckpointDataNV)(VkQueue queue, uint32_t* pCheckpointDataCount, VkCheckpointDataNV* pCheckpointData); @@ -8517,6 +12694,4311 @@ VKAPI_ATTR void VKAPI_CALL vkGetQueueCheckpointDataNV( VkCheckpointDataNV* pCheckpointData); #endif + +#define VK_INTEL_shader_integer_functions2 1 +#define VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION 1 +#define VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME "VK_INTEL_shader_integer_functions2" +typedef struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL { + VkStructureType sType; + void* pNext; + VkBool32 shaderIntegerFunctions2; +} VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL; + + + +#define VK_INTEL_performance_query 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPerformanceConfigurationINTEL) +#define VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION 2 +#define VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME "VK_INTEL_performance_query" + +typedef enum VkPerformanceConfigurationTypeINTEL { + VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0, + VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 0x7FFFFFFF +} VkPerformanceConfigurationTypeINTEL; + +typedef enum VkQueryPoolSamplingModeINTEL { + VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0, + VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 0x7FFFFFFF +} VkQueryPoolSamplingModeINTEL; + +typedef enum VkPerformanceOverrideTypeINTEL { + VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0, + VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1, + VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL = 0x7FFFFFFF +} VkPerformanceOverrideTypeINTEL; + +typedef enum VkPerformanceParameterTypeINTEL { + VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0, + VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1, + VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL = 0x7FFFFFFF +} VkPerformanceParameterTypeINTEL; + +typedef enum VkPerformanceValueTypeINTEL { + VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0, + VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1, + VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2, + VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3, + VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4, + VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL = 0x7FFFFFFF +} VkPerformanceValueTypeINTEL; +typedef union VkPerformanceValueDataINTEL { + uint32_t value32; + uint64_t value64; + float valueFloat; + VkBool32 valueBool; + const char* valueString; +} VkPerformanceValueDataINTEL; + +typedef struct VkPerformanceValueINTEL { + VkPerformanceValueTypeINTEL type; + VkPerformanceValueDataINTEL data; +} VkPerformanceValueINTEL; + +typedef struct VkInitializePerformanceApiInfoINTEL { + VkStructureType sType; + const void* pNext; + void* pUserData; +} VkInitializePerformanceApiInfoINTEL; + +typedef struct VkQueryPoolPerformanceQueryCreateInfoINTEL { + VkStructureType sType; + const void* pNext; + VkQueryPoolSamplingModeINTEL performanceCountersSampling; +} VkQueryPoolPerformanceQueryCreateInfoINTEL; + +typedef VkQueryPoolPerformanceQueryCreateInfoINTEL VkQueryPoolCreateInfoINTEL; + +typedef struct VkPerformanceMarkerInfoINTEL { + VkStructureType sType; + const void* pNext; + uint64_t marker; +} VkPerformanceMarkerInfoINTEL; + +typedef struct VkPerformanceStreamMarkerInfoINTEL { + VkStructureType sType; + const void* pNext; + uint32_t marker; +} VkPerformanceStreamMarkerInfoINTEL; + +typedef struct VkPerformanceOverrideInfoINTEL { + VkStructureType sType; + const void* pNext; + VkPerformanceOverrideTypeINTEL type; + VkBool32 enable; + uint64_t parameter; +} VkPerformanceOverrideInfoINTEL; + +typedef struct VkPerformanceConfigurationAcquireInfoINTEL { + VkStructureType sType; + const void* pNext; + VkPerformanceConfigurationTypeINTEL type; +} VkPerformanceConfigurationAcquireInfoINTEL; + +typedef VkResult (VKAPI_PTR *PFN_vkInitializePerformanceApiINTEL)(VkDevice device, const VkInitializePerformanceApiInfoINTEL* pInitializeInfo); +typedef void (VKAPI_PTR *PFN_vkUninitializePerformanceApiINTEL)(VkDevice device); +typedef VkResult (VKAPI_PTR *PFN_vkCmdSetPerformanceMarkerINTEL)(VkCommandBuffer commandBuffer, const VkPerformanceMarkerInfoINTEL* pMarkerInfo); +typedef VkResult (VKAPI_PTR *PFN_vkCmdSetPerformanceStreamMarkerINTEL)(VkCommandBuffer commandBuffer, const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo); +typedef VkResult (VKAPI_PTR *PFN_vkCmdSetPerformanceOverrideINTEL)(VkCommandBuffer commandBuffer, const VkPerformanceOverrideInfoINTEL* pOverrideInfo); +typedef VkResult (VKAPI_PTR *PFN_vkAcquirePerformanceConfigurationINTEL)(VkDevice device, const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo, VkPerformanceConfigurationINTEL* pConfiguration); +typedef VkResult (VKAPI_PTR *PFN_vkReleasePerformanceConfigurationINTEL)(VkDevice device, VkPerformanceConfigurationINTEL configuration); +typedef VkResult (VKAPI_PTR *PFN_vkQueueSetPerformanceConfigurationINTEL)(VkQueue queue, VkPerformanceConfigurationINTEL configuration); +typedef VkResult (VKAPI_PTR *PFN_vkGetPerformanceParameterINTEL)(VkDevice device, VkPerformanceParameterTypeINTEL parameter, VkPerformanceValueINTEL* pValue); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkInitializePerformanceApiINTEL( + VkDevice device, + const VkInitializePerformanceApiInfoINTEL* pInitializeInfo); + +VKAPI_ATTR void VKAPI_CALL vkUninitializePerformanceApiINTEL( + VkDevice device); + +VKAPI_ATTR VkResult VKAPI_CALL vkCmdSetPerformanceMarkerINTEL( + VkCommandBuffer commandBuffer, + const VkPerformanceMarkerInfoINTEL* pMarkerInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkCmdSetPerformanceStreamMarkerINTEL( + VkCommandBuffer commandBuffer, + const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkCmdSetPerformanceOverrideINTEL( + VkCommandBuffer commandBuffer, + const VkPerformanceOverrideInfoINTEL* pOverrideInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkAcquirePerformanceConfigurationINTEL( + VkDevice device, + const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo, + VkPerformanceConfigurationINTEL* pConfiguration); + +VKAPI_ATTR VkResult VKAPI_CALL vkReleasePerformanceConfigurationINTEL( + VkDevice device, + VkPerformanceConfigurationINTEL configuration); + +VKAPI_ATTR VkResult VKAPI_CALL vkQueueSetPerformanceConfigurationINTEL( + VkQueue queue, + VkPerformanceConfigurationINTEL configuration); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetPerformanceParameterINTEL( + VkDevice device, + VkPerformanceParameterTypeINTEL parameter, + VkPerformanceValueINTEL* pValue); +#endif + + +#define VK_EXT_pci_bus_info 1 +#define VK_EXT_PCI_BUS_INFO_SPEC_VERSION 2 +#define VK_EXT_PCI_BUS_INFO_EXTENSION_NAME "VK_EXT_pci_bus_info" +typedef struct VkPhysicalDevicePCIBusInfoPropertiesEXT { + VkStructureType sType; + void* pNext; + uint32_t pciDomain; + uint32_t pciBus; + uint32_t pciDevice; + uint32_t pciFunction; +} VkPhysicalDevicePCIBusInfoPropertiesEXT; + + + +#define VK_AMD_display_native_hdr 1 +#define VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION 1 +#define VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME "VK_AMD_display_native_hdr" +typedef struct VkDisplayNativeHdrSurfaceCapabilitiesAMD { + VkStructureType sType; + void* pNext; + VkBool32 localDimmingSupport; +} VkDisplayNativeHdrSurfaceCapabilitiesAMD; + +typedef struct VkSwapchainDisplayNativeHdrCreateInfoAMD { + VkStructureType sType; + const void* pNext; + VkBool32 localDimmingEnable; +} VkSwapchainDisplayNativeHdrCreateInfoAMD; + +typedef void (VKAPI_PTR *PFN_vkSetLocalDimmingAMD)(VkDevice device, VkSwapchainKHR swapChain, VkBool32 localDimmingEnable); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkSetLocalDimmingAMD( + VkDevice device, + VkSwapchainKHR swapChain, + VkBool32 localDimmingEnable); +#endif + + +#define VK_EXT_fragment_density_map 1 +#define VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION 2 +#define VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME "VK_EXT_fragment_density_map" +typedef struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 fragmentDensityMap; + VkBool32 fragmentDensityMapDynamic; + VkBool32 fragmentDensityMapNonSubsampledImages; +} VkPhysicalDeviceFragmentDensityMapFeaturesEXT; + +typedef struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT { + VkStructureType sType; + void* pNext; + VkExtent2D minFragmentDensityTexelSize; + VkExtent2D maxFragmentDensityTexelSize; + VkBool32 fragmentDensityInvocations; +} VkPhysicalDeviceFragmentDensityMapPropertiesEXT; + +typedef struct VkRenderPassFragmentDensityMapCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkAttachmentReference fragmentDensityMapAttachment; +} VkRenderPassFragmentDensityMapCreateInfoEXT; + + + +#define VK_EXT_scalar_block_layout 1 +#define VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION 1 +#define VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME "VK_EXT_scalar_block_layout" +typedef VkPhysicalDeviceScalarBlockLayoutFeatures VkPhysicalDeviceScalarBlockLayoutFeaturesEXT; + + + +#define VK_GOOGLE_hlsl_functionality1 1 +#define VK_GOOGLE_HLSL_FUNCTIONALITY_1_SPEC_VERSION 1 +#define VK_GOOGLE_HLSL_FUNCTIONALITY_1_EXTENSION_NAME "VK_GOOGLE_hlsl_functionality1" +#define VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION VK_GOOGLE_HLSL_FUNCTIONALITY_1_SPEC_VERSION +#define VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME VK_GOOGLE_HLSL_FUNCTIONALITY_1_EXTENSION_NAME + + +#define VK_GOOGLE_decorate_string 1 +#define VK_GOOGLE_DECORATE_STRING_SPEC_VERSION 1 +#define VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME "VK_GOOGLE_decorate_string" + + +#define VK_EXT_subgroup_size_control 1 +#define VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION 2 +#define VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME "VK_EXT_subgroup_size_control" +typedef VkPhysicalDeviceSubgroupSizeControlFeatures VkPhysicalDeviceSubgroupSizeControlFeaturesEXT; + +typedef VkPhysicalDeviceSubgroupSizeControlProperties VkPhysicalDeviceSubgroupSizeControlPropertiesEXT; + +typedef VkPipelineShaderStageRequiredSubgroupSizeCreateInfo VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT; + + + +#define VK_AMD_shader_core_properties2 1 +#define VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION 1 +#define VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME "VK_AMD_shader_core_properties2" + +typedef enum VkShaderCorePropertiesFlagBitsAMD { + VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 0x7FFFFFFF +} VkShaderCorePropertiesFlagBitsAMD; +typedef VkFlags VkShaderCorePropertiesFlagsAMD; +typedef struct VkPhysicalDeviceShaderCoreProperties2AMD { + VkStructureType sType; + void* pNext; + VkShaderCorePropertiesFlagsAMD shaderCoreFeatures; + uint32_t activeComputeUnitCount; +} VkPhysicalDeviceShaderCoreProperties2AMD; + + + +#define VK_AMD_device_coherent_memory 1 +#define VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION 1 +#define VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME "VK_AMD_device_coherent_memory" +typedef struct VkPhysicalDeviceCoherentMemoryFeaturesAMD { + VkStructureType sType; + void* pNext; + VkBool32 deviceCoherentMemory; +} VkPhysicalDeviceCoherentMemoryFeaturesAMD; + + + +#define VK_EXT_shader_image_atomic_int64 1 +#define VK_EXT_SHADER_IMAGE_ATOMIC_INT64_SPEC_VERSION 1 +#define VK_EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME "VK_EXT_shader_image_atomic_int64" +typedef struct VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 shaderImageInt64Atomics; + VkBool32 sparseImageInt64Atomics; +} VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT; + + + +#define VK_EXT_memory_budget 1 +#define VK_EXT_MEMORY_BUDGET_SPEC_VERSION 1 +#define VK_EXT_MEMORY_BUDGET_EXTENSION_NAME "VK_EXT_memory_budget" +typedef struct VkPhysicalDeviceMemoryBudgetPropertiesEXT { + VkStructureType sType; + void* pNext; + VkDeviceSize heapBudget[VK_MAX_MEMORY_HEAPS]; + VkDeviceSize heapUsage[VK_MAX_MEMORY_HEAPS]; +} VkPhysicalDeviceMemoryBudgetPropertiesEXT; + + + +#define VK_EXT_memory_priority 1 +#define VK_EXT_MEMORY_PRIORITY_SPEC_VERSION 1 +#define VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME "VK_EXT_memory_priority" +typedef struct VkPhysicalDeviceMemoryPriorityFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 memoryPriority; +} VkPhysicalDeviceMemoryPriorityFeaturesEXT; + +typedef struct VkMemoryPriorityAllocateInfoEXT { + VkStructureType sType; + const void* pNext; + float priority; +} VkMemoryPriorityAllocateInfoEXT; + + + +#define VK_NV_dedicated_allocation_image_aliasing 1 +#define VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION 1 +#define VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME "VK_NV_dedicated_allocation_image_aliasing" +typedef struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 dedicatedAllocationImageAliasing; +} VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV; + + + +#define VK_EXT_buffer_device_address 1 +#define VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION 2 +#define VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME "VK_EXT_buffer_device_address" +typedef struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 bufferDeviceAddress; + VkBool32 bufferDeviceAddressCaptureReplay; + VkBool32 bufferDeviceAddressMultiDevice; +} VkPhysicalDeviceBufferDeviceAddressFeaturesEXT; + +typedef VkPhysicalDeviceBufferDeviceAddressFeaturesEXT VkPhysicalDeviceBufferAddressFeaturesEXT; + +typedef VkBufferDeviceAddressInfo VkBufferDeviceAddressInfoEXT; + +typedef struct VkBufferDeviceAddressCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkDeviceAddress deviceAddress; +} VkBufferDeviceAddressCreateInfoEXT; + +typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddressEXT)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddressEXT( + VkDevice device, + const VkBufferDeviceAddressInfo* pInfo); +#endif + + +#define VK_EXT_tooling_info 1 +#define VK_EXT_TOOLING_INFO_SPEC_VERSION 1 +#define VK_EXT_TOOLING_INFO_EXTENSION_NAME "VK_EXT_tooling_info" +typedef VkToolPurposeFlagBits VkToolPurposeFlagBitsEXT; + +typedef VkToolPurposeFlags VkToolPurposeFlagsEXT; + +typedef VkPhysicalDeviceToolProperties VkPhysicalDeviceToolPropertiesEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceToolPropertiesEXT)(VkPhysicalDevice physicalDevice, uint32_t* pToolCount, VkPhysicalDeviceToolProperties* pToolProperties); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceToolPropertiesEXT( + VkPhysicalDevice physicalDevice, + uint32_t* pToolCount, + VkPhysicalDeviceToolProperties* pToolProperties); +#endif + + +#define VK_EXT_separate_stencil_usage 1 +#define VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION 1 +#define VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME "VK_EXT_separate_stencil_usage" +typedef VkImageStencilUsageCreateInfo VkImageStencilUsageCreateInfoEXT; + + + +#define VK_EXT_validation_features 1 +#define VK_EXT_VALIDATION_FEATURES_SPEC_VERSION 5 +#define VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME "VK_EXT_validation_features" + +typedef enum VkValidationFeatureEnableEXT { + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0, + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1, + VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2, + VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3, + VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4, + VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkValidationFeatureEnableEXT; + +typedef enum VkValidationFeatureDisableEXT { + VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0, + VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1, + VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2, + VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3, + VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4, + VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5, + VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6, + VK_VALIDATION_FEATURE_DISABLE_SHADER_VALIDATION_CACHE_EXT = 7, + VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkValidationFeatureDisableEXT; +typedef struct VkValidationFeaturesEXT { + VkStructureType sType; + const void* pNext; + uint32_t enabledValidationFeatureCount; + const VkValidationFeatureEnableEXT* pEnabledValidationFeatures; + uint32_t disabledValidationFeatureCount; + const VkValidationFeatureDisableEXT* pDisabledValidationFeatures; +} VkValidationFeaturesEXT; + + + +#define VK_NV_cooperative_matrix 1 +#define VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION 1 +#define VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME "VK_NV_cooperative_matrix" + +typedef enum VkComponentTypeNV { + VK_COMPONENT_TYPE_FLOAT16_NV = 0, + VK_COMPONENT_TYPE_FLOAT32_NV = 1, + VK_COMPONENT_TYPE_FLOAT64_NV = 2, + VK_COMPONENT_TYPE_SINT8_NV = 3, + VK_COMPONENT_TYPE_SINT16_NV = 4, + VK_COMPONENT_TYPE_SINT32_NV = 5, + VK_COMPONENT_TYPE_SINT64_NV = 6, + VK_COMPONENT_TYPE_UINT8_NV = 7, + VK_COMPONENT_TYPE_UINT16_NV = 8, + VK_COMPONENT_TYPE_UINT32_NV = 9, + VK_COMPONENT_TYPE_UINT64_NV = 10, + VK_COMPONENT_TYPE_MAX_ENUM_NV = 0x7FFFFFFF +} VkComponentTypeNV; + +typedef enum VkScopeNV { + VK_SCOPE_DEVICE_NV = 1, + VK_SCOPE_WORKGROUP_NV = 2, + VK_SCOPE_SUBGROUP_NV = 3, + VK_SCOPE_QUEUE_FAMILY_NV = 5, + VK_SCOPE_MAX_ENUM_NV = 0x7FFFFFFF +} VkScopeNV; +typedef struct VkCooperativeMatrixPropertiesNV { + VkStructureType sType; + void* pNext; + uint32_t MSize; + uint32_t NSize; + uint32_t KSize; + VkComponentTypeNV AType; + VkComponentTypeNV BType; + VkComponentTypeNV CType; + VkComponentTypeNV DType; + VkScopeNV scope; +} VkCooperativeMatrixPropertiesNV; + +typedef struct VkPhysicalDeviceCooperativeMatrixFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 cooperativeMatrix; + VkBool32 cooperativeMatrixRobustBufferAccess; +} VkPhysicalDeviceCooperativeMatrixFeaturesNV; + +typedef struct VkPhysicalDeviceCooperativeMatrixPropertiesNV { + VkStructureType sType; + void* pNext; + VkShaderStageFlags cooperativeMatrixSupportedStages; +} VkPhysicalDeviceCooperativeMatrixPropertiesNV; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkCooperativeMatrixPropertiesNV* pProperties); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( + VkPhysicalDevice physicalDevice, + uint32_t* pPropertyCount, + VkCooperativeMatrixPropertiesNV* pProperties); +#endif + + +#define VK_NV_coverage_reduction_mode 1 +#define VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION 1 +#define VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME "VK_NV_coverage_reduction_mode" + +typedef enum VkCoverageReductionModeNV { + VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0, + VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1, + VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV = 0x7FFFFFFF +} VkCoverageReductionModeNV; +typedef VkFlags VkPipelineCoverageReductionStateCreateFlagsNV; +typedef struct VkPhysicalDeviceCoverageReductionModeFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 coverageReductionMode; +} VkPhysicalDeviceCoverageReductionModeFeaturesNV; + +typedef struct VkPipelineCoverageReductionStateCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkPipelineCoverageReductionStateCreateFlagsNV flags; + VkCoverageReductionModeNV coverageReductionMode; +} VkPipelineCoverageReductionStateCreateInfoNV; + +typedef struct VkFramebufferMixedSamplesCombinationNV { + VkStructureType sType; + void* pNext; + VkCoverageReductionModeNV coverageReductionMode; + VkSampleCountFlagBits rasterizationSamples; + VkSampleCountFlags depthStencilSamples; + VkSampleCountFlags colorSamples; +} VkFramebufferMixedSamplesCombinationNV; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV)(VkPhysicalDevice physicalDevice, uint32_t* pCombinationCount, VkFramebufferMixedSamplesCombinationNV* pCombinations); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( + VkPhysicalDevice physicalDevice, + uint32_t* pCombinationCount, + VkFramebufferMixedSamplesCombinationNV* pCombinations); +#endif + + +#define VK_EXT_fragment_shader_interlock 1 +#define VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION 1 +#define VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME "VK_EXT_fragment_shader_interlock" +typedef struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 fragmentShaderSampleInterlock; + VkBool32 fragmentShaderPixelInterlock; + VkBool32 fragmentShaderShadingRateInterlock; +} VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT; + + + +#define VK_EXT_ycbcr_image_arrays 1 +#define VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION 1 +#define VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME "VK_EXT_ycbcr_image_arrays" +typedef struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 ycbcrImageArrays; +} VkPhysicalDeviceYcbcrImageArraysFeaturesEXT; + + + +#define VK_EXT_provoking_vertex 1 +#define VK_EXT_PROVOKING_VERTEX_SPEC_VERSION 1 +#define VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME "VK_EXT_provoking_vertex" + +typedef enum VkProvokingVertexModeEXT { + VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = 0, + VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = 1, + VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkProvokingVertexModeEXT; +typedef struct VkPhysicalDeviceProvokingVertexFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 provokingVertexLast; + VkBool32 transformFeedbackPreservesProvokingVertex; +} VkPhysicalDeviceProvokingVertexFeaturesEXT; + +typedef struct VkPhysicalDeviceProvokingVertexPropertiesEXT { + VkStructureType sType; + void* pNext; + VkBool32 provokingVertexModePerPipeline; + VkBool32 transformFeedbackPreservesTriangleFanProvokingVertex; +} VkPhysicalDeviceProvokingVertexPropertiesEXT; + +typedef struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkProvokingVertexModeEXT provokingVertexMode; +} VkPipelineRasterizationProvokingVertexStateCreateInfoEXT; + + + +#define VK_EXT_headless_surface 1 +#define VK_EXT_HEADLESS_SURFACE_SPEC_VERSION 1 +#define VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME "VK_EXT_headless_surface" +typedef VkFlags VkHeadlessSurfaceCreateFlagsEXT; +typedef struct VkHeadlessSurfaceCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkHeadlessSurfaceCreateFlagsEXT flags; +} VkHeadlessSurfaceCreateInfoEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateHeadlessSurfaceEXT)(VkInstance instance, const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateHeadlessSurfaceEXT( + VkInstance instance, + const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSurfaceKHR* pSurface); +#endif + + +#define VK_EXT_line_rasterization 1 +#define VK_EXT_LINE_RASTERIZATION_SPEC_VERSION 1 +#define VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME "VK_EXT_line_rasterization" + +typedef enum VkLineRasterizationModeEXT { + VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0, + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1, + VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2, + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3, + VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkLineRasterizationModeEXT; +typedef struct VkPhysicalDeviceLineRasterizationFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 rectangularLines; + VkBool32 bresenhamLines; + VkBool32 smoothLines; + VkBool32 stippledRectangularLines; + VkBool32 stippledBresenhamLines; + VkBool32 stippledSmoothLines; +} VkPhysicalDeviceLineRasterizationFeaturesEXT; + +typedef struct VkPhysicalDeviceLineRasterizationPropertiesEXT { + VkStructureType sType; + void* pNext; + uint32_t lineSubPixelPrecisionBits; +} VkPhysicalDeviceLineRasterizationPropertiesEXT; + +typedef struct VkPipelineRasterizationLineStateCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkLineRasterizationModeEXT lineRasterizationMode; + VkBool32 stippledLineEnable; + uint32_t lineStippleFactor; + uint16_t lineStipplePattern; +} VkPipelineRasterizationLineStateCreateInfoEXT; + +typedef void (VKAPI_PTR *PFN_vkCmdSetLineStippleEXT)(VkCommandBuffer commandBuffer, uint32_t lineStippleFactor, uint16_t lineStipplePattern); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetLineStippleEXT( + VkCommandBuffer commandBuffer, + uint32_t lineStippleFactor, + uint16_t lineStipplePattern); +#endif + + +#define VK_EXT_shader_atomic_float 1 +#define VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION 1 +#define VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME "VK_EXT_shader_atomic_float" +typedef struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 shaderBufferFloat32Atomics; + VkBool32 shaderBufferFloat32AtomicAdd; + VkBool32 shaderBufferFloat64Atomics; + VkBool32 shaderBufferFloat64AtomicAdd; + VkBool32 shaderSharedFloat32Atomics; + VkBool32 shaderSharedFloat32AtomicAdd; + VkBool32 shaderSharedFloat64Atomics; + VkBool32 shaderSharedFloat64AtomicAdd; + VkBool32 shaderImageFloat32Atomics; + VkBool32 shaderImageFloat32AtomicAdd; + VkBool32 sparseImageFloat32Atomics; + VkBool32 sparseImageFloat32AtomicAdd; +} VkPhysicalDeviceShaderAtomicFloatFeaturesEXT; + + + +#define VK_EXT_host_query_reset 1 +#define VK_EXT_HOST_QUERY_RESET_SPEC_VERSION 1 +#define VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME "VK_EXT_host_query_reset" +typedef VkPhysicalDeviceHostQueryResetFeatures VkPhysicalDeviceHostQueryResetFeaturesEXT; + +typedef void (VKAPI_PTR *PFN_vkResetQueryPoolEXT)(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkResetQueryPoolEXT( + VkDevice device, + VkQueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount); +#endif + + +#define VK_EXT_index_type_uint8 1 +#define VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION 1 +#define VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME "VK_EXT_index_type_uint8" +typedef struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 indexTypeUint8; +} VkPhysicalDeviceIndexTypeUint8FeaturesEXT; + + + +#define VK_EXT_extended_dynamic_state 1 +#define VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION 1 +#define VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME "VK_EXT_extended_dynamic_state" +typedef struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 extendedDynamicState; +} VkPhysicalDeviceExtendedDynamicStateFeaturesEXT; + +typedef void (VKAPI_PTR *PFN_vkCmdSetCullModeEXT)(VkCommandBuffer commandBuffer, VkCullModeFlags cullMode); +typedef void (VKAPI_PTR *PFN_vkCmdSetFrontFaceEXT)(VkCommandBuffer commandBuffer, VkFrontFace frontFace); +typedef void (VKAPI_PTR *PFN_vkCmdSetPrimitiveTopologyEXT)(VkCommandBuffer commandBuffer, VkPrimitiveTopology primitiveTopology); +typedef void (VKAPI_PTR *PFN_vkCmdSetViewportWithCountEXT)(VkCommandBuffer commandBuffer, uint32_t viewportCount, const VkViewport* pViewports); +typedef void (VKAPI_PTR *PFN_vkCmdSetScissorWithCountEXT)(VkCommandBuffer commandBuffer, uint32_t scissorCount, const VkRect2D* pScissors); +typedef void (VKAPI_PTR *PFN_vkCmdBindVertexBuffers2EXT)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes, const VkDeviceSize* pStrides); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthTestEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthTestEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthWriteEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthCompareOpEXT)(VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBoundsTestEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthBoundsTestEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetStencilTestEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 stencilTestEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetStencilOpEXT)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, VkStencilOp failOp, VkStencilOp passOp, VkStencilOp depthFailOp, VkCompareOp compareOp); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetCullModeEXT( + VkCommandBuffer commandBuffer, + VkCullModeFlags cullMode); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetFrontFaceEXT( + VkCommandBuffer commandBuffer, + VkFrontFace frontFace); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetPrimitiveTopologyEXT( + VkCommandBuffer commandBuffer, + VkPrimitiveTopology primitiveTopology); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportWithCountEXT( + VkCommandBuffer commandBuffer, + uint32_t viewportCount, + const VkViewport* pViewports); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetScissorWithCountEXT( + VkCommandBuffer commandBuffer, + uint32_t scissorCount, + const VkRect2D* pScissors); + +VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers2EXT( + VkCommandBuffer commandBuffer, + uint32_t firstBinding, + uint32_t bindingCount, + const VkBuffer* pBuffers, + const VkDeviceSize* pOffsets, + const VkDeviceSize* pSizes, + const VkDeviceSize* pStrides); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthTestEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 depthTestEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthWriteEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 depthWriteEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthCompareOpEXT( + VkCommandBuffer commandBuffer, + VkCompareOp depthCompareOp); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBoundsTestEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 depthBoundsTestEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilTestEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 stencilTestEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilOpEXT( + VkCommandBuffer commandBuffer, + VkStencilFaceFlags faceMask, + VkStencilOp failOp, + VkStencilOp passOp, + VkStencilOp depthFailOp, + VkCompareOp compareOp); +#endif + + +#define VK_EXT_shader_atomic_float2 1 +#define VK_EXT_SHADER_ATOMIC_FLOAT_2_SPEC_VERSION 1 +#define VK_EXT_SHADER_ATOMIC_FLOAT_2_EXTENSION_NAME "VK_EXT_shader_atomic_float2" +typedef struct VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 shaderBufferFloat16Atomics; + VkBool32 shaderBufferFloat16AtomicAdd; + VkBool32 shaderBufferFloat16AtomicMinMax; + VkBool32 shaderBufferFloat32AtomicMinMax; + VkBool32 shaderBufferFloat64AtomicMinMax; + VkBool32 shaderSharedFloat16Atomics; + VkBool32 shaderSharedFloat16AtomicAdd; + VkBool32 shaderSharedFloat16AtomicMinMax; + VkBool32 shaderSharedFloat32AtomicMinMax; + VkBool32 shaderSharedFloat64AtomicMinMax; + VkBool32 shaderImageFloat32AtomicMinMax; + VkBool32 sparseImageFloat32AtomicMinMax; +} VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT; + + + +#define VK_EXT_surface_maintenance1 1 +#define VK_EXT_SURFACE_MAINTENANCE_1_SPEC_VERSION 1 +#define VK_EXT_SURFACE_MAINTENANCE_1_EXTENSION_NAME "VK_EXT_surface_maintenance1" + +typedef enum VkPresentScalingFlagBitsEXT { + VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT = 0x00000001, + VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT = 0x00000002, + VK_PRESENT_SCALING_STRETCH_BIT_EXT = 0x00000004, + VK_PRESENT_SCALING_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkPresentScalingFlagBitsEXT; +typedef VkFlags VkPresentScalingFlagsEXT; + +typedef enum VkPresentGravityFlagBitsEXT { + VK_PRESENT_GRAVITY_MIN_BIT_EXT = 0x00000001, + VK_PRESENT_GRAVITY_MAX_BIT_EXT = 0x00000002, + VK_PRESENT_GRAVITY_CENTERED_BIT_EXT = 0x00000004, + VK_PRESENT_GRAVITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkPresentGravityFlagBitsEXT; +typedef VkFlags VkPresentGravityFlagsEXT; +typedef struct VkSurfacePresentModeEXT { + VkStructureType sType; + void* pNext; + VkPresentModeKHR presentMode; +} VkSurfacePresentModeEXT; + +typedef struct VkSurfacePresentScalingCapabilitiesEXT { + VkStructureType sType; + void* pNext; + VkPresentScalingFlagsEXT supportedPresentScaling; + VkPresentGravityFlagsEXT supportedPresentGravityX; + VkPresentGravityFlagsEXT supportedPresentGravityY; + VkExtent2D minScaledImageExtent; + VkExtent2D maxScaledImageExtent; +} VkSurfacePresentScalingCapabilitiesEXT; + +typedef struct VkSurfacePresentModeCompatibilityEXT { + VkStructureType sType; + void* pNext; + uint32_t presentModeCount; + VkPresentModeKHR* pPresentModes; +} VkSurfacePresentModeCompatibilityEXT; + + + +#define VK_EXT_swapchain_maintenance1 1 +#define VK_EXT_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION 1 +#define VK_EXT_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME "VK_EXT_swapchain_maintenance1" +typedef struct VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 swapchainMaintenance1; +} VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT; + +typedef struct VkSwapchainPresentFenceInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t swapchainCount; + const VkFence* pFences; +} VkSwapchainPresentFenceInfoEXT; + +typedef struct VkSwapchainPresentModesCreateInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t presentModeCount; + const VkPresentModeKHR* pPresentModes; +} VkSwapchainPresentModesCreateInfoEXT; + +typedef struct VkSwapchainPresentModeInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t swapchainCount; + const VkPresentModeKHR* pPresentModes; +} VkSwapchainPresentModeInfoEXT; + +typedef struct VkSwapchainPresentScalingCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkPresentScalingFlagsEXT scalingBehavior; + VkPresentGravityFlagsEXT presentGravityX; + VkPresentGravityFlagsEXT presentGravityY; +} VkSwapchainPresentScalingCreateInfoEXT; + +typedef struct VkReleaseSwapchainImagesInfoEXT { + VkStructureType sType; + const void* pNext; + VkSwapchainKHR swapchain; + uint32_t imageIndexCount; + const uint32_t* pImageIndices; +} VkReleaseSwapchainImagesInfoEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkReleaseSwapchainImagesEXT)(VkDevice device, const VkReleaseSwapchainImagesInfoEXT* pReleaseInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkReleaseSwapchainImagesEXT( + VkDevice device, + const VkReleaseSwapchainImagesInfoEXT* pReleaseInfo); +#endif + + +#define VK_EXT_shader_demote_to_helper_invocation 1 +#define VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION 1 +#define VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME "VK_EXT_shader_demote_to_helper_invocation" +typedef VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT; + + + +#define VK_NV_device_generated_commands 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkIndirectCommandsLayoutNV) +#define VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION 3 +#define VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME "VK_NV_device_generated_commands" + +typedef enum VkIndirectCommandsTokenTypeNV { + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = 0, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = 1, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = 2, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = 3, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = 4, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = 5, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV = 1000328000, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 0x7FFFFFFF +} VkIndirectCommandsTokenTypeNV; + +typedef enum VkIndirectStateFlagBitsNV { + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 0x00000001, + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF +} VkIndirectStateFlagBitsNV; +typedef VkFlags VkIndirectStateFlagsNV; + +typedef enum VkIndirectCommandsLayoutUsageFlagBitsNV { + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 0x00000001, + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 0x00000002, + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 0x00000004, + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF +} VkIndirectCommandsLayoutUsageFlagBitsNV; +typedef VkFlags VkIndirectCommandsLayoutUsageFlagsNV; +typedef struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV { + VkStructureType sType; + void* pNext; + uint32_t maxGraphicsShaderGroupCount; + uint32_t maxIndirectSequenceCount; + uint32_t maxIndirectCommandsTokenCount; + uint32_t maxIndirectCommandsStreamCount; + uint32_t maxIndirectCommandsTokenOffset; + uint32_t maxIndirectCommandsStreamStride; + uint32_t minSequencesCountBufferOffsetAlignment; + uint32_t minSequencesIndexBufferOffsetAlignment; + uint32_t minIndirectCommandsBufferOffsetAlignment; +} VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV; + +typedef struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 deviceGeneratedCommands; +} VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV; + +typedef struct VkGraphicsShaderGroupCreateInfoNV { + VkStructureType sType; + const void* pNext; + uint32_t stageCount; + const VkPipelineShaderStageCreateInfo* pStages; + const VkPipelineVertexInputStateCreateInfo* pVertexInputState; + const VkPipelineTessellationStateCreateInfo* pTessellationState; +} VkGraphicsShaderGroupCreateInfoNV; + +typedef struct VkGraphicsPipelineShaderGroupsCreateInfoNV { + VkStructureType sType; + const void* pNext; + uint32_t groupCount; + const VkGraphicsShaderGroupCreateInfoNV* pGroups; + uint32_t pipelineCount; + const VkPipeline* pPipelines; +} VkGraphicsPipelineShaderGroupsCreateInfoNV; + +typedef struct VkBindShaderGroupIndirectCommandNV { + uint32_t groupIndex; +} VkBindShaderGroupIndirectCommandNV; + +typedef struct VkBindIndexBufferIndirectCommandNV { + VkDeviceAddress bufferAddress; + uint32_t size; + VkIndexType indexType; +} VkBindIndexBufferIndirectCommandNV; + +typedef struct VkBindVertexBufferIndirectCommandNV { + VkDeviceAddress bufferAddress; + uint32_t size; + uint32_t stride; +} VkBindVertexBufferIndirectCommandNV; + +typedef struct VkSetStateFlagsIndirectCommandNV { + uint32_t data; +} VkSetStateFlagsIndirectCommandNV; + +typedef struct VkIndirectCommandsStreamNV { + VkBuffer buffer; + VkDeviceSize offset; +} VkIndirectCommandsStreamNV; + +typedef struct VkIndirectCommandsLayoutTokenNV { + VkStructureType sType; + const void* pNext; + VkIndirectCommandsTokenTypeNV tokenType; + uint32_t stream; + uint32_t offset; + uint32_t vertexBindingUnit; + VkBool32 vertexDynamicStride; + VkPipelineLayout pushconstantPipelineLayout; + VkShaderStageFlags pushconstantShaderStageFlags; + uint32_t pushconstantOffset; + uint32_t pushconstantSize; + VkIndirectStateFlagsNV indirectStateFlags; + uint32_t indexTypeCount; + const VkIndexType* pIndexTypes; + const uint32_t* pIndexTypeValues; +} VkIndirectCommandsLayoutTokenNV; + +typedef struct VkIndirectCommandsLayoutCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkIndirectCommandsLayoutUsageFlagsNV flags; + VkPipelineBindPoint pipelineBindPoint; + uint32_t tokenCount; + const VkIndirectCommandsLayoutTokenNV* pTokens; + uint32_t streamCount; + const uint32_t* pStreamStrides; +} VkIndirectCommandsLayoutCreateInfoNV; + +typedef struct VkGeneratedCommandsInfoNV { + VkStructureType sType; + const void* pNext; + VkPipelineBindPoint pipelineBindPoint; + VkPipeline pipeline; + VkIndirectCommandsLayoutNV indirectCommandsLayout; + uint32_t streamCount; + const VkIndirectCommandsStreamNV* pStreams; + uint32_t sequencesCount; + VkBuffer preprocessBuffer; + VkDeviceSize preprocessOffset; + VkDeviceSize preprocessSize; + VkBuffer sequencesCountBuffer; + VkDeviceSize sequencesCountOffset; + VkBuffer sequencesIndexBuffer; + VkDeviceSize sequencesIndexOffset; +} VkGeneratedCommandsInfoNV; + +typedef struct VkGeneratedCommandsMemoryRequirementsInfoNV { + VkStructureType sType; + const void* pNext; + VkPipelineBindPoint pipelineBindPoint; + VkPipeline pipeline; + VkIndirectCommandsLayoutNV indirectCommandsLayout; + uint32_t maxSequencesCount; +} VkGeneratedCommandsMemoryRequirementsInfoNV; + +typedef void (VKAPI_PTR *PFN_vkGetGeneratedCommandsMemoryRequirementsNV)(VkDevice device, const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2* pMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkCmdPreprocessGeneratedCommandsNV)(VkCommandBuffer commandBuffer, const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo); +typedef void (VKAPI_PTR *PFN_vkCmdExecuteGeneratedCommandsNV)(VkCommandBuffer commandBuffer, VkBool32 isPreprocessed, const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo); +typedef void (VKAPI_PTR *PFN_vkCmdBindPipelineShaderGroupNV)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline, uint32_t groupIndex); +typedef VkResult (VKAPI_PTR *PFN_vkCreateIndirectCommandsLayoutNV)(VkDevice device, const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutNV* pIndirectCommandsLayout); +typedef void (VKAPI_PTR *PFN_vkDestroyIndirectCommandsLayoutNV)(VkDevice device, VkIndirectCommandsLayoutNV indirectCommandsLayout, const VkAllocationCallbacks* pAllocator); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetGeneratedCommandsMemoryRequirementsNV( + VkDevice device, + const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo, + VkMemoryRequirements2* pMemoryRequirements); + +VKAPI_ATTR void VKAPI_CALL vkCmdPreprocessGeneratedCommandsNV( + VkCommandBuffer commandBuffer, + const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdExecuteGeneratedCommandsNV( + VkCommandBuffer commandBuffer, + VkBool32 isPreprocessed, + const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdBindPipelineShaderGroupNV( + VkCommandBuffer commandBuffer, + VkPipelineBindPoint pipelineBindPoint, + VkPipeline pipeline, + uint32_t groupIndex); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateIndirectCommandsLayoutNV( + VkDevice device, + const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkIndirectCommandsLayoutNV* pIndirectCommandsLayout); + +VKAPI_ATTR void VKAPI_CALL vkDestroyIndirectCommandsLayoutNV( + VkDevice device, + VkIndirectCommandsLayoutNV indirectCommandsLayout, + const VkAllocationCallbacks* pAllocator); +#endif + + +#define VK_NV_inherited_viewport_scissor 1 +#define VK_NV_INHERITED_VIEWPORT_SCISSOR_SPEC_VERSION 1 +#define VK_NV_INHERITED_VIEWPORT_SCISSOR_EXTENSION_NAME "VK_NV_inherited_viewport_scissor" +typedef struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 inheritedViewportScissor2D; +} VkPhysicalDeviceInheritedViewportScissorFeaturesNV; + +typedef struct VkCommandBufferInheritanceViewportScissorInfoNV { + VkStructureType sType; + const void* pNext; + VkBool32 viewportScissor2D; + uint32_t viewportDepthCount; + const VkViewport* pViewportDepths; +} VkCommandBufferInheritanceViewportScissorInfoNV; + + + +#define VK_EXT_texel_buffer_alignment 1 +#define VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION 1 +#define VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME "VK_EXT_texel_buffer_alignment" +typedef struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 texelBufferAlignment; +} VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT; + +typedef VkPhysicalDeviceTexelBufferAlignmentProperties VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT; + + + +#define VK_QCOM_render_pass_transform 1 +#define VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION 3 +#define VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME "VK_QCOM_render_pass_transform" +typedef struct VkRenderPassTransformBeginInfoQCOM { + VkStructureType sType; + void* pNext; + VkSurfaceTransformFlagBitsKHR transform; +} VkRenderPassTransformBeginInfoQCOM; + +typedef struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM { + VkStructureType sType; + void* pNext; + VkSurfaceTransformFlagBitsKHR transform; + VkRect2D renderArea; +} VkCommandBufferInheritanceRenderPassTransformInfoQCOM; + + + +#define VK_EXT_device_memory_report 1 +#define VK_EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION 2 +#define VK_EXT_DEVICE_MEMORY_REPORT_EXTENSION_NAME "VK_EXT_device_memory_report" + +typedef enum VkDeviceMemoryReportEventTypeEXT { + VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT = 0, + VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT = 1, + VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT = 2, + VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT = 3, + VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT = 4, + VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkDeviceMemoryReportEventTypeEXT; +typedef VkFlags VkDeviceMemoryReportFlagsEXT; +typedef struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 deviceMemoryReport; +} VkPhysicalDeviceDeviceMemoryReportFeaturesEXT; + +typedef struct VkDeviceMemoryReportCallbackDataEXT { + VkStructureType sType; + void* pNext; + VkDeviceMemoryReportFlagsEXT flags; + VkDeviceMemoryReportEventTypeEXT type; + uint64_t memoryObjectId; + VkDeviceSize size; + VkObjectType objectType; + uint64_t objectHandle; + uint32_t heapIndex; +} VkDeviceMemoryReportCallbackDataEXT; + +typedef void (VKAPI_PTR *PFN_vkDeviceMemoryReportCallbackEXT)( + const VkDeviceMemoryReportCallbackDataEXT* pCallbackData, + void* pUserData); + +typedef struct VkDeviceDeviceMemoryReportCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkDeviceMemoryReportFlagsEXT flags; + PFN_vkDeviceMemoryReportCallbackEXT pfnUserCallback; + void* pUserData; +} VkDeviceDeviceMemoryReportCreateInfoEXT; + + + +#define VK_EXT_acquire_drm_display 1 +#define VK_EXT_ACQUIRE_DRM_DISPLAY_SPEC_VERSION 1 +#define VK_EXT_ACQUIRE_DRM_DISPLAY_EXTENSION_NAME "VK_EXT_acquire_drm_display" +typedef VkResult (VKAPI_PTR *PFN_vkAcquireDrmDisplayEXT)(VkPhysicalDevice physicalDevice, int32_t drmFd, VkDisplayKHR display); +typedef VkResult (VKAPI_PTR *PFN_vkGetDrmDisplayEXT)(VkPhysicalDevice physicalDevice, int32_t drmFd, uint32_t connectorId, VkDisplayKHR* display); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkAcquireDrmDisplayEXT( + VkPhysicalDevice physicalDevice, + int32_t drmFd, + VkDisplayKHR display); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetDrmDisplayEXT( + VkPhysicalDevice physicalDevice, + int32_t drmFd, + uint32_t connectorId, + VkDisplayKHR* display); +#endif + + +#define VK_EXT_robustness2 1 +#define VK_EXT_ROBUSTNESS_2_SPEC_VERSION 1 +#define VK_EXT_ROBUSTNESS_2_EXTENSION_NAME "VK_EXT_robustness2" +typedef struct VkPhysicalDeviceRobustness2FeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 robustBufferAccess2; + VkBool32 robustImageAccess2; + VkBool32 nullDescriptor; +} VkPhysicalDeviceRobustness2FeaturesEXT; + +typedef struct VkPhysicalDeviceRobustness2PropertiesEXT { + VkStructureType sType; + void* pNext; + VkDeviceSize robustStorageBufferAccessSizeAlignment; + VkDeviceSize robustUniformBufferAccessSizeAlignment; +} VkPhysicalDeviceRobustness2PropertiesEXT; + + + +#define VK_EXT_custom_border_color 1 +#define VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION 12 +#define VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME "VK_EXT_custom_border_color" +typedef struct VkSamplerCustomBorderColorCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkClearColorValue customBorderColor; + VkFormat format; +} VkSamplerCustomBorderColorCreateInfoEXT; + +typedef struct VkPhysicalDeviceCustomBorderColorPropertiesEXT { + VkStructureType sType; + void* pNext; + uint32_t maxCustomBorderColorSamplers; +} VkPhysicalDeviceCustomBorderColorPropertiesEXT; + +typedef struct VkPhysicalDeviceCustomBorderColorFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 customBorderColors; + VkBool32 customBorderColorWithoutFormat; +} VkPhysicalDeviceCustomBorderColorFeaturesEXT; + + + +#define VK_GOOGLE_user_type 1 +#define VK_GOOGLE_USER_TYPE_SPEC_VERSION 1 +#define VK_GOOGLE_USER_TYPE_EXTENSION_NAME "VK_GOOGLE_user_type" + + +#define VK_NV_present_barrier 1 +#define VK_NV_PRESENT_BARRIER_SPEC_VERSION 1 +#define VK_NV_PRESENT_BARRIER_EXTENSION_NAME "VK_NV_present_barrier" +typedef struct VkPhysicalDevicePresentBarrierFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 presentBarrier; +} VkPhysicalDevicePresentBarrierFeaturesNV; + +typedef struct VkSurfaceCapabilitiesPresentBarrierNV { + VkStructureType sType; + void* pNext; + VkBool32 presentBarrierSupported; +} VkSurfaceCapabilitiesPresentBarrierNV; + +typedef struct VkSwapchainPresentBarrierCreateInfoNV { + VkStructureType sType; + void* pNext; + VkBool32 presentBarrierEnable; +} VkSwapchainPresentBarrierCreateInfoNV; + + + +#define VK_EXT_private_data 1 +typedef VkPrivateDataSlot VkPrivateDataSlotEXT; + +#define VK_EXT_PRIVATE_DATA_SPEC_VERSION 1 +#define VK_EXT_PRIVATE_DATA_EXTENSION_NAME "VK_EXT_private_data" +typedef VkPrivateDataSlotCreateFlags VkPrivateDataSlotCreateFlagsEXT; + +typedef VkPhysicalDevicePrivateDataFeatures VkPhysicalDevicePrivateDataFeaturesEXT; + +typedef VkDevicePrivateDataCreateInfo VkDevicePrivateDataCreateInfoEXT; + +typedef VkPrivateDataSlotCreateInfo VkPrivateDataSlotCreateInfoEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkCreatePrivateDataSlotEXT)(VkDevice device, const VkPrivateDataSlotCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPrivateDataSlot* pPrivateDataSlot); +typedef void (VKAPI_PTR *PFN_vkDestroyPrivateDataSlotEXT)(VkDevice device, VkPrivateDataSlot privateDataSlot, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkSetPrivateDataEXT)(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, uint64_t data); +typedef void (VKAPI_PTR *PFN_vkGetPrivateDataEXT)(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, uint64_t* pData); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreatePrivateDataSlotEXT( + VkDevice device, + const VkPrivateDataSlotCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkPrivateDataSlot* pPrivateDataSlot); + +VKAPI_ATTR void VKAPI_CALL vkDestroyPrivateDataSlotEXT( + VkDevice device, + VkPrivateDataSlot privateDataSlot, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkSetPrivateDataEXT( + VkDevice device, + VkObjectType objectType, + uint64_t objectHandle, + VkPrivateDataSlot privateDataSlot, + uint64_t data); + +VKAPI_ATTR void VKAPI_CALL vkGetPrivateDataEXT( + VkDevice device, + VkObjectType objectType, + uint64_t objectHandle, + VkPrivateDataSlot privateDataSlot, + uint64_t* pData); +#endif + + +#define VK_EXT_pipeline_creation_cache_control 1 +#define VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION 3 +#define VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME "VK_EXT_pipeline_creation_cache_control" +typedef VkPhysicalDevicePipelineCreationCacheControlFeatures VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT; + + + +#define VK_NV_device_diagnostics_config 1 +#define VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION 2 +#define VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME "VK_NV_device_diagnostics_config" + +typedef enum VkDeviceDiagnosticsConfigFlagBitsNV { + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 0x00000001, + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 0x00000002, + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 0x00000004, + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_ERROR_REPORTING_BIT_NV = 0x00000008, + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF +} VkDeviceDiagnosticsConfigFlagBitsNV; +typedef VkFlags VkDeviceDiagnosticsConfigFlagsNV; +typedef struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 diagnosticsConfig; +} VkPhysicalDeviceDiagnosticsConfigFeaturesNV; + +typedef struct VkDeviceDiagnosticsConfigCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkDeviceDiagnosticsConfigFlagsNV flags; +} VkDeviceDiagnosticsConfigCreateInfoNV; + + + +#define VK_QCOM_render_pass_store_ops 1 +#define VK_QCOM_RENDER_PASS_STORE_OPS_SPEC_VERSION 2 +#define VK_QCOM_RENDER_PASS_STORE_OPS_EXTENSION_NAME "VK_QCOM_render_pass_store_ops" + + +#define VK_NV_low_latency 1 +#define VK_NV_LOW_LATENCY_SPEC_VERSION 1 +#define VK_NV_LOW_LATENCY_EXTENSION_NAME "VK_NV_low_latency" +typedef struct VkQueryLowLatencySupportNV { + VkStructureType sType; + const void* pNext; + void* pQueriedLowLatencyData; +} VkQueryLowLatencySupportNV; + + + +#define VK_EXT_descriptor_buffer 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkAccelerationStructureKHR) +#define VK_EXT_DESCRIPTOR_BUFFER_SPEC_VERSION 1 +#define VK_EXT_DESCRIPTOR_BUFFER_EXTENSION_NAME "VK_EXT_descriptor_buffer" +typedef struct VkPhysicalDeviceDescriptorBufferPropertiesEXT { + VkStructureType sType; + void* pNext; + VkBool32 combinedImageSamplerDescriptorSingleArray; + VkBool32 bufferlessPushDescriptors; + VkBool32 allowSamplerImageViewPostSubmitCreation; + VkDeviceSize descriptorBufferOffsetAlignment; + uint32_t maxDescriptorBufferBindings; + uint32_t maxResourceDescriptorBufferBindings; + uint32_t maxSamplerDescriptorBufferBindings; + uint32_t maxEmbeddedImmutableSamplerBindings; + uint32_t maxEmbeddedImmutableSamplers; + size_t bufferCaptureReplayDescriptorDataSize; + size_t imageCaptureReplayDescriptorDataSize; + size_t imageViewCaptureReplayDescriptorDataSize; + size_t samplerCaptureReplayDescriptorDataSize; + size_t accelerationStructureCaptureReplayDescriptorDataSize; + size_t samplerDescriptorSize; + size_t combinedImageSamplerDescriptorSize; + size_t sampledImageDescriptorSize; + size_t storageImageDescriptorSize; + size_t uniformTexelBufferDescriptorSize; + size_t robustUniformTexelBufferDescriptorSize; + size_t storageTexelBufferDescriptorSize; + size_t robustStorageTexelBufferDescriptorSize; + size_t uniformBufferDescriptorSize; + size_t robustUniformBufferDescriptorSize; + size_t storageBufferDescriptorSize; + size_t robustStorageBufferDescriptorSize; + size_t inputAttachmentDescriptorSize; + size_t accelerationStructureDescriptorSize; + VkDeviceSize maxSamplerDescriptorBufferRange; + VkDeviceSize maxResourceDescriptorBufferRange; + VkDeviceSize samplerDescriptorBufferAddressSpaceSize; + VkDeviceSize resourceDescriptorBufferAddressSpaceSize; + VkDeviceSize descriptorBufferAddressSpaceSize; +} VkPhysicalDeviceDescriptorBufferPropertiesEXT; + +typedef struct VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT { + VkStructureType sType; + void* pNext; + size_t combinedImageSamplerDensityMapDescriptorSize; +} VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT; + +typedef struct VkPhysicalDeviceDescriptorBufferFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 descriptorBuffer; + VkBool32 descriptorBufferCaptureReplay; + VkBool32 descriptorBufferImageLayoutIgnored; + VkBool32 descriptorBufferPushDescriptors; +} VkPhysicalDeviceDescriptorBufferFeaturesEXT; + +typedef struct VkDescriptorAddressInfoEXT { + VkStructureType sType; + void* pNext; + VkDeviceAddress address; + VkDeviceSize range; + VkFormat format; +} VkDescriptorAddressInfoEXT; + +typedef struct VkDescriptorBufferBindingInfoEXT { + VkStructureType sType; + void* pNext; + VkDeviceAddress address; + VkBufferUsageFlags usage; +} VkDescriptorBufferBindingInfoEXT; + +typedef struct VkDescriptorBufferBindingPushDescriptorBufferHandleEXT { + VkStructureType sType; + void* pNext; + VkBuffer buffer; +} VkDescriptorBufferBindingPushDescriptorBufferHandleEXT; + +typedef union VkDescriptorDataEXT { + const VkSampler* pSampler; + const VkDescriptorImageInfo* pCombinedImageSampler; + const VkDescriptorImageInfo* pInputAttachmentImage; + const VkDescriptorImageInfo* pSampledImage; + const VkDescriptorImageInfo* pStorageImage; + const VkDescriptorAddressInfoEXT* pUniformTexelBuffer; + const VkDescriptorAddressInfoEXT* pStorageTexelBuffer; + const VkDescriptorAddressInfoEXT* pUniformBuffer; + const VkDescriptorAddressInfoEXT* pStorageBuffer; + VkDeviceAddress accelerationStructure; +} VkDescriptorDataEXT; + +typedef struct VkDescriptorGetInfoEXT { + VkStructureType sType; + const void* pNext; + VkDescriptorType type; + VkDescriptorDataEXT data; +} VkDescriptorGetInfoEXT; + +typedef struct VkBufferCaptureDescriptorDataInfoEXT { + VkStructureType sType; + const void* pNext; + VkBuffer buffer; +} VkBufferCaptureDescriptorDataInfoEXT; + +typedef struct VkImageCaptureDescriptorDataInfoEXT { + VkStructureType sType; + const void* pNext; + VkImage image; +} VkImageCaptureDescriptorDataInfoEXT; + +typedef struct VkImageViewCaptureDescriptorDataInfoEXT { + VkStructureType sType; + const void* pNext; + VkImageView imageView; +} VkImageViewCaptureDescriptorDataInfoEXT; + +typedef struct VkSamplerCaptureDescriptorDataInfoEXT { + VkStructureType sType; + const void* pNext; + VkSampler sampler; +} VkSamplerCaptureDescriptorDataInfoEXT; + +typedef struct VkOpaqueCaptureDescriptorDataCreateInfoEXT { + VkStructureType sType; + const void* pNext; + const void* opaqueCaptureDescriptorData; +} VkOpaqueCaptureDescriptorDataCreateInfoEXT; + +typedef struct VkAccelerationStructureCaptureDescriptorDataInfoEXT { + VkStructureType sType; + const void* pNext; + VkAccelerationStructureKHR accelerationStructure; + VkAccelerationStructureNV accelerationStructureNV; +} VkAccelerationStructureCaptureDescriptorDataInfoEXT; + +typedef void (VKAPI_PTR *PFN_vkGetDescriptorSetLayoutSizeEXT)(VkDevice device, VkDescriptorSetLayout layout, VkDeviceSize* pLayoutSizeInBytes); +typedef void (VKAPI_PTR *PFN_vkGetDescriptorSetLayoutBindingOffsetEXT)(VkDevice device, VkDescriptorSetLayout layout, uint32_t binding, VkDeviceSize* pOffset); +typedef void (VKAPI_PTR *PFN_vkGetDescriptorEXT)(VkDevice device, const VkDescriptorGetInfoEXT* pDescriptorInfo, size_t dataSize, void* pDescriptor); +typedef void (VKAPI_PTR *PFN_vkCmdBindDescriptorBuffersEXT)(VkCommandBuffer commandBuffer, uint32_t bufferCount, const VkDescriptorBufferBindingInfoEXT* pBindingInfos); +typedef void (VKAPI_PTR *PFN_vkCmdSetDescriptorBufferOffsetsEXT)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t setCount, const uint32_t* pBufferIndices, const VkDeviceSize* pOffsets); +typedef void (VKAPI_PTR *PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set); +typedef VkResult (VKAPI_PTR *PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT)(VkDevice device, const VkBufferCaptureDescriptorDataInfoEXT* pInfo, void* pData); +typedef VkResult (VKAPI_PTR *PFN_vkGetImageOpaqueCaptureDescriptorDataEXT)(VkDevice device, const VkImageCaptureDescriptorDataInfoEXT* pInfo, void* pData); +typedef VkResult (VKAPI_PTR *PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT)(VkDevice device, const VkImageViewCaptureDescriptorDataInfoEXT* pInfo, void* pData); +typedef VkResult (VKAPI_PTR *PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT)(VkDevice device, const VkSamplerCaptureDescriptorDataInfoEXT* pInfo, void* pData); +typedef VkResult (VKAPI_PTR *PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT)(VkDevice device, const VkAccelerationStructureCaptureDescriptorDataInfoEXT* pInfo, void* pData); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutSizeEXT( + VkDevice device, + VkDescriptorSetLayout layout, + VkDeviceSize* pLayoutSizeInBytes); + +VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutBindingOffsetEXT( + VkDevice device, + VkDescriptorSetLayout layout, + uint32_t binding, + VkDeviceSize* pOffset); + +VKAPI_ATTR void VKAPI_CALL vkGetDescriptorEXT( + VkDevice device, + const VkDescriptorGetInfoEXT* pDescriptorInfo, + size_t dataSize, + void* pDescriptor); + +VKAPI_ATTR void VKAPI_CALL vkCmdBindDescriptorBuffersEXT( + VkCommandBuffer commandBuffer, + uint32_t bufferCount, + const VkDescriptorBufferBindingInfoEXT* pBindingInfos); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDescriptorBufferOffsetsEXT( + VkCommandBuffer commandBuffer, + VkPipelineBindPoint pipelineBindPoint, + VkPipelineLayout layout, + uint32_t firstSet, + uint32_t setCount, + const uint32_t* pBufferIndices, + const VkDeviceSize* pOffsets); + +VKAPI_ATTR void VKAPI_CALL vkCmdBindDescriptorBufferEmbeddedSamplersEXT( + VkCommandBuffer commandBuffer, + VkPipelineBindPoint pipelineBindPoint, + VkPipelineLayout layout, + uint32_t set); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetBufferOpaqueCaptureDescriptorDataEXT( + VkDevice device, + const VkBufferCaptureDescriptorDataInfoEXT* pInfo, + void* pData); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetImageOpaqueCaptureDescriptorDataEXT( + VkDevice device, + const VkImageCaptureDescriptorDataInfoEXT* pInfo, + void* pData); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetImageViewOpaqueCaptureDescriptorDataEXT( + VkDevice device, + const VkImageViewCaptureDescriptorDataInfoEXT* pInfo, + void* pData); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetSamplerOpaqueCaptureDescriptorDataEXT( + VkDevice device, + const VkSamplerCaptureDescriptorDataInfoEXT* pInfo, + void* pData); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT( + VkDevice device, + const VkAccelerationStructureCaptureDescriptorDataInfoEXT* pInfo, + void* pData); +#endif + + +#define VK_EXT_graphics_pipeline_library 1 +#define VK_EXT_GRAPHICS_PIPELINE_LIBRARY_SPEC_VERSION 1 +#define VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME "VK_EXT_graphics_pipeline_library" + +typedef enum VkGraphicsPipelineLibraryFlagBitsEXT { + VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT = 0x00000001, + VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT = 0x00000002, + VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT = 0x00000004, + VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT = 0x00000008, + VK_GRAPHICS_PIPELINE_LIBRARY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkGraphicsPipelineLibraryFlagBitsEXT; +typedef VkFlags VkGraphicsPipelineLibraryFlagsEXT; +typedef struct VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 graphicsPipelineLibrary; +} VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT; + +typedef struct VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT { + VkStructureType sType; + void* pNext; + VkBool32 graphicsPipelineLibraryFastLinking; + VkBool32 graphicsPipelineLibraryIndependentInterpolationDecoration; +} VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT; + +typedef struct VkGraphicsPipelineLibraryCreateInfoEXT { + VkStructureType sType; + void* pNext; + VkGraphicsPipelineLibraryFlagsEXT flags; +} VkGraphicsPipelineLibraryCreateInfoEXT; + + + +#define VK_AMD_shader_early_and_late_fragment_tests 1 +#define VK_AMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_SPEC_VERSION 1 +#define VK_AMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_EXTENSION_NAME "VK_AMD_shader_early_and_late_fragment_tests" +typedef struct VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD { + VkStructureType sType; + void* pNext; + VkBool32 shaderEarlyAndLateFragmentTests; +} VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD; + + + +#define VK_NV_fragment_shading_rate_enums 1 +#define VK_NV_FRAGMENT_SHADING_RATE_ENUMS_SPEC_VERSION 1 +#define VK_NV_FRAGMENT_SHADING_RATE_ENUMS_EXTENSION_NAME "VK_NV_fragment_shading_rate_enums" + +typedef enum VkFragmentShadingRateTypeNV { + VK_FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV = 0, + VK_FRAGMENT_SHADING_RATE_TYPE_ENUMS_NV = 1, + VK_FRAGMENT_SHADING_RATE_TYPE_MAX_ENUM_NV = 0x7FFFFFFF +} VkFragmentShadingRateTypeNV; + +typedef enum VkFragmentShadingRateNV { + VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV = 0, + VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV = 1, + VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV = 4, + VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV = 5, + VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV = 6, + VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV = 9, + VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV = 10, + VK_FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV = 11, + VK_FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV = 12, + VK_FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV = 13, + VK_FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV = 14, + VK_FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV = 15, + VK_FRAGMENT_SHADING_RATE_MAX_ENUM_NV = 0x7FFFFFFF +} VkFragmentShadingRateNV; +typedef struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 fragmentShadingRateEnums; + VkBool32 supersampleFragmentShadingRates; + VkBool32 noInvocationFragmentShadingRates; +} VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV; + +typedef struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV { + VkStructureType sType; + void* pNext; + VkSampleCountFlagBits maxFragmentShadingRateInvocationCount; +} VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV; + +typedef struct VkPipelineFragmentShadingRateEnumStateCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkFragmentShadingRateTypeNV shadingRateType; + VkFragmentShadingRateNV shadingRate; + VkFragmentShadingRateCombinerOpKHR combinerOps[2]; +} VkPipelineFragmentShadingRateEnumStateCreateInfoNV; + +typedef void (VKAPI_PTR *PFN_vkCmdSetFragmentShadingRateEnumNV)(VkCommandBuffer commandBuffer, VkFragmentShadingRateNV shadingRate, const VkFragmentShadingRateCombinerOpKHR combinerOps[2]); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetFragmentShadingRateEnumNV( + VkCommandBuffer commandBuffer, + VkFragmentShadingRateNV shadingRate, + const VkFragmentShadingRateCombinerOpKHR combinerOps[2]); +#endif + + +#define VK_NV_ray_tracing_motion_blur 1 +#define VK_NV_RAY_TRACING_MOTION_BLUR_SPEC_VERSION 1 +#define VK_NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME "VK_NV_ray_tracing_motion_blur" + +typedef enum VkAccelerationStructureMotionInstanceTypeNV { + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV = 0, + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV = 1, + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV = 2, + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MAX_ENUM_NV = 0x7FFFFFFF +} VkAccelerationStructureMotionInstanceTypeNV; +typedef VkFlags VkAccelerationStructureMotionInfoFlagsNV; +typedef VkFlags VkAccelerationStructureMotionInstanceFlagsNV; +typedef union VkDeviceOrHostAddressConstKHR { + VkDeviceAddress deviceAddress; + const void* hostAddress; +} VkDeviceOrHostAddressConstKHR; + +typedef struct VkAccelerationStructureGeometryMotionTrianglesDataNV { + VkStructureType sType; + const void* pNext; + VkDeviceOrHostAddressConstKHR vertexData; +} VkAccelerationStructureGeometryMotionTrianglesDataNV; + +typedef struct VkAccelerationStructureMotionInfoNV { + VkStructureType sType; + const void* pNext; + uint32_t maxInstances; + VkAccelerationStructureMotionInfoFlagsNV flags; +} VkAccelerationStructureMotionInfoNV; + +typedef struct VkAccelerationStructureMatrixMotionInstanceNV { + VkTransformMatrixKHR transformT0; + VkTransformMatrixKHR transformT1; + uint32_t instanceCustomIndex:24; + uint32_t mask:8; + uint32_t instanceShaderBindingTableRecordOffset:24; + VkGeometryInstanceFlagsKHR flags:8; + uint64_t accelerationStructureReference; +} VkAccelerationStructureMatrixMotionInstanceNV; + +typedef struct VkSRTDataNV { + float sx; + float a; + float b; + float pvx; + float sy; + float c; + float pvy; + float sz; + float pvz; + float qx; + float qy; + float qz; + float qw; + float tx; + float ty; + float tz; +} VkSRTDataNV; + +typedef struct VkAccelerationStructureSRTMotionInstanceNV { + VkSRTDataNV transformT0; + VkSRTDataNV transformT1; + uint32_t instanceCustomIndex:24; + uint32_t mask:8; + uint32_t instanceShaderBindingTableRecordOffset:24; + VkGeometryInstanceFlagsKHR flags:8; + uint64_t accelerationStructureReference; +} VkAccelerationStructureSRTMotionInstanceNV; + +typedef union VkAccelerationStructureMotionInstanceDataNV { + VkAccelerationStructureInstanceKHR staticInstance; + VkAccelerationStructureMatrixMotionInstanceNV matrixMotionInstance; + VkAccelerationStructureSRTMotionInstanceNV srtMotionInstance; +} VkAccelerationStructureMotionInstanceDataNV; + +typedef struct VkAccelerationStructureMotionInstanceNV { + VkAccelerationStructureMotionInstanceTypeNV type; + VkAccelerationStructureMotionInstanceFlagsNV flags; + VkAccelerationStructureMotionInstanceDataNV data; +} VkAccelerationStructureMotionInstanceNV; + +typedef struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 rayTracingMotionBlur; + VkBool32 rayTracingMotionBlurPipelineTraceRaysIndirect; +} VkPhysicalDeviceRayTracingMotionBlurFeaturesNV; + + + +#define VK_EXT_ycbcr_2plane_444_formats 1 +#define VK_EXT_YCBCR_2PLANE_444_FORMATS_SPEC_VERSION 1 +#define VK_EXT_YCBCR_2PLANE_444_FORMATS_EXTENSION_NAME "VK_EXT_ycbcr_2plane_444_formats" +typedef struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 ycbcr2plane444Formats; +} VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT; + + + +#define VK_EXT_fragment_density_map2 1 +#define VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION 1 +#define VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME "VK_EXT_fragment_density_map2" +typedef struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 fragmentDensityMapDeferred; +} VkPhysicalDeviceFragmentDensityMap2FeaturesEXT; + +typedef struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT { + VkStructureType sType; + void* pNext; + VkBool32 subsampledLoads; + VkBool32 subsampledCoarseReconstructionEarlyAccess; + uint32_t maxSubsampledArrayLayers; + uint32_t maxDescriptorSetSubsampledSamplers; +} VkPhysicalDeviceFragmentDensityMap2PropertiesEXT; + + + +#define VK_QCOM_rotated_copy_commands 1 +#define VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION 1 +#define VK_QCOM_ROTATED_COPY_COMMANDS_EXTENSION_NAME "VK_QCOM_rotated_copy_commands" +typedef struct VkCopyCommandTransformInfoQCOM { + VkStructureType sType; + const void* pNext; + VkSurfaceTransformFlagBitsKHR transform; +} VkCopyCommandTransformInfoQCOM; + + + +#define VK_EXT_image_robustness 1 +#define VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION 1 +#define VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME "VK_EXT_image_robustness" +typedef VkPhysicalDeviceImageRobustnessFeatures VkPhysicalDeviceImageRobustnessFeaturesEXT; + + + +#define VK_EXT_image_compression_control 1 +#define VK_EXT_IMAGE_COMPRESSION_CONTROL_SPEC_VERSION 1 +#define VK_EXT_IMAGE_COMPRESSION_CONTROL_EXTENSION_NAME "VK_EXT_image_compression_control" + +typedef enum VkImageCompressionFlagBitsEXT { + VK_IMAGE_COMPRESSION_DEFAULT_EXT = 0, + VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT = 0x00000001, + VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT = 0x00000002, + VK_IMAGE_COMPRESSION_DISABLED_EXT = 0x00000004, + VK_IMAGE_COMPRESSION_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkImageCompressionFlagBitsEXT; +typedef VkFlags VkImageCompressionFlagsEXT; + +typedef enum VkImageCompressionFixedRateFlagBitsEXT { + VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT = 0, + VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT = 0x00000001, + VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT = 0x00000002, + VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT = 0x00000004, + VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT = 0x00000008, + VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT = 0x00000010, + VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT = 0x00000020, + VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT = 0x00000040, + VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT = 0x00000080, + VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT = 0x00000100, + VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT = 0x00000200, + VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT = 0x00000400, + VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT = 0x00000800, + VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT = 0x00001000, + VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT = 0x00002000, + VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT = 0x00004000, + VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT = 0x00008000, + VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT = 0x00010000, + VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT = 0x00020000, + VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT = 0x00040000, + VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT = 0x00080000, + VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT = 0x00100000, + VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT = 0x00200000, + VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT = 0x00400000, + VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT = 0x00800000, + VK_IMAGE_COMPRESSION_FIXED_RATE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkImageCompressionFixedRateFlagBitsEXT; +typedef VkFlags VkImageCompressionFixedRateFlagsEXT; +typedef struct VkPhysicalDeviceImageCompressionControlFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 imageCompressionControl; +} VkPhysicalDeviceImageCompressionControlFeaturesEXT; + +typedef struct VkImageCompressionControlEXT { + VkStructureType sType; + const void* pNext; + VkImageCompressionFlagsEXT flags; + uint32_t compressionControlPlaneCount; + VkImageCompressionFixedRateFlagsEXT* pFixedRateFlags; +} VkImageCompressionControlEXT; + +typedef struct VkSubresourceLayout2EXT { + VkStructureType sType; + void* pNext; + VkSubresourceLayout subresourceLayout; +} VkSubresourceLayout2EXT; + +typedef struct VkImageSubresource2EXT { + VkStructureType sType; + void* pNext; + VkImageSubresource imageSubresource; +} VkImageSubresource2EXT; + +typedef struct VkImageCompressionPropertiesEXT { + VkStructureType sType; + void* pNext; + VkImageCompressionFlagsEXT imageCompressionFlags; + VkImageCompressionFixedRateFlagsEXT imageCompressionFixedRateFlags; +} VkImageCompressionPropertiesEXT; + +typedef void (VKAPI_PTR *PFN_vkGetImageSubresourceLayout2EXT)(VkDevice device, VkImage image, const VkImageSubresource2EXT* pSubresource, VkSubresourceLayout2EXT* pLayout); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetImageSubresourceLayout2EXT( + VkDevice device, + VkImage image, + const VkImageSubresource2EXT* pSubresource, + VkSubresourceLayout2EXT* pLayout); +#endif + + +#define VK_EXT_attachment_feedback_loop_layout 1 +#define VK_EXT_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_SPEC_VERSION 2 +#define VK_EXT_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_EXTENSION_NAME "VK_EXT_attachment_feedback_loop_layout" +typedef struct VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 attachmentFeedbackLoopLayout; +} VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT; + + + +#define VK_EXT_4444_formats 1 +#define VK_EXT_4444_FORMATS_SPEC_VERSION 1 +#define VK_EXT_4444_FORMATS_EXTENSION_NAME "VK_EXT_4444_formats" +typedef struct VkPhysicalDevice4444FormatsFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 formatA4R4G4B4; + VkBool32 formatA4B4G4R4; +} VkPhysicalDevice4444FormatsFeaturesEXT; + + + +#define VK_EXT_device_fault 1 +#define VK_EXT_DEVICE_FAULT_SPEC_VERSION 1 +#define VK_EXT_DEVICE_FAULT_EXTENSION_NAME "VK_EXT_device_fault" + +typedef enum VkDeviceFaultAddressTypeEXT { + VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT = 0, + VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT = 1, + VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT = 2, + VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT = 3, + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT = 4, + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT = 5, + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT = 6, + VK_DEVICE_FAULT_ADDRESS_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkDeviceFaultAddressTypeEXT; + +typedef enum VkDeviceFaultVendorBinaryHeaderVersionEXT { + VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT = 1, + VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_MAX_ENUM_EXT = 0x7FFFFFFF +} VkDeviceFaultVendorBinaryHeaderVersionEXT; +typedef struct VkPhysicalDeviceFaultFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 deviceFault; + VkBool32 deviceFaultVendorBinary; +} VkPhysicalDeviceFaultFeaturesEXT; + +typedef struct VkDeviceFaultCountsEXT { + VkStructureType sType; + void* pNext; + uint32_t addressInfoCount; + uint32_t vendorInfoCount; + VkDeviceSize vendorBinarySize; +} VkDeviceFaultCountsEXT; + +typedef struct VkDeviceFaultAddressInfoEXT { + VkDeviceFaultAddressTypeEXT addressType; + VkDeviceAddress reportedAddress; + VkDeviceSize addressPrecision; +} VkDeviceFaultAddressInfoEXT; + +typedef struct VkDeviceFaultVendorInfoEXT { + char description[VK_MAX_DESCRIPTION_SIZE]; + uint64_t vendorFaultCode; + uint64_t vendorFaultData; +} VkDeviceFaultVendorInfoEXT; + +typedef struct VkDeviceFaultInfoEXT { + VkStructureType sType; + void* pNext; + char description[VK_MAX_DESCRIPTION_SIZE]; + VkDeviceFaultAddressInfoEXT* pAddressInfos; + VkDeviceFaultVendorInfoEXT* pVendorInfos; + void* pVendorBinaryData; +} VkDeviceFaultInfoEXT; + +typedef struct VkDeviceFaultVendorBinaryHeaderVersionOneEXT { + uint32_t headerSize; + VkDeviceFaultVendorBinaryHeaderVersionEXT headerVersion; + uint32_t vendorID; + uint32_t deviceID; + uint32_t driverVersion; + uint8_t pipelineCacheUUID[VK_UUID_SIZE]; + uint32_t applicationNameOffset; + uint32_t applicationVersion; + uint32_t engineNameOffset; +} VkDeviceFaultVendorBinaryHeaderVersionOneEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceFaultInfoEXT)(VkDevice device, VkDeviceFaultCountsEXT* pFaultCounts, VkDeviceFaultInfoEXT* pFaultInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceFaultInfoEXT( + VkDevice device, + VkDeviceFaultCountsEXT* pFaultCounts, + VkDeviceFaultInfoEXT* pFaultInfo); +#endif + + +#define VK_ARM_rasterization_order_attachment_access 1 +#define VK_ARM_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_SPEC_VERSION 1 +#define VK_ARM_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_EXTENSION_NAME "VK_ARM_rasterization_order_attachment_access" +typedef struct VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 rasterizationOrderColorAttachmentAccess; + VkBool32 rasterizationOrderDepthAttachmentAccess; + VkBool32 rasterizationOrderStencilAttachmentAccess; +} VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT; + +typedef VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM; + + + +#define VK_EXT_rgba10x6_formats 1 +#define VK_EXT_RGBA10X6_FORMATS_SPEC_VERSION 1 +#define VK_EXT_RGBA10X6_FORMATS_EXTENSION_NAME "VK_EXT_rgba10x6_formats" +typedef struct VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 formatRgba10x6WithoutYCbCrSampler; +} VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT; + + + +#define VK_VALVE_mutable_descriptor_type 1 +#define VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION 1 +#define VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME "VK_VALVE_mutable_descriptor_type" +typedef struct VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 mutableDescriptorType; +} VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT; + +typedef VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE; + +typedef struct VkMutableDescriptorTypeListEXT { + uint32_t descriptorTypeCount; + const VkDescriptorType* pDescriptorTypes; +} VkMutableDescriptorTypeListEXT; + +typedef VkMutableDescriptorTypeListEXT VkMutableDescriptorTypeListVALVE; + +typedef struct VkMutableDescriptorTypeCreateInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t mutableDescriptorTypeListCount; + const VkMutableDescriptorTypeListEXT* pMutableDescriptorTypeLists; +} VkMutableDescriptorTypeCreateInfoEXT; + +typedef VkMutableDescriptorTypeCreateInfoEXT VkMutableDescriptorTypeCreateInfoVALVE; + + + +#define VK_EXT_vertex_input_dynamic_state 1 +#define VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_SPEC_VERSION 2 +#define VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME "VK_EXT_vertex_input_dynamic_state" +typedef struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 vertexInputDynamicState; +} VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT; + +typedef struct VkVertexInputBindingDescription2EXT { + VkStructureType sType; + void* pNext; + uint32_t binding; + uint32_t stride; + VkVertexInputRate inputRate; + uint32_t divisor; +} VkVertexInputBindingDescription2EXT; + +typedef struct VkVertexInputAttributeDescription2EXT { + VkStructureType sType; + void* pNext; + uint32_t location; + uint32_t binding; + VkFormat format; + uint32_t offset; +} VkVertexInputAttributeDescription2EXT; + +typedef void (VKAPI_PTR *PFN_vkCmdSetVertexInputEXT)(VkCommandBuffer commandBuffer, uint32_t vertexBindingDescriptionCount, const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions, uint32_t vertexAttributeDescriptionCount, const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetVertexInputEXT( + VkCommandBuffer commandBuffer, + uint32_t vertexBindingDescriptionCount, + const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions, + uint32_t vertexAttributeDescriptionCount, + const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions); +#endif + + +#define VK_EXT_physical_device_drm 1 +#define VK_EXT_PHYSICAL_DEVICE_DRM_SPEC_VERSION 1 +#define VK_EXT_PHYSICAL_DEVICE_DRM_EXTENSION_NAME "VK_EXT_physical_device_drm" +typedef struct VkPhysicalDeviceDrmPropertiesEXT { + VkStructureType sType; + void* pNext; + VkBool32 hasPrimary; + VkBool32 hasRender; + int64_t primaryMajor; + int64_t primaryMinor; + int64_t renderMajor; + int64_t renderMinor; +} VkPhysicalDeviceDrmPropertiesEXT; + + + +#define VK_EXT_device_address_binding_report 1 +#define VK_EXT_DEVICE_ADDRESS_BINDING_REPORT_SPEC_VERSION 1 +#define VK_EXT_DEVICE_ADDRESS_BINDING_REPORT_EXTENSION_NAME "VK_EXT_device_address_binding_report" + +typedef enum VkDeviceAddressBindingTypeEXT { + VK_DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT = 0, + VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT = 1, + VK_DEVICE_ADDRESS_BINDING_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkDeviceAddressBindingTypeEXT; + +typedef enum VkDeviceAddressBindingFlagBitsEXT { + VK_DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT = 0x00000001, + VK_DEVICE_ADDRESS_BINDING_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkDeviceAddressBindingFlagBitsEXT; +typedef VkFlags VkDeviceAddressBindingFlagsEXT; +typedef struct VkPhysicalDeviceAddressBindingReportFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 reportAddressBinding; +} VkPhysicalDeviceAddressBindingReportFeaturesEXT; + +typedef struct VkDeviceAddressBindingCallbackDataEXT { + VkStructureType sType; + void* pNext; + VkDeviceAddressBindingFlagsEXT flags; + VkDeviceAddress baseAddress; + VkDeviceSize size; + VkDeviceAddressBindingTypeEXT bindingType; +} VkDeviceAddressBindingCallbackDataEXT; + + + +#define VK_EXT_depth_clip_control 1 +#define VK_EXT_DEPTH_CLIP_CONTROL_SPEC_VERSION 1 +#define VK_EXT_DEPTH_CLIP_CONTROL_EXTENSION_NAME "VK_EXT_depth_clip_control" +typedef struct VkPhysicalDeviceDepthClipControlFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 depthClipControl; +} VkPhysicalDeviceDepthClipControlFeaturesEXT; + +typedef struct VkPipelineViewportDepthClipControlCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkBool32 negativeOneToOne; +} VkPipelineViewportDepthClipControlCreateInfoEXT; + + + +#define VK_EXT_primitive_topology_list_restart 1 +#define VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_SPEC_VERSION 1 +#define VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_EXTENSION_NAME "VK_EXT_primitive_topology_list_restart" +typedef struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 primitiveTopologyListRestart; + VkBool32 primitiveTopologyPatchListRestart; +} VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT; + + + +#define VK_HUAWEI_subpass_shading 1 +#define VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION 2 +#define VK_HUAWEI_SUBPASS_SHADING_EXTENSION_NAME "VK_HUAWEI_subpass_shading" +typedef struct VkSubpassShadingPipelineCreateInfoHUAWEI { + VkStructureType sType; + void* pNext; + VkRenderPass renderPass; + uint32_t subpass; +} VkSubpassShadingPipelineCreateInfoHUAWEI; + +typedef struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI { + VkStructureType sType; + void* pNext; + VkBool32 subpassShading; +} VkPhysicalDeviceSubpassShadingFeaturesHUAWEI; + +typedef struct VkPhysicalDeviceSubpassShadingPropertiesHUAWEI { + VkStructureType sType; + void* pNext; + uint32_t maxSubpassShadingWorkgroupSizeAspectRatio; +} VkPhysicalDeviceSubpassShadingPropertiesHUAWEI; + +typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI)(VkDevice device, VkRenderPass renderpass, VkExtent2D* pMaxWorkgroupSize); +typedef void (VKAPI_PTR *PFN_vkCmdSubpassShadingHUAWEI)(VkCommandBuffer commandBuffer); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI( + VkDevice device, + VkRenderPass renderpass, + VkExtent2D* pMaxWorkgroupSize); + +VKAPI_ATTR void VKAPI_CALL vkCmdSubpassShadingHUAWEI( + VkCommandBuffer commandBuffer); +#endif + + +#define VK_HUAWEI_invocation_mask 1 +#define VK_HUAWEI_INVOCATION_MASK_SPEC_VERSION 1 +#define VK_HUAWEI_INVOCATION_MASK_EXTENSION_NAME "VK_HUAWEI_invocation_mask" +typedef struct VkPhysicalDeviceInvocationMaskFeaturesHUAWEI { + VkStructureType sType; + void* pNext; + VkBool32 invocationMask; +} VkPhysicalDeviceInvocationMaskFeaturesHUAWEI; + +typedef void (VKAPI_PTR *PFN_vkCmdBindInvocationMaskHUAWEI)(VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBindInvocationMaskHUAWEI( + VkCommandBuffer commandBuffer, + VkImageView imageView, + VkImageLayout imageLayout); +#endif + + +#define VK_NV_external_memory_rdma 1 +typedef void* VkRemoteAddressNV; +#define VK_NV_EXTERNAL_MEMORY_RDMA_SPEC_VERSION 1 +#define VK_NV_EXTERNAL_MEMORY_RDMA_EXTENSION_NAME "VK_NV_external_memory_rdma" +typedef struct VkMemoryGetRemoteAddressInfoNV { + VkStructureType sType; + const void* pNext; + VkDeviceMemory memory; + VkExternalMemoryHandleTypeFlagBits handleType; +} VkMemoryGetRemoteAddressInfoNV; + +typedef struct VkPhysicalDeviceExternalMemoryRDMAFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 externalMemoryRDMA; +} VkPhysicalDeviceExternalMemoryRDMAFeaturesNV; + +typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryRemoteAddressNV)(VkDevice device, const VkMemoryGetRemoteAddressInfoNV* pMemoryGetRemoteAddressInfo, VkRemoteAddressNV* pAddress); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryRemoteAddressNV( + VkDevice device, + const VkMemoryGetRemoteAddressInfoNV* pMemoryGetRemoteAddressInfo, + VkRemoteAddressNV* pAddress); +#endif + + +#define VK_EXT_pipeline_properties 1 +#define VK_EXT_PIPELINE_PROPERTIES_SPEC_VERSION 1 +#define VK_EXT_PIPELINE_PROPERTIES_EXTENSION_NAME "VK_EXT_pipeline_properties" +typedef VkPipelineInfoKHR VkPipelineInfoEXT; + +typedef struct VkPipelinePropertiesIdentifierEXT { + VkStructureType sType; + void* pNext; + uint8_t pipelineIdentifier[VK_UUID_SIZE]; +} VkPipelinePropertiesIdentifierEXT; + +typedef struct VkPhysicalDevicePipelinePropertiesFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 pipelinePropertiesIdentifier; +} VkPhysicalDevicePipelinePropertiesFeaturesEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPipelinePropertiesEXT)(VkDevice device, const VkPipelineInfoEXT* pPipelineInfo, VkBaseOutStructure* pPipelineProperties); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelinePropertiesEXT( + VkDevice device, + const VkPipelineInfoEXT* pPipelineInfo, + VkBaseOutStructure* pPipelineProperties); +#endif + + +#define VK_EXT_multisampled_render_to_single_sampled 1 +#define VK_EXT_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_SPEC_VERSION 1 +#define VK_EXT_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_EXTENSION_NAME "VK_EXT_multisampled_render_to_single_sampled" +typedef struct VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 multisampledRenderToSingleSampled; +} VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT; + +typedef struct VkSubpassResolvePerformanceQueryEXT { + VkStructureType sType; + void* pNext; + VkBool32 optimal; +} VkSubpassResolvePerformanceQueryEXT; + +typedef struct VkMultisampledRenderToSingleSampledInfoEXT { + VkStructureType sType; + const void* pNext; + VkBool32 multisampledRenderToSingleSampledEnable; + VkSampleCountFlagBits rasterizationSamples; +} VkMultisampledRenderToSingleSampledInfoEXT; + + + +#define VK_EXT_extended_dynamic_state2 1 +#define VK_EXT_EXTENDED_DYNAMIC_STATE_2_SPEC_VERSION 1 +#define VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME "VK_EXT_extended_dynamic_state2" +typedef struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 extendedDynamicState2; + VkBool32 extendedDynamicState2LogicOp; + VkBool32 extendedDynamicState2PatchControlPoints; +} VkPhysicalDeviceExtendedDynamicState2FeaturesEXT; + +typedef void (VKAPI_PTR *PFN_vkCmdSetPatchControlPointsEXT)(VkCommandBuffer commandBuffer, uint32_t patchControlPoints); +typedef void (VKAPI_PTR *PFN_vkCmdSetRasterizerDiscardEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 rasterizerDiscardEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBiasEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetLogicOpEXT)(VkCommandBuffer commandBuffer, VkLogicOp logicOp); +typedef void (VKAPI_PTR *PFN_vkCmdSetPrimitiveRestartEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 primitiveRestartEnable); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetPatchControlPointsEXT( + VkCommandBuffer commandBuffer, + uint32_t patchControlPoints); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetRasterizerDiscardEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 rasterizerDiscardEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBiasEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 depthBiasEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetLogicOpEXT( + VkCommandBuffer commandBuffer, + VkLogicOp logicOp); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetPrimitiveRestartEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 primitiveRestartEnable); +#endif + + +#define VK_EXT_color_write_enable 1 +#define VK_EXT_COLOR_WRITE_ENABLE_SPEC_VERSION 1 +#define VK_EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME "VK_EXT_color_write_enable" +typedef struct VkPhysicalDeviceColorWriteEnableFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 colorWriteEnable; +} VkPhysicalDeviceColorWriteEnableFeaturesEXT; + +typedef struct VkPipelineColorWriteCreateInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t attachmentCount; + const VkBool32* pColorWriteEnables; +} VkPipelineColorWriteCreateInfoEXT; + +typedef void (VKAPI_PTR *PFN_vkCmdSetColorWriteEnableEXT)(VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkBool32* pColorWriteEnables); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetColorWriteEnableEXT( + VkCommandBuffer commandBuffer, + uint32_t attachmentCount, + const VkBool32* pColorWriteEnables); +#endif + + +#define VK_EXT_primitives_generated_query 1 +#define VK_EXT_PRIMITIVES_GENERATED_QUERY_SPEC_VERSION 1 +#define VK_EXT_PRIMITIVES_GENERATED_QUERY_EXTENSION_NAME "VK_EXT_primitives_generated_query" +typedef struct VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 primitivesGeneratedQuery; + VkBool32 primitivesGeneratedQueryWithRasterizerDiscard; + VkBool32 primitivesGeneratedQueryWithNonZeroStreams; +} VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT; + + + +#define VK_EXT_global_priority_query 1 +#define VK_EXT_GLOBAL_PRIORITY_QUERY_SPEC_VERSION 1 +#define VK_EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME "VK_EXT_global_priority_query" +#define VK_MAX_GLOBAL_PRIORITY_SIZE_EXT VK_MAX_GLOBAL_PRIORITY_SIZE_KHR +typedef VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT; + +typedef VkQueueFamilyGlobalPriorityPropertiesKHR VkQueueFamilyGlobalPriorityPropertiesEXT; + + + +#define VK_EXT_image_view_min_lod 1 +#define VK_EXT_IMAGE_VIEW_MIN_LOD_SPEC_VERSION 1 +#define VK_EXT_IMAGE_VIEW_MIN_LOD_EXTENSION_NAME "VK_EXT_image_view_min_lod" +typedef struct VkPhysicalDeviceImageViewMinLodFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 minLod; +} VkPhysicalDeviceImageViewMinLodFeaturesEXT; + +typedef struct VkImageViewMinLodCreateInfoEXT { + VkStructureType sType; + const void* pNext; + float minLod; +} VkImageViewMinLodCreateInfoEXT; + + + +#define VK_EXT_multi_draw 1 +#define VK_EXT_MULTI_DRAW_SPEC_VERSION 1 +#define VK_EXT_MULTI_DRAW_EXTENSION_NAME "VK_EXT_multi_draw" +typedef struct VkPhysicalDeviceMultiDrawFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 multiDraw; +} VkPhysicalDeviceMultiDrawFeaturesEXT; + +typedef struct VkPhysicalDeviceMultiDrawPropertiesEXT { + VkStructureType sType; + void* pNext; + uint32_t maxMultiDrawCount; +} VkPhysicalDeviceMultiDrawPropertiesEXT; + +typedef struct VkMultiDrawInfoEXT { + uint32_t firstVertex; + uint32_t vertexCount; +} VkMultiDrawInfoEXT; + +typedef struct VkMultiDrawIndexedInfoEXT { + uint32_t firstIndex; + uint32_t indexCount; + int32_t vertexOffset; +} VkMultiDrawIndexedInfoEXT; + +typedef void (VKAPI_PTR *PFN_vkCmdDrawMultiEXT)(VkCommandBuffer commandBuffer, uint32_t drawCount, const VkMultiDrawInfoEXT* pVertexInfo, uint32_t instanceCount, uint32_t firstInstance, uint32_t stride); +typedef void (VKAPI_PTR *PFN_vkCmdDrawMultiIndexedEXT)(VkCommandBuffer commandBuffer, uint32_t drawCount, const VkMultiDrawIndexedInfoEXT* pIndexInfo, uint32_t instanceCount, uint32_t firstInstance, uint32_t stride, const int32_t* pVertexOffset); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDrawMultiEXT( + VkCommandBuffer commandBuffer, + uint32_t drawCount, + const VkMultiDrawInfoEXT* pVertexInfo, + uint32_t instanceCount, + uint32_t firstInstance, + uint32_t stride); + +VKAPI_ATTR void VKAPI_CALL vkCmdDrawMultiIndexedEXT( + VkCommandBuffer commandBuffer, + uint32_t drawCount, + const VkMultiDrawIndexedInfoEXT* pIndexInfo, + uint32_t instanceCount, + uint32_t firstInstance, + uint32_t stride, + const int32_t* pVertexOffset); +#endif + + +#define VK_EXT_image_2d_view_of_3d 1 +#define VK_EXT_IMAGE_2D_VIEW_OF_3D_SPEC_VERSION 1 +#define VK_EXT_IMAGE_2D_VIEW_OF_3D_EXTENSION_NAME "VK_EXT_image_2d_view_of_3d" +typedef struct VkPhysicalDeviceImage2DViewOf3DFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 image2DViewOf3D; + VkBool32 sampler2DViewOf3D; +} VkPhysicalDeviceImage2DViewOf3DFeaturesEXT; + + + +#define VK_EXT_opacity_micromap 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkMicromapEXT) +#define VK_EXT_OPACITY_MICROMAP_SPEC_VERSION 2 +#define VK_EXT_OPACITY_MICROMAP_EXTENSION_NAME "VK_EXT_opacity_micromap" + +typedef enum VkMicromapTypeEXT { + VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT = 0, + VK_MICROMAP_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkMicromapTypeEXT; + +typedef enum VkBuildMicromapModeEXT { + VK_BUILD_MICROMAP_MODE_BUILD_EXT = 0, + VK_BUILD_MICROMAP_MODE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkBuildMicromapModeEXT; + +typedef enum VkCopyMicromapModeEXT { + VK_COPY_MICROMAP_MODE_CLONE_EXT = 0, + VK_COPY_MICROMAP_MODE_SERIALIZE_EXT = 1, + VK_COPY_MICROMAP_MODE_DESERIALIZE_EXT = 2, + VK_COPY_MICROMAP_MODE_COMPACT_EXT = 3, + VK_COPY_MICROMAP_MODE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkCopyMicromapModeEXT; + +typedef enum VkOpacityMicromapFormatEXT { + VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT = 1, + VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT = 2, + VK_OPACITY_MICROMAP_FORMAT_MAX_ENUM_EXT = 0x7FFFFFFF +} VkOpacityMicromapFormatEXT; + +typedef enum VkOpacityMicromapSpecialIndexEXT { + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT = -1, + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT = -2, + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT = -3, + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT = -4, + VK_OPACITY_MICROMAP_SPECIAL_INDEX_MAX_ENUM_EXT = 0x7FFFFFFF +} VkOpacityMicromapSpecialIndexEXT; + +typedef enum VkAccelerationStructureCompatibilityKHR { + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR = 0, + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = 1, + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR = 0x7FFFFFFF +} VkAccelerationStructureCompatibilityKHR; + +typedef enum VkAccelerationStructureBuildTypeKHR { + VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR = 0, + VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR = 1, + VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR = 2, + VK_ACCELERATION_STRUCTURE_BUILD_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkAccelerationStructureBuildTypeKHR; + +typedef enum VkBuildMicromapFlagBitsEXT { + VK_BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT = 0x00000001, + VK_BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT = 0x00000002, + VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT = 0x00000004, + VK_BUILD_MICROMAP_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkBuildMicromapFlagBitsEXT; +typedef VkFlags VkBuildMicromapFlagsEXT; + +typedef enum VkMicromapCreateFlagBitsEXT { + VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 0x00000001, + VK_MICROMAP_CREATE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkMicromapCreateFlagBitsEXT; +typedef VkFlags VkMicromapCreateFlagsEXT; +typedef struct VkMicromapUsageEXT { + uint32_t count; + uint32_t subdivisionLevel; + uint32_t format; +} VkMicromapUsageEXT; + +typedef union VkDeviceOrHostAddressKHR { + VkDeviceAddress deviceAddress; + void* hostAddress; +} VkDeviceOrHostAddressKHR; + +typedef struct VkMicromapBuildInfoEXT { + VkStructureType sType; + const void* pNext; + VkMicromapTypeEXT type; + VkBuildMicromapFlagsEXT flags; + VkBuildMicromapModeEXT mode; + VkMicromapEXT dstMicromap; + uint32_t usageCountsCount; + const VkMicromapUsageEXT* pUsageCounts; + const VkMicromapUsageEXT* const* ppUsageCounts; + VkDeviceOrHostAddressConstKHR data; + VkDeviceOrHostAddressKHR scratchData; + VkDeviceOrHostAddressConstKHR triangleArray; + VkDeviceSize triangleArrayStride; +} VkMicromapBuildInfoEXT; + +typedef struct VkMicromapCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkMicromapCreateFlagsEXT createFlags; + VkBuffer buffer; + VkDeviceSize offset; + VkDeviceSize size; + VkMicromapTypeEXT type; + VkDeviceAddress deviceAddress; +} VkMicromapCreateInfoEXT; + +typedef struct VkPhysicalDeviceOpacityMicromapFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 micromap; + VkBool32 micromapCaptureReplay; + VkBool32 micromapHostCommands; +} VkPhysicalDeviceOpacityMicromapFeaturesEXT; + +typedef struct VkPhysicalDeviceOpacityMicromapPropertiesEXT { + VkStructureType sType; + void* pNext; + uint32_t maxOpacity2StateSubdivisionLevel; + uint32_t maxOpacity4StateSubdivisionLevel; +} VkPhysicalDeviceOpacityMicromapPropertiesEXT; + +typedef struct VkMicromapVersionInfoEXT { + VkStructureType sType; + const void* pNext; + const uint8_t* pVersionData; +} VkMicromapVersionInfoEXT; + +typedef struct VkCopyMicromapToMemoryInfoEXT { + VkStructureType sType; + const void* pNext; + VkMicromapEXT src; + VkDeviceOrHostAddressKHR dst; + VkCopyMicromapModeEXT mode; +} VkCopyMicromapToMemoryInfoEXT; + +typedef struct VkCopyMemoryToMicromapInfoEXT { + VkStructureType sType; + const void* pNext; + VkDeviceOrHostAddressConstKHR src; + VkMicromapEXT dst; + VkCopyMicromapModeEXT mode; +} VkCopyMemoryToMicromapInfoEXT; + +typedef struct VkCopyMicromapInfoEXT { + VkStructureType sType; + const void* pNext; + VkMicromapEXT src; + VkMicromapEXT dst; + VkCopyMicromapModeEXT mode; +} VkCopyMicromapInfoEXT; + +typedef struct VkMicromapBuildSizesInfoEXT { + VkStructureType sType; + const void* pNext; + VkDeviceSize micromapSize; + VkDeviceSize buildScratchSize; + VkBool32 discardable; +} VkMicromapBuildSizesInfoEXT; + +typedef struct VkAccelerationStructureTrianglesOpacityMicromapEXT { + VkStructureType sType; + void* pNext; + VkIndexType indexType; + VkDeviceOrHostAddressConstKHR indexBuffer; + VkDeviceSize indexStride; + uint32_t baseTriangle; + uint32_t usageCountsCount; + const VkMicromapUsageEXT* pUsageCounts; + const VkMicromapUsageEXT* const* ppUsageCounts; + VkMicromapEXT micromap; +} VkAccelerationStructureTrianglesOpacityMicromapEXT; + +typedef struct VkMicromapTriangleEXT { + uint32_t dataOffset; + uint16_t subdivisionLevel; + uint16_t format; +} VkMicromapTriangleEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateMicromapEXT)(VkDevice device, const VkMicromapCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkMicromapEXT* pMicromap); +typedef void (VKAPI_PTR *PFN_vkDestroyMicromapEXT)(VkDevice device, VkMicromapEXT micromap, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkCmdBuildMicromapsEXT)(VkCommandBuffer commandBuffer, uint32_t infoCount, const VkMicromapBuildInfoEXT* pInfos); +typedef VkResult (VKAPI_PTR *PFN_vkBuildMicromapsEXT)(VkDevice device, VkDeferredOperationKHR deferredOperation, uint32_t infoCount, const VkMicromapBuildInfoEXT* pInfos); +typedef VkResult (VKAPI_PTR *PFN_vkCopyMicromapEXT)(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyMicromapInfoEXT* pInfo); +typedef VkResult (VKAPI_PTR *PFN_vkCopyMicromapToMemoryEXT)(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyMicromapToMemoryInfoEXT* pInfo); +typedef VkResult (VKAPI_PTR *PFN_vkCopyMemoryToMicromapEXT)(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyMemoryToMicromapInfoEXT* pInfo); +typedef VkResult (VKAPI_PTR *PFN_vkWriteMicromapsPropertiesEXT)(VkDevice device, uint32_t micromapCount, const VkMicromapEXT* pMicromaps, VkQueryType queryType, size_t dataSize, void* pData, size_t stride); +typedef void (VKAPI_PTR *PFN_vkCmdCopyMicromapEXT)(VkCommandBuffer commandBuffer, const VkCopyMicromapInfoEXT* pInfo); +typedef void (VKAPI_PTR *PFN_vkCmdCopyMicromapToMemoryEXT)(VkCommandBuffer commandBuffer, const VkCopyMicromapToMemoryInfoEXT* pInfo); +typedef void (VKAPI_PTR *PFN_vkCmdCopyMemoryToMicromapEXT)(VkCommandBuffer commandBuffer, const VkCopyMemoryToMicromapInfoEXT* pInfo); +typedef void (VKAPI_PTR *PFN_vkCmdWriteMicromapsPropertiesEXT)(VkCommandBuffer commandBuffer, uint32_t micromapCount, const VkMicromapEXT* pMicromaps, VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery); +typedef void (VKAPI_PTR *PFN_vkGetDeviceMicromapCompatibilityEXT)(VkDevice device, const VkMicromapVersionInfoEXT* pVersionInfo, VkAccelerationStructureCompatibilityKHR* pCompatibility); +typedef void (VKAPI_PTR *PFN_vkGetMicromapBuildSizesEXT)(VkDevice device, VkAccelerationStructureBuildTypeKHR buildType, const VkMicromapBuildInfoEXT* pBuildInfo, VkMicromapBuildSizesInfoEXT* pSizeInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateMicromapEXT( + VkDevice device, + const VkMicromapCreateInfoEXT* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkMicromapEXT* pMicromap); + +VKAPI_ATTR void VKAPI_CALL vkDestroyMicromapEXT( + VkDevice device, + VkMicromapEXT micromap, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR void VKAPI_CALL vkCmdBuildMicromapsEXT( + VkCommandBuffer commandBuffer, + uint32_t infoCount, + const VkMicromapBuildInfoEXT* pInfos); + +VKAPI_ATTR VkResult VKAPI_CALL vkBuildMicromapsEXT( + VkDevice device, + VkDeferredOperationKHR deferredOperation, + uint32_t infoCount, + const VkMicromapBuildInfoEXT* pInfos); + +VKAPI_ATTR VkResult VKAPI_CALL vkCopyMicromapEXT( + VkDevice device, + VkDeferredOperationKHR deferredOperation, + const VkCopyMicromapInfoEXT* pInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkCopyMicromapToMemoryEXT( + VkDevice device, + VkDeferredOperationKHR deferredOperation, + const VkCopyMicromapToMemoryInfoEXT* pInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkCopyMemoryToMicromapEXT( + VkDevice device, + VkDeferredOperationKHR deferredOperation, + const VkCopyMemoryToMicromapInfoEXT* pInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkWriteMicromapsPropertiesEXT( + VkDevice device, + uint32_t micromapCount, + const VkMicromapEXT* pMicromaps, + VkQueryType queryType, + size_t dataSize, + void* pData, + size_t stride); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyMicromapEXT( + VkCommandBuffer commandBuffer, + const VkCopyMicromapInfoEXT* pInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyMicromapToMemoryEXT( + VkCommandBuffer commandBuffer, + const VkCopyMicromapToMemoryInfoEXT* pInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyMemoryToMicromapEXT( + VkCommandBuffer commandBuffer, + const VkCopyMemoryToMicromapInfoEXT* pInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdWriteMicromapsPropertiesEXT( + VkCommandBuffer commandBuffer, + uint32_t micromapCount, + const VkMicromapEXT* pMicromaps, + VkQueryType queryType, + VkQueryPool queryPool, + uint32_t firstQuery); + +VKAPI_ATTR void VKAPI_CALL vkGetDeviceMicromapCompatibilityEXT( + VkDevice device, + const VkMicromapVersionInfoEXT* pVersionInfo, + VkAccelerationStructureCompatibilityKHR* pCompatibility); + +VKAPI_ATTR void VKAPI_CALL vkGetMicromapBuildSizesEXT( + VkDevice device, + VkAccelerationStructureBuildTypeKHR buildType, + const VkMicromapBuildInfoEXT* pBuildInfo, + VkMicromapBuildSizesInfoEXT* pSizeInfo); +#endif + + +#define VK_EXT_load_store_op_none 1 +#define VK_EXT_LOAD_STORE_OP_NONE_SPEC_VERSION 1 +#define VK_EXT_LOAD_STORE_OP_NONE_EXTENSION_NAME "VK_EXT_load_store_op_none" + + +#define VK_HUAWEI_cluster_culling_shader 1 +#define VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION 1 +#define VK_HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME "VK_HUAWEI_cluster_culling_shader" +typedef struct VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI { + VkStructureType sType; + void* pNext; + VkBool32 clustercullingShader; + VkBool32 multiviewClusterCullingShader; +} VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI; + +typedef struct VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI { + VkStructureType sType; + void* pNext; + uint32_t maxWorkGroupCount[3]; + uint32_t maxWorkGroupSize[3]; + uint32_t maxOutputClusterCount; + VkDeviceSize indirectBufferOffsetAlignment; +} VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI; + +typedef void (VKAPI_PTR *PFN_vkCmdDrawClusterHUAWEI)(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ); +typedef void (VKAPI_PTR *PFN_vkCmdDrawClusterIndirectHUAWEI)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDrawClusterHUAWEI( + VkCommandBuffer commandBuffer, + uint32_t groupCountX, + uint32_t groupCountY, + uint32_t groupCountZ); + +VKAPI_ATTR void VKAPI_CALL vkCmdDrawClusterIndirectHUAWEI( + VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset); +#endif + + +#define VK_EXT_border_color_swizzle 1 +#define VK_EXT_BORDER_COLOR_SWIZZLE_SPEC_VERSION 1 +#define VK_EXT_BORDER_COLOR_SWIZZLE_EXTENSION_NAME "VK_EXT_border_color_swizzle" +typedef struct VkPhysicalDeviceBorderColorSwizzleFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 borderColorSwizzle; + VkBool32 borderColorSwizzleFromImage; +} VkPhysicalDeviceBorderColorSwizzleFeaturesEXT; + +typedef struct VkSamplerBorderColorComponentMappingCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkComponentMapping components; + VkBool32 srgb; +} VkSamplerBorderColorComponentMappingCreateInfoEXT; + + + +#define VK_EXT_pageable_device_local_memory 1 +#define VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_SPEC_VERSION 1 +#define VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_EXTENSION_NAME "VK_EXT_pageable_device_local_memory" +typedef struct VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 pageableDeviceLocalMemory; +} VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT; + +typedef void (VKAPI_PTR *PFN_vkSetDeviceMemoryPriorityEXT)(VkDevice device, VkDeviceMemory memory, float priority); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkSetDeviceMemoryPriorityEXT( + VkDevice device, + VkDeviceMemory memory, + float priority); +#endif + + +#define VK_ARM_shader_core_properties 1 +#define VK_ARM_SHADER_CORE_PROPERTIES_SPEC_VERSION 1 +#define VK_ARM_SHADER_CORE_PROPERTIES_EXTENSION_NAME "VK_ARM_shader_core_properties" +typedef struct VkPhysicalDeviceShaderCorePropertiesARM { + VkStructureType sType; + void* pNext; + uint32_t pixelRate; + uint32_t texelRate; + uint32_t fmaRate; +} VkPhysicalDeviceShaderCorePropertiesARM; + + + +#define VK_EXT_image_sliced_view_of_3d 1 +#define VK_EXT_IMAGE_SLICED_VIEW_OF_3D_SPEC_VERSION 1 +#define VK_EXT_IMAGE_SLICED_VIEW_OF_3D_EXTENSION_NAME "VK_EXT_image_sliced_view_of_3d" +#define VK_REMAINING_3D_SLICES_EXT (~0U) +typedef struct VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 imageSlicedViewOf3D; +} VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT; + +typedef struct VkImageViewSlicedCreateInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t sliceOffset; + uint32_t sliceCount; +} VkImageViewSlicedCreateInfoEXT; + + + +#define VK_VALVE_descriptor_set_host_mapping 1 +#define VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION 1 +#define VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_EXTENSION_NAME "VK_VALVE_descriptor_set_host_mapping" +typedef struct VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE { + VkStructureType sType; + void* pNext; + VkBool32 descriptorSetHostMapping; +} VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE; + +typedef struct VkDescriptorSetBindingReferenceVALVE { + VkStructureType sType; + const void* pNext; + VkDescriptorSetLayout descriptorSetLayout; + uint32_t binding; +} VkDescriptorSetBindingReferenceVALVE; + +typedef struct VkDescriptorSetLayoutHostMappingInfoVALVE { + VkStructureType sType; + void* pNext; + size_t descriptorOffset; + uint32_t descriptorSize; +} VkDescriptorSetLayoutHostMappingInfoVALVE; + +typedef void (VKAPI_PTR *PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE)(VkDevice device, const VkDescriptorSetBindingReferenceVALVE* pBindingReference, VkDescriptorSetLayoutHostMappingInfoVALVE* pHostMapping); +typedef void (VKAPI_PTR *PFN_vkGetDescriptorSetHostMappingVALVE)(VkDevice device, VkDescriptorSet descriptorSet, void** ppData); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutHostMappingInfoVALVE( + VkDevice device, + const VkDescriptorSetBindingReferenceVALVE* pBindingReference, + VkDescriptorSetLayoutHostMappingInfoVALVE* pHostMapping); + +VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetHostMappingVALVE( + VkDevice device, + VkDescriptorSet descriptorSet, + void** ppData); +#endif + + +#define VK_EXT_depth_clamp_zero_one 1 +#define VK_EXT_DEPTH_CLAMP_ZERO_ONE_SPEC_VERSION 1 +#define VK_EXT_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME "VK_EXT_depth_clamp_zero_one" +typedef struct VkPhysicalDeviceDepthClampZeroOneFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 depthClampZeroOne; +} VkPhysicalDeviceDepthClampZeroOneFeaturesEXT; + + + +#define VK_EXT_non_seamless_cube_map 1 +#define VK_EXT_NON_SEAMLESS_CUBE_MAP_SPEC_VERSION 1 +#define VK_EXT_NON_SEAMLESS_CUBE_MAP_EXTENSION_NAME "VK_EXT_non_seamless_cube_map" +typedef struct VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 nonSeamlessCubeMap; +} VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT; + + + +#define VK_QCOM_fragment_density_map_offset 1 +#define VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION 1 +#define VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME "VK_QCOM_fragment_density_map_offset" +typedef struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM { + VkStructureType sType; + void* pNext; + VkBool32 fragmentDensityMapOffset; +} VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM; + +typedef struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM { + VkStructureType sType; + void* pNext; + VkExtent2D fragmentDensityOffsetGranularity; +} VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM; + +typedef struct VkSubpassFragmentDensityMapOffsetEndInfoQCOM { + VkStructureType sType; + const void* pNext; + uint32_t fragmentDensityOffsetCount; + const VkOffset2D* pFragmentDensityOffsets; +} VkSubpassFragmentDensityMapOffsetEndInfoQCOM; + + + +#define VK_NV_copy_memory_indirect 1 +#define VK_NV_COPY_MEMORY_INDIRECT_SPEC_VERSION 1 +#define VK_NV_COPY_MEMORY_INDIRECT_EXTENSION_NAME "VK_NV_copy_memory_indirect" +typedef struct VkCopyMemoryIndirectCommandNV { + VkDeviceAddress srcAddress; + VkDeviceAddress dstAddress; + VkDeviceSize size; +} VkCopyMemoryIndirectCommandNV; + +typedef struct VkCopyMemoryToImageIndirectCommandNV { + VkDeviceAddress srcAddress; + uint32_t bufferRowLength; + uint32_t bufferImageHeight; + VkImageSubresourceLayers imageSubresource; + VkOffset3D imageOffset; + VkExtent3D imageExtent; +} VkCopyMemoryToImageIndirectCommandNV; + +typedef struct VkPhysicalDeviceCopyMemoryIndirectFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 indirectCopy; +} VkPhysicalDeviceCopyMemoryIndirectFeaturesNV; + +typedef struct VkPhysicalDeviceCopyMemoryIndirectPropertiesNV { + VkStructureType sType; + void* pNext; + VkQueueFlags supportedQueues; +} VkPhysicalDeviceCopyMemoryIndirectPropertiesNV; + +typedef void (VKAPI_PTR *PFN_vkCmdCopyMemoryIndirectNV)(VkCommandBuffer commandBuffer, VkDeviceAddress copyBufferAddress, uint32_t copyCount, uint32_t stride); +typedef void (VKAPI_PTR *PFN_vkCmdCopyMemoryToImageIndirectNV)(VkCommandBuffer commandBuffer, VkDeviceAddress copyBufferAddress, uint32_t copyCount, uint32_t stride, VkImage dstImage, VkImageLayout dstImageLayout, const VkImageSubresourceLayers* pImageSubresources); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdCopyMemoryIndirectNV( + VkCommandBuffer commandBuffer, + VkDeviceAddress copyBufferAddress, + uint32_t copyCount, + uint32_t stride); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyMemoryToImageIndirectNV( + VkCommandBuffer commandBuffer, + VkDeviceAddress copyBufferAddress, + uint32_t copyCount, + uint32_t stride, + VkImage dstImage, + VkImageLayout dstImageLayout, + const VkImageSubresourceLayers* pImageSubresources); +#endif + + +#define VK_NV_memory_decompression 1 +#define VK_NV_MEMORY_DECOMPRESSION_SPEC_VERSION 1 +#define VK_NV_MEMORY_DECOMPRESSION_EXTENSION_NAME "VK_NV_memory_decompression" + +// Flag bits for VkMemoryDecompressionMethodFlagBitsNV +typedef VkFlags64 VkMemoryDecompressionMethodFlagBitsNV; +static const VkMemoryDecompressionMethodFlagBitsNV VK_MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_NV = 0x00000001ULL; + +typedef VkFlags64 VkMemoryDecompressionMethodFlagsNV; +typedef struct VkDecompressMemoryRegionNV { + VkDeviceAddress srcAddress; + VkDeviceAddress dstAddress; + VkDeviceSize compressedSize; + VkDeviceSize decompressedSize; + VkMemoryDecompressionMethodFlagsNV decompressionMethod; +} VkDecompressMemoryRegionNV; + +typedef struct VkPhysicalDeviceMemoryDecompressionFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 memoryDecompression; +} VkPhysicalDeviceMemoryDecompressionFeaturesNV; + +typedef struct VkPhysicalDeviceMemoryDecompressionPropertiesNV { + VkStructureType sType; + void* pNext; + VkMemoryDecompressionMethodFlagsNV decompressionMethods; + uint64_t maxDecompressionIndirectCount; +} VkPhysicalDeviceMemoryDecompressionPropertiesNV; + +typedef void (VKAPI_PTR *PFN_vkCmdDecompressMemoryNV)(VkCommandBuffer commandBuffer, uint32_t decompressRegionCount, const VkDecompressMemoryRegionNV* pDecompressMemoryRegions); +typedef void (VKAPI_PTR *PFN_vkCmdDecompressMemoryIndirectCountNV)(VkCommandBuffer commandBuffer, VkDeviceAddress indirectCommandsAddress, VkDeviceAddress indirectCommandsCountAddress, uint32_t stride); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDecompressMemoryNV( + VkCommandBuffer commandBuffer, + uint32_t decompressRegionCount, + const VkDecompressMemoryRegionNV* pDecompressMemoryRegions); + +VKAPI_ATTR void VKAPI_CALL vkCmdDecompressMemoryIndirectCountNV( + VkCommandBuffer commandBuffer, + VkDeviceAddress indirectCommandsAddress, + VkDeviceAddress indirectCommandsCountAddress, + uint32_t stride); +#endif + + +#define VK_NV_linear_color_attachment 1 +#define VK_NV_LINEAR_COLOR_ATTACHMENT_SPEC_VERSION 1 +#define VK_NV_LINEAR_COLOR_ATTACHMENT_EXTENSION_NAME "VK_NV_linear_color_attachment" +typedef struct VkPhysicalDeviceLinearColorAttachmentFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 linearColorAttachment; +} VkPhysicalDeviceLinearColorAttachmentFeaturesNV; + + + +#define VK_GOOGLE_surfaceless_query 1 +#define VK_GOOGLE_SURFACELESS_QUERY_SPEC_VERSION 2 +#define VK_GOOGLE_SURFACELESS_QUERY_EXTENSION_NAME "VK_GOOGLE_surfaceless_query" + + +#define VK_EXT_image_compression_control_swapchain 1 +#define VK_EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_SPEC_VERSION 1 +#define VK_EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_EXTENSION_NAME "VK_EXT_image_compression_control_swapchain" +typedef struct VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 imageCompressionControlSwapchain; +} VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT; + + + +#define VK_QCOM_image_processing 1 +#define VK_QCOM_IMAGE_PROCESSING_SPEC_VERSION 1 +#define VK_QCOM_IMAGE_PROCESSING_EXTENSION_NAME "VK_QCOM_image_processing" +typedef struct VkImageViewSampleWeightCreateInfoQCOM { + VkStructureType sType; + const void* pNext; + VkOffset2D filterCenter; + VkExtent2D filterSize; + uint32_t numPhases; +} VkImageViewSampleWeightCreateInfoQCOM; + +typedef struct VkPhysicalDeviceImageProcessingFeaturesQCOM { + VkStructureType sType; + void* pNext; + VkBool32 textureSampleWeighted; + VkBool32 textureBoxFilter; + VkBool32 textureBlockMatch; +} VkPhysicalDeviceImageProcessingFeaturesQCOM; + +typedef struct VkPhysicalDeviceImageProcessingPropertiesQCOM { + VkStructureType sType; + void* pNext; + uint32_t maxWeightFilterPhases; + VkExtent2D maxWeightFilterDimension; + VkExtent2D maxBlockMatchRegion; + VkExtent2D maxBoxFilterBlockSize; +} VkPhysicalDeviceImageProcessingPropertiesQCOM; + + + +#define VK_EXT_extended_dynamic_state3 1 +#define VK_EXT_EXTENDED_DYNAMIC_STATE_3_SPEC_VERSION 2 +#define VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME "VK_EXT_extended_dynamic_state3" +typedef struct VkPhysicalDeviceExtendedDynamicState3FeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 extendedDynamicState3TessellationDomainOrigin; + VkBool32 extendedDynamicState3DepthClampEnable; + VkBool32 extendedDynamicState3PolygonMode; + VkBool32 extendedDynamicState3RasterizationSamples; + VkBool32 extendedDynamicState3SampleMask; + VkBool32 extendedDynamicState3AlphaToCoverageEnable; + VkBool32 extendedDynamicState3AlphaToOneEnable; + VkBool32 extendedDynamicState3LogicOpEnable; + VkBool32 extendedDynamicState3ColorBlendEnable; + VkBool32 extendedDynamicState3ColorBlendEquation; + VkBool32 extendedDynamicState3ColorWriteMask; + VkBool32 extendedDynamicState3RasterizationStream; + VkBool32 extendedDynamicState3ConservativeRasterizationMode; + VkBool32 extendedDynamicState3ExtraPrimitiveOverestimationSize; + VkBool32 extendedDynamicState3DepthClipEnable; + VkBool32 extendedDynamicState3SampleLocationsEnable; + VkBool32 extendedDynamicState3ColorBlendAdvanced; + VkBool32 extendedDynamicState3ProvokingVertexMode; + VkBool32 extendedDynamicState3LineRasterizationMode; + VkBool32 extendedDynamicState3LineStippleEnable; + VkBool32 extendedDynamicState3DepthClipNegativeOneToOne; + VkBool32 extendedDynamicState3ViewportWScalingEnable; + VkBool32 extendedDynamicState3ViewportSwizzle; + VkBool32 extendedDynamicState3CoverageToColorEnable; + VkBool32 extendedDynamicState3CoverageToColorLocation; + VkBool32 extendedDynamicState3CoverageModulationMode; + VkBool32 extendedDynamicState3CoverageModulationTableEnable; + VkBool32 extendedDynamicState3CoverageModulationTable; + VkBool32 extendedDynamicState3CoverageReductionMode; + VkBool32 extendedDynamicState3RepresentativeFragmentTestEnable; + VkBool32 extendedDynamicState3ShadingRateImageEnable; +} VkPhysicalDeviceExtendedDynamicState3FeaturesEXT; + +typedef struct VkPhysicalDeviceExtendedDynamicState3PropertiesEXT { + VkStructureType sType; + void* pNext; + VkBool32 dynamicPrimitiveTopologyUnrestricted; +} VkPhysicalDeviceExtendedDynamicState3PropertiesEXT; + +typedef struct VkColorBlendEquationEXT { + VkBlendFactor srcColorBlendFactor; + VkBlendFactor dstColorBlendFactor; + VkBlendOp colorBlendOp; + VkBlendFactor srcAlphaBlendFactor; + VkBlendFactor dstAlphaBlendFactor; + VkBlendOp alphaBlendOp; +} VkColorBlendEquationEXT; + +typedef struct VkColorBlendAdvancedEXT { + VkBlendOp advancedBlendOp; + VkBool32 srcPremultiplied; + VkBool32 dstPremultiplied; + VkBlendOverlapEXT blendOverlap; + VkBool32 clampResults; +} VkColorBlendAdvancedEXT; + +typedef void (VKAPI_PTR *PFN_vkCmdSetTessellationDomainOriginEXT)(VkCommandBuffer commandBuffer, VkTessellationDomainOrigin domainOrigin); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthClampEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthClampEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetPolygonModeEXT)(VkCommandBuffer commandBuffer, VkPolygonMode polygonMode); +typedef void (VKAPI_PTR *PFN_vkCmdSetRasterizationSamplesEXT)(VkCommandBuffer commandBuffer, VkSampleCountFlagBits rasterizationSamples); +typedef void (VKAPI_PTR *PFN_vkCmdSetSampleMaskEXT)(VkCommandBuffer commandBuffer, VkSampleCountFlagBits samples, const VkSampleMask* pSampleMask); +typedef void (VKAPI_PTR *PFN_vkCmdSetAlphaToCoverageEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 alphaToCoverageEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetAlphaToOneEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 alphaToOneEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetLogicOpEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 logicOpEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetColorBlendEnableEXT)(VkCommandBuffer commandBuffer, uint32_t firstAttachment, uint32_t attachmentCount, const VkBool32* pColorBlendEnables); +typedef void (VKAPI_PTR *PFN_vkCmdSetColorBlendEquationEXT)(VkCommandBuffer commandBuffer, uint32_t firstAttachment, uint32_t attachmentCount, const VkColorBlendEquationEXT* pColorBlendEquations); +typedef void (VKAPI_PTR *PFN_vkCmdSetColorWriteMaskEXT)(VkCommandBuffer commandBuffer, uint32_t firstAttachment, uint32_t attachmentCount, const VkColorComponentFlags* pColorWriteMasks); +typedef void (VKAPI_PTR *PFN_vkCmdSetRasterizationStreamEXT)(VkCommandBuffer commandBuffer, uint32_t rasterizationStream); +typedef void (VKAPI_PTR *PFN_vkCmdSetConservativeRasterizationModeEXT)(VkCommandBuffer commandBuffer, VkConservativeRasterizationModeEXT conservativeRasterizationMode); +typedef void (VKAPI_PTR *PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT)(VkCommandBuffer commandBuffer, float extraPrimitiveOverestimationSize); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthClipEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthClipEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetSampleLocationsEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 sampleLocationsEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetColorBlendAdvancedEXT)(VkCommandBuffer commandBuffer, uint32_t firstAttachment, uint32_t attachmentCount, const VkColorBlendAdvancedEXT* pColorBlendAdvanced); +typedef void (VKAPI_PTR *PFN_vkCmdSetProvokingVertexModeEXT)(VkCommandBuffer commandBuffer, VkProvokingVertexModeEXT provokingVertexMode); +typedef void (VKAPI_PTR *PFN_vkCmdSetLineRasterizationModeEXT)(VkCommandBuffer commandBuffer, VkLineRasterizationModeEXT lineRasterizationMode); +typedef void (VKAPI_PTR *PFN_vkCmdSetLineStippleEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 stippledLineEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthClipNegativeOneToOneEXT)(VkCommandBuffer commandBuffer, VkBool32 negativeOneToOne); +typedef void (VKAPI_PTR *PFN_vkCmdSetViewportWScalingEnableNV)(VkCommandBuffer commandBuffer, VkBool32 viewportWScalingEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetViewportSwizzleNV)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewportSwizzleNV* pViewportSwizzles); +typedef void (VKAPI_PTR *PFN_vkCmdSetCoverageToColorEnableNV)(VkCommandBuffer commandBuffer, VkBool32 coverageToColorEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetCoverageToColorLocationNV)(VkCommandBuffer commandBuffer, uint32_t coverageToColorLocation); +typedef void (VKAPI_PTR *PFN_vkCmdSetCoverageModulationModeNV)(VkCommandBuffer commandBuffer, VkCoverageModulationModeNV coverageModulationMode); +typedef void (VKAPI_PTR *PFN_vkCmdSetCoverageModulationTableEnableNV)(VkCommandBuffer commandBuffer, VkBool32 coverageModulationTableEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetCoverageModulationTableNV)(VkCommandBuffer commandBuffer, uint32_t coverageModulationTableCount, const float* pCoverageModulationTable); +typedef void (VKAPI_PTR *PFN_vkCmdSetShadingRateImageEnableNV)(VkCommandBuffer commandBuffer, VkBool32 shadingRateImageEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetRepresentativeFragmentTestEnableNV)(VkCommandBuffer commandBuffer, VkBool32 representativeFragmentTestEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetCoverageReductionModeNV)(VkCommandBuffer commandBuffer, VkCoverageReductionModeNV coverageReductionMode); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetTessellationDomainOriginEXT( + VkCommandBuffer commandBuffer, + VkTessellationDomainOrigin domainOrigin); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthClampEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 depthClampEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetPolygonModeEXT( + VkCommandBuffer commandBuffer, + VkPolygonMode polygonMode); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetRasterizationSamplesEXT( + VkCommandBuffer commandBuffer, + VkSampleCountFlagBits rasterizationSamples); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetSampleMaskEXT( + VkCommandBuffer commandBuffer, + VkSampleCountFlagBits samples, + const VkSampleMask* pSampleMask); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetAlphaToCoverageEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 alphaToCoverageEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetAlphaToOneEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 alphaToOneEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetLogicOpEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 logicOpEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetColorBlendEnableEXT( + VkCommandBuffer commandBuffer, + uint32_t firstAttachment, + uint32_t attachmentCount, + const VkBool32* pColorBlendEnables); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetColorBlendEquationEXT( + VkCommandBuffer commandBuffer, + uint32_t firstAttachment, + uint32_t attachmentCount, + const VkColorBlendEquationEXT* pColorBlendEquations); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetColorWriteMaskEXT( + VkCommandBuffer commandBuffer, + uint32_t firstAttachment, + uint32_t attachmentCount, + const VkColorComponentFlags* pColorWriteMasks); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetRasterizationStreamEXT( + VkCommandBuffer commandBuffer, + uint32_t rasterizationStream); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetConservativeRasterizationModeEXT( + VkCommandBuffer commandBuffer, + VkConservativeRasterizationModeEXT conservativeRasterizationMode); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetExtraPrimitiveOverestimationSizeEXT( + VkCommandBuffer commandBuffer, + float extraPrimitiveOverestimationSize); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthClipEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 depthClipEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetSampleLocationsEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 sampleLocationsEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetColorBlendAdvancedEXT( + VkCommandBuffer commandBuffer, + uint32_t firstAttachment, + uint32_t attachmentCount, + const VkColorBlendAdvancedEXT* pColorBlendAdvanced); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetProvokingVertexModeEXT( + VkCommandBuffer commandBuffer, + VkProvokingVertexModeEXT provokingVertexMode); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetLineRasterizationModeEXT( + VkCommandBuffer commandBuffer, + VkLineRasterizationModeEXT lineRasterizationMode); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetLineStippleEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 stippledLineEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthClipNegativeOneToOneEXT( + VkCommandBuffer commandBuffer, + VkBool32 negativeOneToOne); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportWScalingEnableNV( + VkCommandBuffer commandBuffer, + VkBool32 viewportWScalingEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportSwizzleNV( + VkCommandBuffer commandBuffer, + uint32_t firstViewport, + uint32_t viewportCount, + const VkViewportSwizzleNV* pViewportSwizzles); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetCoverageToColorEnableNV( + VkCommandBuffer commandBuffer, + VkBool32 coverageToColorEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetCoverageToColorLocationNV( + VkCommandBuffer commandBuffer, + uint32_t coverageToColorLocation); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetCoverageModulationModeNV( + VkCommandBuffer commandBuffer, + VkCoverageModulationModeNV coverageModulationMode); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetCoverageModulationTableEnableNV( + VkCommandBuffer commandBuffer, + VkBool32 coverageModulationTableEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetCoverageModulationTableNV( + VkCommandBuffer commandBuffer, + uint32_t coverageModulationTableCount, + const float* pCoverageModulationTable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetShadingRateImageEnableNV( + VkCommandBuffer commandBuffer, + VkBool32 shadingRateImageEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetRepresentativeFragmentTestEnableNV( + VkCommandBuffer commandBuffer, + VkBool32 representativeFragmentTestEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetCoverageReductionModeNV( + VkCommandBuffer commandBuffer, + VkCoverageReductionModeNV coverageReductionMode); +#endif + + +#define VK_EXT_subpass_merge_feedback 1 +#define VK_EXT_SUBPASS_MERGE_FEEDBACK_SPEC_VERSION 2 +#define VK_EXT_SUBPASS_MERGE_FEEDBACK_EXTENSION_NAME "VK_EXT_subpass_merge_feedback" + +typedef enum VkSubpassMergeStatusEXT { + VK_SUBPASS_MERGE_STATUS_MERGED_EXT = 0, + VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT = 1, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT = 2, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT = 3, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT = 4, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT = 5, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT = 6, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT = 7, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT = 8, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT = 9, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT = 10, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT = 11, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT = 12, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT = 13, + VK_SUBPASS_MERGE_STATUS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkSubpassMergeStatusEXT; +typedef struct VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 subpassMergeFeedback; +} VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT; + +typedef struct VkRenderPassCreationControlEXT { + VkStructureType sType; + const void* pNext; + VkBool32 disallowMerging; +} VkRenderPassCreationControlEXT; + +typedef struct VkRenderPassCreationFeedbackInfoEXT { + uint32_t postMergeSubpassCount; +} VkRenderPassCreationFeedbackInfoEXT; + +typedef struct VkRenderPassCreationFeedbackCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkRenderPassCreationFeedbackInfoEXT* pRenderPassFeedback; +} VkRenderPassCreationFeedbackCreateInfoEXT; + +typedef struct VkRenderPassSubpassFeedbackInfoEXT { + VkSubpassMergeStatusEXT subpassMergeStatus; + char description[VK_MAX_DESCRIPTION_SIZE]; + uint32_t postMergeIndex; +} VkRenderPassSubpassFeedbackInfoEXT; + +typedef struct VkRenderPassSubpassFeedbackCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkRenderPassSubpassFeedbackInfoEXT* pSubpassFeedback; +} VkRenderPassSubpassFeedbackCreateInfoEXT; + + + +#define VK_LUNARG_direct_driver_loading 1 +#define VK_LUNARG_DIRECT_DRIVER_LOADING_SPEC_VERSION 1 +#define VK_LUNARG_DIRECT_DRIVER_LOADING_EXTENSION_NAME "VK_LUNARG_direct_driver_loading" + +typedef enum VkDirectDriverLoadingModeLUNARG { + VK_DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG = 0, + VK_DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG = 1, + VK_DIRECT_DRIVER_LOADING_MODE_MAX_ENUM_LUNARG = 0x7FFFFFFF +} VkDirectDriverLoadingModeLUNARG; +typedef VkFlags VkDirectDriverLoadingFlagsLUNARG; +typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vkGetInstanceProcAddrLUNARG)( + VkInstance instance, const char* pName); + +typedef struct VkDirectDriverLoadingInfoLUNARG { + VkStructureType sType; + void* pNext; + VkDirectDriverLoadingFlagsLUNARG flags; + PFN_vkGetInstanceProcAddrLUNARG pfnGetInstanceProcAddr; +} VkDirectDriverLoadingInfoLUNARG; + +typedef struct VkDirectDriverLoadingListLUNARG { + VkStructureType sType; + void* pNext; + VkDirectDriverLoadingModeLUNARG mode; + uint32_t driverCount; + const VkDirectDriverLoadingInfoLUNARG* pDrivers; +} VkDirectDriverLoadingListLUNARG; + + + +#define VK_EXT_shader_module_identifier 1 +#define VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT 32U +#define VK_EXT_SHADER_MODULE_IDENTIFIER_SPEC_VERSION 1 +#define VK_EXT_SHADER_MODULE_IDENTIFIER_EXTENSION_NAME "VK_EXT_shader_module_identifier" +typedef struct VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 shaderModuleIdentifier; +} VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT; + +typedef struct VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT { + VkStructureType sType; + void* pNext; + uint8_t shaderModuleIdentifierAlgorithmUUID[VK_UUID_SIZE]; +} VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT; + +typedef struct VkPipelineShaderStageModuleIdentifierCreateInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t identifierSize; + const uint8_t* pIdentifier; +} VkPipelineShaderStageModuleIdentifierCreateInfoEXT; + +typedef struct VkShaderModuleIdentifierEXT { + VkStructureType sType; + void* pNext; + uint32_t identifierSize; + uint8_t identifier[VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT]; +} VkShaderModuleIdentifierEXT; + +typedef void (VKAPI_PTR *PFN_vkGetShaderModuleIdentifierEXT)(VkDevice device, VkShaderModule shaderModule, VkShaderModuleIdentifierEXT* pIdentifier); +typedef void (VKAPI_PTR *PFN_vkGetShaderModuleCreateInfoIdentifierEXT)(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, VkShaderModuleIdentifierEXT* pIdentifier); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetShaderModuleIdentifierEXT( + VkDevice device, + VkShaderModule shaderModule, + VkShaderModuleIdentifierEXT* pIdentifier); + +VKAPI_ATTR void VKAPI_CALL vkGetShaderModuleCreateInfoIdentifierEXT( + VkDevice device, + const VkShaderModuleCreateInfo* pCreateInfo, + VkShaderModuleIdentifierEXT* pIdentifier); +#endif + + +#define VK_EXT_rasterization_order_attachment_access 1 +#define VK_EXT_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_SPEC_VERSION 1 +#define VK_EXT_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_EXTENSION_NAME "VK_EXT_rasterization_order_attachment_access" + + +#define VK_NV_optical_flow 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkOpticalFlowSessionNV) +#define VK_NV_OPTICAL_FLOW_SPEC_VERSION 1 +#define VK_NV_OPTICAL_FLOW_EXTENSION_NAME "VK_NV_optical_flow" + +typedef enum VkOpticalFlowPerformanceLevelNV { + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_NV = 0, + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV = 1, + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV = 2, + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV = 3, + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MAX_ENUM_NV = 0x7FFFFFFF +} VkOpticalFlowPerformanceLevelNV; + +typedef enum VkOpticalFlowSessionBindingPointNV { + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_UNKNOWN_NV = 0, + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV = 1, + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV = 2, + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV = 3, + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV = 4, + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_FLOW_VECTOR_NV = 5, + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV = 6, + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV = 7, + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV = 8, + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_MAX_ENUM_NV = 0x7FFFFFFF +} VkOpticalFlowSessionBindingPointNV; + +typedef enum VkOpticalFlowGridSizeFlagBitsNV { + VK_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_NV = 0, + VK_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_NV = 0x00000001, + VK_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_NV = 0x00000002, + VK_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV = 0x00000004, + VK_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_NV = 0x00000008, + VK_OPTICAL_FLOW_GRID_SIZE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF +} VkOpticalFlowGridSizeFlagBitsNV; +typedef VkFlags VkOpticalFlowGridSizeFlagsNV; + +typedef enum VkOpticalFlowUsageFlagBitsNV { + VK_OPTICAL_FLOW_USAGE_UNKNOWN_NV = 0, + VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV = 0x00000001, + VK_OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV = 0x00000002, + VK_OPTICAL_FLOW_USAGE_HINT_BIT_NV = 0x00000004, + VK_OPTICAL_FLOW_USAGE_COST_BIT_NV = 0x00000008, + VK_OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV = 0x00000010, + VK_OPTICAL_FLOW_USAGE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF +} VkOpticalFlowUsageFlagBitsNV; +typedef VkFlags VkOpticalFlowUsageFlagsNV; + +typedef enum VkOpticalFlowSessionCreateFlagBitsNV { + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV = 0x00000001, + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV = 0x00000002, + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV = 0x00000004, + VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV = 0x00000008, + VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV = 0x00000010, + VK_OPTICAL_FLOW_SESSION_CREATE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF +} VkOpticalFlowSessionCreateFlagBitsNV; +typedef VkFlags VkOpticalFlowSessionCreateFlagsNV; + +typedef enum VkOpticalFlowExecuteFlagBitsNV { + VK_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV = 0x00000001, + VK_OPTICAL_FLOW_EXECUTE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF +} VkOpticalFlowExecuteFlagBitsNV; +typedef VkFlags VkOpticalFlowExecuteFlagsNV; +typedef struct VkPhysicalDeviceOpticalFlowFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 opticalFlow; +} VkPhysicalDeviceOpticalFlowFeaturesNV; + +typedef struct VkPhysicalDeviceOpticalFlowPropertiesNV { + VkStructureType sType; + void* pNext; + VkOpticalFlowGridSizeFlagsNV supportedOutputGridSizes; + VkOpticalFlowGridSizeFlagsNV supportedHintGridSizes; + VkBool32 hintSupported; + VkBool32 costSupported; + VkBool32 bidirectionalFlowSupported; + VkBool32 globalFlowSupported; + uint32_t minWidth; + uint32_t minHeight; + uint32_t maxWidth; + uint32_t maxHeight; + uint32_t maxNumRegionsOfInterest; +} VkPhysicalDeviceOpticalFlowPropertiesNV; + +typedef struct VkOpticalFlowImageFormatInfoNV { + VkStructureType sType; + const void* pNext; + VkOpticalFlowUsageFlagsNV usage; +} VkOpticalFlowImageFormatInfoNV; + +typedef struct VkOpticalFlowImageFormatPropertiesNV { + VkStructureType sType; + const void* pNext; + VkFormat format; +} VkOpticalFlowImageFormatPropertiesNV; + +typedef struct VkOpticalFlowSessionCreateInfoNV { + VkStructureType sType; + void* pNext; + uint32_t width; + uint32_t height; + VkFormat imageFormat; + VkFormat flowVectorFormat; + VkFormat costFormat; + VkOpticalFlowGridSizeFlagsNV outputGridSize; + VkOpticalFlowGridSizeFlagsNV hintGridSize; + VkOpticalFlowPerformanceLevelNV performanceLevel; + VkOpticalFlowSessionCreateFlagsNV flags; +} VkOpticalFlowSessionCreateInfoNV; + +typedef struct VkOpticalFlowSessionCreatePrivateDataInfoNV { + VkStructureType sType; + void* pNext; + uint32_t id; + uint32_t size; + const void* pPrivateData; +} VkOpticalFlowSessionCreatePrivateDataInfoNV; + +typedef struct VkOpticalFlowExecuteInfoNV { + VkStructureType sType; + void* pNext; + VkOpticalFlowExecuteFlagsNV flags; + uint32_t regionCount; + const VkRect2D* pRegions; +} VkOpticalFlowExecuteInfoNV; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV)(VkPhysicalDevice physicalDevice, const VkOpticalFlowImageFormatInfoNV* pOpticalFlowImageFormatInfo, uint32_t* pFormatCount, VkOpticalFlowImageFormatPropertiesNV* pImageFormatProperties); +typedef VkResult (VKAPI_PTR *PFN_vkCreateOpticalFlowSessionNV)(VkDevice device, const VkOpticalFlowSessionCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkOpticalFlowSessionNV* pSession); +typedef void (VKAPI_PTR *PFN_vkDestroyOpticalFlowSessionNV)(VkDevice device, VkOpticalFlowSessionNV session, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkBindOpticalFlowSessionImageNV)(VkDevice device, VkOpticalFlowSessionNV session, VkOpticalFlowSessionBindingPointNV bindingPoint, VkImageView view, VkImageLayout layout); +typedef void (VKAPI_PTR *PFN_vkCmdOpticalFlowExecuteNV)(VkCommandBuffer commandBuffer, VkOpticalFlowSessionNV session, const VkOpticalFlowExecuteInfoNV* pExecuteInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceOpticalFlowImageFormatsNV( + VkPhysicalDevice physicalDevice, + const VkOpticalFlowImageFormatInfoNV* pOpticalFlowImageFormatInfo, + uint32_t* pFormatCount, + VkOpticalFlowImageFormatPropertiesNV* pImageFormatProperties); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateOpticalFlowSessionNV( + VkDevice device, + const VkOpticalFlowSessionCreateInfoNV* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkOpticalFlowSessionNV* pSession); + +VKAPI_ATTR void VKAPI_CALL vkDestroyOpticalFlowSessionNV( + VkDevice device, + VkOpticalFlowSessionNV session, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkBindOpticalFlowSessionImageNV( + VkDevice device, + VkOpticalFlowSessionNV session, + VkOpticalFlowSessionBindingPointNV bindingPoint, + VkImageView view, + VkImageLayout layout); + +VKAPI_ATTR void VKAPI_CALL vkCmdOpticalFlowExecuteNV( + VkCommandBuffer commandBuffer, + VkOpticalFlowSessionNV session, + const VkOpticalFlowExecuteInfoNV* pExecuteInfo); +#endif + + +#define VK_EXT_legacy_dithering 1 +#define VK_EXT_LEGACY_DITHERING_SPEC_VERSION 1 +#define VK_EXT_LEGACY_DITHERING_EXTENSION_NAME "VK_EXT_legacy_dithering" +typedef struct VkPhysicalDeviceLegacyDitheringFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 legacyDithering; +} VkPhysicalDeviceLegacyDitheringFeaturesEXT; + + + +#define VK_EXT_pipeline_protected_access 1 +#define VK_EXT_PIPELINE_PROTECTED_ACCESS_SPEC_VERSION 1 +#define VK_EXT_PIPELINE_PROTECTED_ACCESS_EXTENSION_NAME "VK_EXT_pipeline_protected_access" +typedef struct VkPhysicalDevicePipelineProtectedAccessFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 pipelineProtectedAccess; +} VkPhysicalDevicePipelineProtectedAccessFeaturesEXT; + + + +#define VK_QCOM_tile_properties 1 +#define VK_QCOM_TILE_PROPERTIES_SPEC_VERSION 1 +#define VK_QCOM_TILE_PROPERTIES_EXTENSION_NAME "VK_QCOM_tile_properties" +typedef struct VkPhysicalDeviceTilePropertiesFeaturesQCOM { + VkStructureType sType; + void* pNext; + VkBool32 tileProperties; +} VkPhysicalDeviceTilePropertiesFeaturesQCOM; + +typedef struct VkTilePropertiesQCOM { + VkStructureType sType; + void* pNext; + VkExtent3D tileSize; + VkExtent2D apronSize; + VkOffset2D origin; +} VkTilePropertiesQCOM; + +typedef VkResult (VKAPI_PTR *PFN_vkGetFramebufferTilePropertiesQCOM)(VkDevice device, VkFramebuffer framebuffer, uint32_t* pPropertiesCount, VkTilePropertiesQCOM* pProperties); +typedef VkResult (VKAPI_PTR *PFN_vkGetDynamicRenderingTilePropertiesQCOM)(VkDevice device, const VkRenderingInfo* pRenderingInfo, VkTilePropertiesQCOM* pProperties); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetFramebufferTilePropertiesQCOM( + VkDevice device, + VkFramebuffer framebuffer, + uint32_t* pPropertiesCount, + VkTilePropertiesQCOM* pProperties); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetDynamicRenderingTilePropertiesQCOM( + VkDevice device, + const VkRenderingInfo* pRenderingInfo, + VkTilePropertiesQCOM* pProperties); +#endif + + +#define VK_SEC_amigo_profiling 1 +#define VK_SEC_AMIGO_PROFILING_SPEC_VERSION 1 +#define VK_SEC_AMIGO_PROFILING_EXTENSION_NAME "VK_SEC_amigo_profiling" +typedef struct VkPhysicalDeviceAmigoProfilingFeaturesSEC { + VkStructureType sType; + void* pNext; + VkBool32 amigoProfiling; +} VkPhysicalDeviceAmigoProfilingFeaturesSEC; + +typedef struct VkAmigoProfilingSubmitInfoSEC { + VkStructureType sType; + const void* pNext; + uint64_t firstDrawTimestamp; + uint64_t swapBufferTimestamp; +} VkAmigoProfilingSubmitInfoSEC; + + + +#define VK_QCOM_multiview_per_view_viewports 1 +#define VK_QCOM_MULTIVIEW_PER_VIEW_VIEWPORTS_SPEC_VERSION 1 +#define VK_QCOM_MULTIVIEW_PER_VIEW_VIEWPORTS_EXTENSION_NAME "VK_QCOM_multiview_per_view_viewports" +typedef struct VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM { + VkStructureType sType; + void* pNext; + VkBool32 multiviewPerViewViewports; +} VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM; + + + +#define VK_NV_ray_tracing_invocation_reorder 1 +#define VK_NV_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION 1 +#define VK_NV_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME "VK_NV_ray_tracing_invocation_reorder" + +typedef enum VkRayTracingInvocationReorderModeNV { + VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV = 0, + VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV = 1, + VK_RAY_TRACING_INVOCATION_REORDER_MODE_MAX_ENUM_NV = 0x7FFFFFFF +} VkRayTracingInvocationReorderModeNV; +typedef struct VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV { + VkStructureType sType; + void* pNext; + VkRayTracingInvocationReorderModeNV rayTracingInvocationReorderReorderingHint; +} VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV; + +typedef struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 rayTracingInvocationReorder; +} VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV; + + + +#define VK_EXT_mutable_descriptor_type 1 +#define VK_EXT_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION 1 +#define VK_EXT_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME "VK_EXT_mutable_descriptor_type" + + +#define VK_ARM_shader_core_builtins 1 +#define VK_ARM_SHADER_CORE_BUILTINS_SPEC_VERSION 2 +#define VK_ARM_SHADER_CORE_BUILTINS_EXTENSION_NAME "VK_ARM_shader_core_builtins" +typedef struct VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM { + VkStructureType sType; + void* pNext; + VkBool32 shaderCoreBuiltins; +} VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM; + +typedef struct VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM { + VkStructureType sType; + void* pNext; + uint64_t shaderCoreMask; + uint32_t shaderCoreCount; + uint32_t shaderWarpsPerCore; +} VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM; + + + +#define VK_EXT_pipeline_library_group_handles 1 +#define VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_SPEC_VERSION 1 +#define VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_EXTENSION_NAME "VK_EXT_pipeline_library_group_handles" +typedef struct VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 pipelineLibraryGroupHandles; +} VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT; + + + +#define VK_QCOM_multiview_per_view_render_areas 1 +#define VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_SPEC_VERSION 1 +#define VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_EXTENSION_NAME "VK_QCOM_multiview_per_view_render_areas" +typedef struct VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM { + VkStructureType sType; + void* pNext; + VkBool32 multiviewPerViewRenderAreas; +} VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM; + +typedef struct VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM { + VkStructureType sType; + const void* pNext; + uint32_t perViewRenderAreaCount; + const VkRect2D* pPerViewRenderAreas; +} VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM; + + + +#define VK_KHR_acceleration_structure 1 +#define VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION 13 +#define VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME "VK_KHR_acceleration_structure" + +typedef enum VkBuildAccelerationStructureModeKHR { + VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR = 0, + VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR = 1, + VK_BUILD_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkBuildAccelerationStructureModeKHR; + +typedef enum VkAccelerationStructureCreateFlagBitsKHR { + VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 0x00000001, + VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 0x00000008, + VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV = 0x00000004, + VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkAccelerationStructureCreateFlagBitsKHR; +typedef VkFlags VkAccelerationStructureCreateFlagsKHR; +typedef struct VkAccelerationStructureBuildRangeInfoKHR { + uint32_t primitiveCount; + uint32_t primitiveOffset; + uint32_t firstVertex; + uint32_t transformOffset; +} VkAccelerationStructureBuildRangeInfoKHR; + +typedef struct VkAccelerationStructureGeometryTrianglesDataKHR { + VkStructureType sType; + const void* pNext; + VkFormat vertexFormat; + VkDeviceOrHostAddressConstKHR vertexData; + VkDeviceSize vertexStride; + uint32_t maxVertex; + VkIndexType indexType; + VkDeviceOrHostAddressConstKHR indexData; + VkDeviceOrHostAddressConstKHR transformData; +} VkAccelerationStructureGeometryTrianglesDataKHR; + +typedef struct VkAccelerationStructureGeometryAabbsDataKHR { + VkStructureType sType; + const void* pNext; + VkDeviceOrHostAddressConstKHR data; + VkDeviceSize stride; +} VkAccelerationStructureGeometryAabbsDataKHR; + +typedef struct VkAccelerationStructureGeometryInstancesDataKHR { + VkStructureType sType; + const void* pNext; + VkBool32 arrayOfPointers; + VkDeviceOrHostAddressConstKHR data; +} VkAccelerationStructureGeometryInstancesDataKHR; + +typedef union VkAccelerationStructureGeometryDataKHR { + VkAccelerationStructureGeometryTrianglesDataKHR triangles; + VkAccelerationStructureGeometryAabbsDataKHR aabbs; + VkAccelerationStructureGeometryInstancesDataKHR instances; +} VkAccelerationStructureGeometryDataKHR; + +typedef struct VkAccelerationStructureGeometryKHR { + VkStructureType sType; + const void* pNext; + VkGeometryTypeKHR geometryType; + VkAccelerationStructureGeometryDataKHR geometry; + VkGeometryFlagsKHR flags; +} VkAccelerationStructureGeometryKHR; + +typedef struct VkAccelerationStructureBuildGeometryInfoKHR { + VkStructureType sType; + const void* pNext; + VkAccelerationStructureTypeKHR type; + VkBuildAccelerationStructureFlagsKHR flags; + VkBuildAccelerationStructureModeKHR mode; + VkAccelerationStructureKHR srcAccelerationStructure; + VkAccelerationStructureKHR dstAccelerationStructure; + uint32_t geometryCount; + const VkAccelerationStructureGeometryKHR* pGeometries; + const VkAccelerationStructureGeometryKHR* const* ppGeometries; + VkDeviceOrHostAddressKHR scratchData; +} VkAccelerationStructureBuildGeometryInfoKHR; + +typedef struct VkAccelerationStructureCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkAccelerationStructureCreateFlagsKHR createFlags; + VkBuffer buffer; + VkDeviceSize offset; + VkDeviceSize size; + VkAccelerationStructureTypeKHR type; + VkDeviceAddress deviceAddress; +} VkAccelerationStructureCreateInfoKHR; + +typedef struct VkWriteDescriptorSetAccelerationStructureKHR { + VkStructureType sType; + const void* pNext; + uint32_t accelerationStructureCount; + const VkAccelerationStructureKHR* pAccelerationStructures; +} VkWriteDescriptorSetAccelerationStructureKHR; + +typedef struct VkPhysicalDeviceAccelerationStructureFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 accelerationStructure; + VkBool32 accelerationStructureCaptureReplay; + VkBool32 accelerationStructureIndirectBuild; + VkBool32 accelerationStructureHostCommands; + VkBool32 descriptorBindingAccelerationStructureUpdateAfterBind; +} VkPhysicalDeviceAccelerationStructureFeaturesKHR; + +typedef struct VkPhysicalDeviceAccelerationStructurePropertiesKHR { + VkStructureType sType; + void* pNext; + uint64_t maxGeometryCount; + uint64_t maxInstanceCount; + uint64_t maxPrimitiveCount; + uint32_t maxPerStageDescriptorAccelerationStructures; + uint32_t maxPerStageDescriptorUpdateAfterBindAccelerationStructures; + uint32_t maxDescriptorSetAccelerationStructures; + uint32_t maxDescriptorSetUpdateAfterBindAccelerationStructures; + uint32_t minAccelerationStructureScratchOffsetAlignment; +} VkPhysicalDeviceAccelerationStructurePropertiesKHR; + +typedef struct VkAccelerationStructureDeviceAddressInfoKHR { + VkStructureType sType; + const void* pNext; + VkAccelerationStructureKHR accelerationStructure; +} VkAccelerationStructureDeviceAddressInfoKHR; + +typedef struct VkAccelerationStructureVersionInfoKHR { + VkStructureType sType; + const void* pNext; + const uint8_t* pVersionData; +} VkAccelerationStructureVersionInfoKHR; + +typedef struct VkCopyAccelerationStructureToMemoryInfoKHR { + VkStructureType sType; + const void* pNext; + VkAccelerationStructureKHR src; + VkDeviceOrHostAddressKHR dst; + VkCopyAccelerationStructureModeKHR mode; +} VkCopyAccelerationStructureToMemoryInfoKHR; + +typedef struct VkCopyMemoryToAccelerationStructureInfoKHR { + VkStructureType sType; + const void* pNext; + VkDeviceOrHostAddressConstKHR src; + VkAccelerationStructureKHR dst; + VkCopyAccelerationStructureModeKHR mode; +} VkCopyMemoryToAccelerationStructureInfoKHR; + +typedef struct VkCopyAccelerationStructureInfoKHR { + VkStructureType sType; + const void* pNext; + VkAccelerationStructureKHR src; + VkAccelerationStructureKHR dst; + VkCopyAccelerationStructureModeKHR mode; +} VkCopyAccelerationStructureInfoKHR; + +typedef struct VkAccelerationStructureBuildSizesInfoKHR { + VkStructureType sType; + const void* pNext; + VkDeviceSize accelerationStructureSize; + VkDeviceSize updateScratchSize; + VkDeviceSize buildScratchSize; +} VkAccelerationStructureBuildSizesInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateAccelerationStructureKHR)(VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure); +typedef void (VKAPI_PTR *PFN_vkDestroyAccelerationStructureKHR)(VkDevice device, VkAccelerationStructureKHR accelerationStructure, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkCmdBuildAccelerationStructuresKHR)(VkCommandBuffer commandBuffer, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos); +typedef void (VKAPI_PTR *PFN_vkCmdBuildAccelerationStructuresIndirectKHR)(VkCommandBuffer commandBuffer, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkDeviceAddress* pIndirectDeviceAddresses, const uint32_t* pIndirectStrides, const uint32_t* const* ppMaxPrimitiveCounts); +typedef VkResult (VKAPI_PTR *PFN_vkBuildAccelerationStructuresKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos); +typedef VkResult (VKAPI_PTR *PFN_vkCopyAccelerationStructureKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyAccelerationStructureInfoKHR* pInfo); +typedef VkResult (VKAPI_PTR *PFN_vkCopyAccelerationStructureToMemoryKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo); +typedef VkResult (VKAPI_PTR *PFN_vkCopyMemoryToAccelerationStructureKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo); +typedef VkResult (VKAPI_PTR *PFN_vkWriteAccelerationStructuresPropertiesKHR)(VkDevice device, uint32_t accelerationStructureCount, const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType queryType, size_t dataSize, void* pData, size_t stride); +typedef void (VKAPI_PTR *PFN_vkCmdCopyAccelerationStructureKHR)(VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureInfoKHR* pInfo); +typedef void (VKAPI_PTR *PFN_vkCmdCopyAccelerationStructureToMemoryKHR)(VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo); +typedef void (VKAPI_PTR *PFN_vkCmdCopyMemoryToAccelerationStructureKHR)(VkCommandBuffer commandBuffer, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo); +typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetAccelerationStructureDeviceAddressKHR)(VkDevice device, const VkAccelerationStructureDeviceAddressInfoKHR* pInfo); +typedef void (VKAPI_PTR *PFN_vkCmdWriteAccelerationStructuresPropertiesKHR)(VkCommandBuffer commandBuffer, uint32_t accelerationStructureCount, const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery); +typedef void (VKAPI_PTR *PFN_vkGetDeviceAccelerationStructureCompatibilityKHR)(VkDevice device, const VkAccelerationStructureVersionInfoKHR* pVersionInfo, VkAccelerationStructureCompatibilityKHR* pCompatibility); +typedef void (VKAPI_PTR *PFN_vkGetAccelerationStructureBuildSizesKHR)(VkDevice device, VkAccelerationStructureBuildTypeKHR buildType, const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo, const uint32_t* pMaxPrimitiveCounts, VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateAccelerationStructureKHR( + VkDevice device, + const VkAccelerationStructureCreateInfoKHR* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkAccelerationStructureKHR* pAccelerationStructure); + +VKAPI_ATTR void VKAPI_CALL vkDestroyAccelerationStructureKHR( + VkDevice device, + VkAccelerationStructureKHR accelerationStructure, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR void VKAPI_CALL vkCmdBuildAccelerationStructuresKHR( + VkCommandBuffer commandBuffer, + uint32_t infoCount, + const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, + const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos); + +VKAPI_ATTR void VKAPI_CALL vkCmdBuildAccelerationStructuresIndirectKHR( + VkCommandBuffer commandBuffer, + uint32_t infoCount, + const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, + const VkDeviceAddress* pIndirectDeviceAddresses, + const uint32_t* pIndirectStrides, + const uint32_t* const* ppMaxPrimitiveCounts); + +VKAPI_ATTR VkResult VKAPI_CALL vkBuildAccelerationStructuresKHR( + VkDevice device, + VkDeferredOperationKHR deferredOperation, + uint32_t infoCount, + const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, + const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos); + +VKAPI_ATTR VkResult VKAPI_CALL vkCopyAccelerationStructureKHR( + VkDevice device, + VkDeferredOperationKHR deferredOperation, + const VkCopyAccelerationStructureInfoKHR* pInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkCopyAccelerationStructureToMemoryKHR( + VkDevice device, + VkDeferredOperationKHR deferredOperation, + const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkCopyMemoryToAccelerationStructureKHR( + VkDevice device, + VkDeferredOperationKHR deferredOperation, + const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkWriteAccelerationStructuresPropertiesKHR( + VkDevice device, + uint32_t accelerationStructureCount, + const VkAccelerationStructureKHR* pAccelerationStructures, + VkQueryType queryType, + size_t dataSize, + void* pData, + size_t stride); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyAccelerationStructureKHR( + VkCommandBuffer commandBuffer, + const VkCopyAccelerationStructureInfoKHR* pInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyAccelerationStructureToMemoryKHR( + VkCommandBuffer commandBuffer, + const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyMemoryToAccelerationStructureKHR( + VkCommandBuffer commandBuffer, + const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo); + +VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetAccelerationStructureDeviceAddressKHR( + VkDevice device, + const VkAccelerationStructureDeviceAddressInfoKHR* pInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdWriteAccelerationStructuresPropertiesKHR( + VkCommandBuffer commandBuffer, + uint32_t accelerationStructureCount, + const VkAccelerationStructureKHR* pAccelerationStructures, + VkQueryType queryType, + VkQueryPool queryPool, + uint32_t firstQuery); + +VKAPI_ATTR void VKAPI_CALL vkGetDeviceAccelerationStructureCompatibilityKHR( + VkDevice device, + const VkAccelerationStructureVersionInfoKHR* pVersionInfo, + VkAccelerationStructureCompatibilityKHR* pCompatibility); + +VKAPI_ATTR void VKAPI_CALL vkGetAccelerationStructureBuildSizesKHR( + VkDevice device, + VkAccelerationStructureBuildTypeKHR buildType, + const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo, + const uint32_t* pMaxPrimitiveCounts, + VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo); +#endif + + +#define VK_KHR_ray_tracing_pipeline 1 +#define VK_KHR_RAY_TRACING_PIPELINE_SPEC_VERSION 1 +#define VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME "VK_KHR_ray_tracing_pipeline" + +typedef enum VkShaderGroupShaderKHR { + VK_SHADER_GROUP_SHADER_GENERAL_KHR = 0, + VK_SHADER_GROUP_SHADER_CLOSEST_HIT_KHR = 1, + VK_SHADER_GROUP_SHADER_ANY_HIT_KHR = 2, + VK_SHADER_GROUP_SHADER_INTERSECTION_KHR = 3, + VK_SHADER_GROUP_SHADER_MAX_ENUM_KHR = 0x7FFFFFFF +} VkShaderGroupShaderKHR; +typedef struct VkRayTracingShaderGroupCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkRayTracingShaderGroupTypeKHR type; + uint32_t generalShader; + uint32_t closestHitShader; + uint32_t anyHitShader; + uint32_t intersectionShader; + const void* pShaderGroupCaptureReplayHandle; +} VkRayTracingShaderGroupCreateInfoKHR; + +typedef struct VkRayTracingPipelineInterfaceCreateInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t maxPipelineRayPayloadSize; + uint32_t maxPipelineRayHitAttributeSize; +} VkRayTracingPipelineInterfaceCreateInfoKHR; + +typedef struct VkRayTracingPipelineCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkPipelineCreateFlags flags; + uint32_t stageCount; + const VkPipelineShaderStageCreateInfo* pStages; + uint32_t groupCount; + const VkRayTracingShaderGroupCreateInfoKHR* pGroups; + uint32_t maxPipelineRayRecursionDepth; + const VkPipelineLibraryCreateInfoKHR* pLibraryInfo; + const VkRayTracingPipelineInterfaceCreateInfoKHR* pLibraryInterface; + const VkPipelineDynamicStateCreateInfo* pDynamicState; + VkPipelineLayout layout; + VkPipeline basePipelineHandle; + int32_t basePipelineIndex; +} VkRayTracingPipelineCreateInfoKHR; + +typedef struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 rayTracingPipeline; + VkBool32 rayTracingPipelineShaderGroupHandleCaptureReplay; + VkBool32 rayTracingPipelineShaderGroupHandleCaptureReplayMixed; + VkBool32 rayTracingPipelineTraceRaysIndirect; + VkBool32 rayTraversalPrimitiveCulling; +} VkPhysicalDeviceRayTracingPipelineFeaturesKHR; + +typedef struct VkPhysicalDeviceRayTracingPipelinePropertiesKHR { + VkStructureType sType; + void* pNext; + uint32_t shaderGroupHandleSize; + uint32_t maxRayRecursionDepth; + uint32_t maxShaderGroupStride; + uint32_t shaderGroupBaseAlignment; + uint32_t shaderGroupHandleCaptureReplaySize; + uint32_t maxRayDispatchInvocationCount; + uint32_t shaderGroupHandleAlignment; + uint32_t maxRayHitAttributeSize; +} VkPhysicalDeviceRayTracingPipelinePropertiesKHR; + +typedef struct VkStridedDeviceAddressRegionKHR { + VkDeviceAddress deviceAddress; + VkDeviceSize stride; + VkDeviceSize size; +} VkStridedDeviceAddressRegionKHR; + +typedef struct VkTraceRaysIndirectCommandKHR { + uint32_t width; + uint32_t height; + uint32_t depth; +} VkTraceRaysIndirectCommandKHR; + +typedef void (VKAPI_PTR *PFN_vkCmdTraceRaysKHR)(VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, uint32_t width, uint32_t height, uint32_t depth); +typedef VkResult (VKAPI_PTR *PFN_vkCreateRayTracingPipelinesKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkRayTracingPipelineCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines); +typedef VkResult (VKAPI_PTR *PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR)(VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData); +typedef void (VKAPI_PTR *PFN_vkCmdTraceRaysIndirectKHR)(VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, VkDeviceAddress indirectDeviceAddress); +typedef VkDeviceSize (VKAPI_PTR *PFN_vkGetRayTracingShaderGroupStackSizeKHR)(VkDevice device, VkPipeline pipeline, uint32_t group, VkShaderGroupShaderKHR groupShader); +typedef void (VKAPI_PTR *PFN_vkCmdSetRayTracingPipelineStackSizeKHR)(VkCommandBuffer commandBuffer, uint32_t pipelineStackSize); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdTraceRaysKHR( + VkCommandBuffer commandBuffer, + const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, + const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, + const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, + const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, + uint32_t width, + uint32_t height, + uint32_t depth); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateRayTracingPipelinesKHR( + VkDevice device, + VkDeferredOperationKHR deferredOperation, + VkPipelineCache pipelineCache, + uint32_t createInfoCount, + const VkRayTracingPipelineCreateInfoKHR* pCreateInfos, + const VkAllocationCallbacks* pAllocator, + VkPipeline* pPipelines); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( + VkDevice device, + VkPipeline pipeline, + uint32_t firstGroup, + uint32_t groupCount, + size_t dataSize, + void* pData); + +VKAPI_ATTR void VKAPI_CALL vkCmdTraceRaysIndirectKHR( + VkCommandBuffer commandBuffer, + const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, + const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, + const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, + const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, + VkDeviceAddress indirectDeviceAddress); + +VKAPI_ATTR VkDeviceSize VKAPI_CALL vkGetRayTracingShaderGroupStackSizeKHR( + VkDevice device, + VkPipeline pipeline, + uint32_t group, + VkShaderGroupShaderKHR groupShader); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetRayTracingPipelineStackSizeKHR( + VkCommandBuffer commandBuffer, + uint32_t pipelineStackSize); +#endif + + +#define VK_KHR_ray_query 1 +#define VK_KHR_RAY_QUERY_SPEC_VERSION 1 +#define VK_KHR_RAY_QUERY_EXTENSION_NAME "VK_KHR_ray_query" +typedef struct VkPhysicalDeviceRayQueryFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 rayQuery; +} VkPhysicalDeviceRayQueryFeaturesKHR; + + + +#define VK_EXT_mesh_shader 1 +#define VK_EXT_MESH_SHADER_SPEC_VERSION 1 +#define VK_EXT_MESH_SHADER_EXTENSION_NAME "VK_EXT_mesh_shader" +typedef struct VkPhysicalDeviceMeshShaderFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 taskShader; + VkBool32 meshShader; + VkBool32 multiviewMeshShader; + VkBool32 primitiveFragmentShadingRateMeshShader; + VkBool32 meshShaderQueries; +} VkPhysicalDeviceMeshShaderFeaturesEXT; + +typedef struct VkPhysicalDeviceMeshShaderPropertiesEXT { + VkStructureType sType; + void* pNext; + uint32_t maxTaskWorkGroupTotalCount; + uint32_t maxTaskWorkGroupCount[3]; + uint32_t maxTaskWorkGroupInvocations; + uint32_t maxTaskWorkGroupSize[3]; + uint32_t maxTaskPayloadSize; + uint32_t maxTaskSharedMemorySize; + uint32_t maxTaskPayloadAndSharedMemorySize; + uint32_t maxMeshWorkGroupTotalCount; + uint32_t maxMeshWorkGroupCount[3]; + uint32_t maxMeshWorkGroupInvocations; + uint32_t maxMeshWorkGroupSize[3]; + uint32_t maxMeshSharedMemorySize; + uint32_t maxMeshPayloadAndSharedMemorySize; + uint32_t maxMeshOutputMemorySize; + uint32_t maxMeshPayloadAndOutputMemorySize; + uint32_t maxMeshOutputComponents; + uint32_t maxMeshOutputVertices; + uint32_t maxMeshOutputPrimitives; + uint32_t maxMeshOutputLayers; + uint32_t maxMeshMultiviewViewCount; + uint32_t meshOutputPerVertexGranularity; + uint32_t meshOutputPerPrimitiveGranularity; + uint32_t maxPreferredTaskWorkGroupInvocations; + uint32_t maxPreferredMeshWorkGroupInvocations; + VkBool32 prefersLocalInvocationVertexOutput; + VkBool32 prefersLocalInvocationPrimitiveOutput; + VkBool32 prefersCompactVertexOutput; + VkBool32 prefersCompactPrimitiveOutput; +} VkPhysicalDeviceMeshShaderPropertiesEXT; + +typedef struct VkDrawMeshTasksIndirectCommandEXT { + uint32_t groupCountX; + uint32_t groupCountY; + uint32_t groupCountZ; +} VkDrawMeshTasksIndirectCommandEXT; + +typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksEXT)(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ); +typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksIndirectEXT)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride); +typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksIndirectCountEXT)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksEXT( + VkCommandBuffer commandBuffer, + uint32_t groupCountX, + uint32_t groupCountY, + uint32_t groupCountZ); + +VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksIndirectEXT( + VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + uint32_t drawCount, + uint32_t stride); + +VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksIndirectCountEXT( + VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkBuffer countBuffer, + VkDeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride); +#endif + #ifdef __cplusplus } #endif diff --git a/3rdparty/include/vulkan/vulkan_directfb.h b/3rdparty/include/vulkan/vulkan_directfb.h new file mode 100644 index 0000000000..81d22fa7a4 --- /dev/null +++ b/3rdparty/include/vulkan/vulkan_directfb.h @@ -0,0 +1,54 @@ +#ifndef VULKAN_DIRECTFB_H_ +#define VULKAN_DIRECTFB_H_ 1 + +/* +** Copyright 2015-2023 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +#define VK_EXT_directfb_surface 1 +#define VK_EXT_DIRECTFB_SURFACE_SPEC_VERSION 1 +#define VK_EXT_DIRECTFB_SURFACE_EXTENSION_NAME "VK_EXT_directfb_surface" +typedef VkFlags VkDirectFBSurfaceCreateFlagsEXT; +typedef struct VkDirectFBSurfaceCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkDirectFBSurfaceCreateFlagsEXT flags; + IDirectFB* dfb; + IDirectFBSurface* surface; +} VkDirectFBSurfaceCreateInfoEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateDirectFBSurfaceEXT)(VkInstance instance, const VkDirectFBSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); +typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, IDirectFB* dfb); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDirectFBSurfaceEXT( + VkInstance instance, + const VkDirectFBSurfaceCreateInfoEXT* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSurfaceKHR* pSurface); + +VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceDirectFBPresentationSupportEXT( + VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + IDirectFB* dfb); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/3rdparty/include/vulkan/vulkan_fuchsia.h b/3rdparty/include/vulkan/vulkan_fuchsia.h index e0ed5455ad..c11d9e65b5 100644 --- a/3rdparty/include/vulkan/vulkan_fuchsia.h +++ b/3rdparty/include/vulkan/vulkan_fuchsia.h @@ -1,24 +1,10 @@ #ifndef VULKAN_FUCHSIA_H_ #define VULKAN_FUCHSIA_H_ 1 -#ifdef __cplusplus -extern "C" { -#endif - /* -** Copyright (c) 2015-2018 The Khronos Group Inc. +** Copyright 2015-2023 The Khronos Group Inc. ** -** 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. +** SPDX-License-Identifier: Apache-2.0 */ /* @@ -27,12 +13,16 @@ extern "C" { */ +#ifdef __cplusplus +extern "C" { +#endif + + + #define VK_FUCHSIA_imagepipe_surface 1 #define VK_FUCHSIA_IMAGEPIPE_SURFACE_SPEC_VERSION 1 #define VK_FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME "VK_FUCHSIA_imagepipe_surface" - typedef VkFlags VkImagePipeSurfaceCreateFlagsFUCHSIA; - typedef struct VkImagePipeSurfaceCreateInfoFUCHSIA { VkStructureType sType; const void* pNext; @@ -40,7 +30,6 @@ typedef struct VkImagePipeSurfaceCreateInfoFUCHSIA { zx_handle_t imagePipeHandle; } VkImagePipeSurfaceCreateInfoFUCHSIA; - typedef VkResult (VKAPI_PTR *PFN_vkCreateImagePipeSurfaceFUCHSIA)(VkInstance instance, const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); #ifndef VK_NO_PROTOTYPES @@ -51,6 +40,217 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateImagePipeSurfaceFUCHSIA( VkSurfaceKHR* pSurface); #endif + +#define VK_FUCHSIA_external_memory 1 +#define VK_FUCHSIA_EXTERNAL_MEMORY_SPEC_VERSION 1 +#define VK_FUCHSIA_EXTERNAL_MEMORY_EXTENSION_NAME "VK_FUCHSIA_external_memory" +typedef struct VkImportMemoryZirconHandleInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + VkExternalMemoryHandleTypeFlagBits handleType; + zx_handle_t handle; +} VkImportMemoryZirconHandleInfoFUCHSIA; + +typedef struct VkMemoryZirconHandlePropertiesFUCHSIA { + VkStructureType sType; + void* pNext; + uint32_t memoryTypeBits; +} VkMemoryZirconHandlePropertiesFUCHSIA; + +typedef struct VkMemoryGetZirconHandleInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + VkDeviceMemory memory; + VkExternalMemoryHandleTypeFlagBits handleType; +} VkMemoryGetZirconHandleInfoFUCHSIA; + +typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryZirconHandleFUCHSIA)(VkDevice device, const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, zx_handle_t* pZirconHandle); +typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, zx_handle_t zirconHandle, VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryZirconHandleFUCHSIA( + VkDevice device, + const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, + zx_handle_t* pZirconHandle); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryZirconHandlePropertiesFUCHSIA( + VkDevice device, + VkExternalMemoryHandleTypeFlagBits handleType, + zx_handle_t zirconHandle, + VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties); +#endif + + +#define VK_FUCHSIA_external_semaphore 1 +#define VK_FUCHSIA_EXTERNAL_SEMAPHORE_SPEC_VERSION 1 +#define VK_FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME "VK_FUCHSIA_external_semaphore" +typedef struct VkImportSemaphoreZirconHandleInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + VkSemaphore semaphore; + VkSemaphoreImportFlags flags; + VkExternalSemaphoreHandleTypeFlagBits handleType; + zx_handle_t zirconHandle; +} VkImportSemaphoreZirconHandleInfoFUCHSIA; + +typedef struct VkSemaphoreGetZirconHandleInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + VkSemaphore semaphore; + VkExternalSemaphoreHandleTypeFlagBits handleType; +} VkSemaphoreGetZirconHandleInfoFUCHSIA; + +typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreZirconHandleFUCHSIA)(VkDevice device, const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo); +typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreZirconHandleFUCHSIA)(VkDevice device, const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, zx_handle_t* pZirconHandle); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreZirconHandleFUCHSIA( + VkDevice device, + const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreZirconHandleFUCHSIA( + VkDevice device, + const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, + zx_handle_t* pZirconHandle); +#endif + + +#define VK_FUCHSIA_buffer_collection 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferCollectionFUCHSIA) +#define VK_FUCHSIA_BUFFER_COLLECTION_SPEC_VERSION 2 +#define VK_FUCHSIA_BUFFER_COLLECTION_EXTENSION_NAME "VK_FUCHSIA_buffer_collection" +typedef VkFlags VkImageFormatConstraintsFlagsFUCHSIA; + +typedef enum VkImageConstraintsInfoFlagBitsFUCHSIA { + VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_RARELY_FUCHSIA = 0x00000001, + VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_OFTEN_FUCHSIA = 0x00000002, + VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_RARELY_FUCHSIA = 0x00000004, + VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_OFTEN_FUCHSIA = 0x00000008, + VK_IMAGE_CONSTRAINTS_INFO_PROTECTED_OPTIONAL_FUCHSIA = 0x00000010, + VK_IMAGE_CONSTRAINTS_INFO_FLAG_BITS_MAX_ENUM_FUCHSIA = 0x7FFFFFFF +} VkImageConstraintsInfoFlagBitsFUCHSIA; +typedef VkFlags VkImageConstraintsInfoFlagsFUCHSIA; +typedef struct VkBufferCollectionCreateInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + zx_handle_t collectionToken; +} VkBufferCollectionCreateInfoFUCHSIA; + +typedef struct VkImportMemoryBufferCollectionFUCHSIA { + VkStructureType sType; + const void* pNext; + VkBufferCollectionFUCHSIA collection; + uint32_t index; +} VkImportMemoryBufferCollectionFUCHSIA; + +typedef struct VkBufferCollectionImageCreateInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + VkBufferCollectionFUCHSIA collection; + uint32_t index; +} VkBufferCollectionImageCreateInfoFUCHSIA; + +typedef struct VkBufferCollectionConstraintsInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + uint32_t minBufferCount; + uint32_t maxBufferCount; + uint32_t minBufferCountForCamping; + uint32_t minBufferCountForDedicatedSlack; + uint32_t minBufferCountForSharedSlack; +} VkBufferCollectionConstraintsInfoFUCHSIA; + +typedef struct VkBufferConstraintsInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + VkBufferCreateInfo createInfo; + VkFormatFeatureFlags requiredFormatFeatures; + VkBufferCollectionConstraintsInfoFUCHSIA bufferCollectionConstraints; +} VkBufferConstraintsInfoFUCHSIA; + +typedef struct VkBufferCollectionBufferCreateInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + VkBufferCollectionFUCHSIA collection; + uint32_t index; +} VkBufferCollectionBufferCreateInfoFUCHSIA; + +typedef struct VkSysmemColorSpaceFUCHSIA { + VkStructureType sType; + const void* pNext; + uint32_t colorSpace; +} VkSysmemColorSpaceFUCHSIA; + +typedef struct VkBufferCollectionPropertiesFUCHSIA { + VkStructureType sType; + void* pNext; + uint32_t memoryTypeBits; + uint32_t bufferCount; + uint32_t createInfoIndex; + uint64_t sysmemPixelFormat; + VkFormatFeatureFlags formatFeatures; + VkSysmemColorSpaceFUCHSIA sysmemColorSpaceIndex; + VkComponentMapping samplerYcbcrConversionComponents; + VkSamplerYcbcrModelConversion suggestedYcbcrModel; + VkSamplerYcbcrRange suggestedYcbcrRange; + VkChromaLocation suggestedXChromaOffset; + VkChromaLocation suggestedYChromaOffset; +} VkBufferCollectionPropertiesFUCHSIA; + +typedef struct VkImageFormatConstraintsInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + VkImageCreateInfo imageCreateInfo; + VkFormatFeatureFlags requiredFormatFeatures; + VkImageFormatConstraintsFlagsFUCHSIA flags; + uint64_t sysmemPixelFormat; + uint32_t colorSpaceCount; + const VkSysmemColorSpaceFUCHSIA* pColorSpaces; +} VkImageFormatConstraintsInfoFUCHSIA; + +typedef struct VkImageConstraintsInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + uint32_t formatConstraintsCount; + const VkImageFormatConstraintsInfoFUCHSIA* pFormatConstraints; + VkBufferCollectionConstraintsInfoFUCHSIA bufferCollectionConstraints; + VkImageConstraintsInfoFlagsFUCHSIA flags; +} VkImageConstraintsInfoFUCHSIA; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateBufferCollectionFUCHSIA)(VkDevice device, const VkBufferCollectionCreateInfoFUCHSIA* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferCollectionFUCHSIA* pCollection); +typedef VkResult (VKAPI_PTR *PFN_vkSetBufferCollectionImageConstraintsFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo); +typedef VkResult (VKAPI_PTR *PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo); +typedef void (VKAPI_PTR *PFN_vkDestroyBufferCollectionFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkGetBufferCollectionPropertiesFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, VkBufferCollectionPropertiesFUCHSIA* pProperties); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateBufferCollectionFUCHSIA( + VkDevice device, + const VkBufferCollectionCreateInfoFUCHSIA* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkBufferCollectionFUCHSIA* pCollection); + +VKAPI_ATTR VkResult VKAPI_CALL vkSetBufferCollectionImageConstraintsFUCHSIA( + VkDevice device, + VkBufferCollectionFUCHSIA collection, + const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkSetBufferCollectionBufferConstraintsFUCHSIA( + VkDevice device, + VkBufferCollectionFUCHSIA collection, + const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo); + +VKAPI_ATTR void VKAPI_CALL vkDestroyBufferCollectionFUCHSIA( + VkDevice device, + VkBufferCollectionFUCHSIA collection, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetBufferCollectionPropertiesFUCHSIA( + VkDevice device, + VkBufferCollectionFUCHSIA collection, + VkBufferCollectionPropertiesFUCHSIA* pProperties); +#endif + #ifdef __cplusplus } #endif diff --git a/3rdparty/include/vulkan/vulkan_ggp.h b/3rdparty/include/vulkan/vulkan_ggp.h new file mode 100644 index 0000000000..2c0d5edf10 --- /dev/null +++ b/3rdparty/include/vulkan/vulkan_ggp.h @@ -0,0 +1,58 @@ +#ifndef VULKAN_GGP_H_ +#define VULKAN_GGP_H_ 1 + +/* +** Copyright 2015-2023 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +#define VK_GGP_stream_descriptor_surface 1 +#define VK_GGP_STREAM_DESCRIPTOR_SURFACE_SPEC_VERSION 1 +#define VK_GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME "VK_GGP_stream_descriptor_surface" +typedef VkFlags VkStreamDescriptorSurfaceCreateFlagsGGP; +typedef struct VkStreamDescriptorSurfaceCreateInfoGGP { + VkStructureType sType; + const void* pNext; + VkStreamDescriptorSurfaceCreateFlagsGGP flags; + GgpStreamDescriptor streamDescriptor; +} VkStreamDescriptorSurfaceCreateInfoGGP; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateStreamDescriptorSurfaceGGP)(VkInstance instance, const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateStreamDescriptorSurfaceGGP( + VkInstance instance, + const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSurfaceKHR* pSurface); +#endif + + +#define VK_GGP_frame_token 1 +#define VK_GGP_FRAME_TOKEN_SPEC_VERSION 1 +#define VK_GGP_FRAME_TOKEN_EXTENSION_NAME "VK_GGP_frame_token" +typedef struct VkPresentFrameTokenGGP { + VkStructureType sType; + const void* pNext; + GgpFrameToken frameToken; +} VkPresentFrameTokenGGP; + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/3rdparty/include/vulkan/vulkan_ios.h b/3rdparty/include/vulkan/vulkan_ios.h index a0924816d5..8c6d9e72a5 100644 --- a/3rdparty/include/vulkan/vulkan_ios.h +++ b/3rdparty/include/vulkan/vulkan_ios.h @@ -1,24 +1,10 @@ #ifndef VULKAN_IOS_H_ #define VULKAN_IOS_H_ 1 -#ifdef __cplusplus -extern "C" { -#endif - /* -** Copyright (c) 2015-2018 The Khronos Group Inc. +** Copyright 2015-2023 The Khronos Group Inc. ** -** 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. +** SPDX-License-Identifier: Apache-2.0 */ /* @@ -27,12 +13,16 @@ extern "C" { */ +#ifdef __cplusplus +extern "C" { +#endif + + + #define VK_MVK_ios_surface 1 -#define VK_MVK_IOS_SURFACE_SPEC_VERSION 2 +#define VK_MVK_IOS_SURFACE_SPEC_VERSION 3 #define VK_MVK_IOS_SURFACE_EXTENSION_NAME "VK_MVK_ios_surface" - typedef VkFlags VkIOSSurfaceCreateFlagsMVK; - typedef struct VkIOSSurfaceCreateInfoMVK { VkStructureType sType; const void* pNext; @@ -40,7 +30,6 @@ typedef struct VkIOSSurfaceCreateInfoMVK { const void* pView; } VkIOSSurfaceCreateInfoMVK; - typedef VkResult (VKAPI_PTR *PFN_vkCreateIOSSurfaceMVK)(VkInstance instance, const VkIOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); #ifndef VK_NO_PROTOTYPES diff --git a/3rdparty/include/vulkan/vulkan_macos.h b/3rdparty/include/vulkan/vulkan_macos.h index ff0b701801..3310e11ab5 100644 --- a/3rdparty/include/vulkan/vulkan_macos.h +++ b/3rdparty/include/vulkan/vulkan_macos.h @@ -1,24 +1,10 @@ #ifndef VULKAN_MACOS_H_ #define VULKAN_MACOS_H_ 1 -#ifdef __cplusplus -extern "C" { -#endif - /* -** Copyright (c) 2015-2018 The Khronos Group Inc. +** Copyright 2015-2023 The Khronos Group Inc. ** -** 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. +** SPDX-License-Identifier: Apache-2.0 */ /* @@ -27,12 +13,16 @@ extern "C" { */ +#ifdef __cplusplus +extern "C" { +#endif + + + #define VK_MVK_macos_surface 1 -#define VK_MVK_MACOS_SURFACE_SPEC_VERSION 2 +#define VK_MVK_MACOS_SURFACE_SPEC_VERSION 3 #define VK_MVK_MACOS_SURFACE_EXTENSION_NAME "VK_MVK_macos_surface" - typedef VkFlags VkMacOSSurfaceCreateFlagsMVK; - typedef struct VkMacOSSurfaceCreateInfoMVK { VkStructureType sType; const void* pNext; @@ -40,7 +30,6 @@ typedef struct VkMacOSSurfaceCreateInfoMVK { const void* pView; } VkMacOSSurfaceCreateInfoMVK; - typedef VkResult (VKAPI_PTR *PFN_vkCreateMacOSSurfaceMVK)(VkInstance instance, const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); #ifndef VK_NO_PROTOTYPES diff --git a/3rdparty/include/vulkan/vulkan_metal.h b/3rdparty/include/vulkan/vulkan_metal.h new file mode 100644 index 0000000000..7127651c1d --- /dev/null +++ b/3rdparty/include/vulkan/vulkan_metal.h @@ -0,0 +1,193 @@ +#ifndef VULKAN_METAL_H_ +#define VULKAN_METAL_H_ 1 + +/* +** Copyright 2015-2023 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +#define VK_EXT_metal_surface 1 +#ifdef __OBJC__ +@class CAMetalLayer; +#else +typedef void CAMetalLayer; +#endif + +#define VK_EXT_METAL_SURFACE_SPEC_VERSION 1 +#define VK_EXT_METAL_SURFACE_EXTENSION_NAME "VK_EXT_metal_surface" +typedef VkFlags VkMetalSurfaceCreateFlagsEXT; +typedef struct VkMetalSurfaceCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkMetalSurfaceCreateFlagsEXT flags; + const CAMetalLayer* pLayer; +} VkMetalSurfaceCreateInfoEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateMetalSurfaceEXT)(VkInstance instance, const VkMetalSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateMetalSurfaceEXT( + VkInstance instance, + const VkMetalSurfaceCreateInfoEXT* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSurfaceKHR* pSurface); +#endif + + +#define VK_EXT_metal_objects 1 +#ifdef __OBJC__ +@protocol MTLDevice; +typedef id MTLDevice_id; +#else +typedef void* MTLDevice_id; +#endif + +#ifdef __OBJC__ +@protocol MTLCommandQueue; +typedef id MTLCommandQueue_id; +#else +typedef void* MTLCommandQueue_id; +#endif + +#ifdef __OBJC__ +@protocol MTLBuffer; +typedef id MTLBuffer_id; +#else +typedef void* MTLBuffer_id; +#endif + +#ifdef __OBJC__ +@protocol MTLTexture; +typedef id MTLTexture_id; +#else +typedef void* MTLTexture_id; +#endif + +typedef struct __IOSurface* IOSurfaceRef; +#ifdef __OBJC__ +@protocol MTLSharedEvent; +typedef id MTLSharedEvent_id; +#else +typedef void* MTLSharedEvent_id; +#endif + +#define VK_EXT_METAL_OBJECTS_SPEC_VERSION 1 +#define VK_EXT_METAL_OBJECTS_EXTENSION_NAME "VK_EXT_metal_objects" + +typedef enum VkExportMetalObjectTypeFlagBitsEXT { + VK_EXPORT_METAL_OBJECT_TYPE_METAL_DEVICE_BIT_EXT = 0x00000001, + VK_EXPORT_METAL_OBJECT_TYPE_METAL_COMMAND_QUEUE_BIT_EXT = 0x00000002, + VK_EXPORT_METAL_OBJECT_TYPE_METAL_BUFFER_BIT_EXT = 0x00000004, + VK_EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT = 0x00000008, + VK_EXPORT_METAL_OBJECT_TYPE_METAL_IOSURFACE_BIT_EXT = 0x00000010, + VK_EXPORT_METAL_OBJECT_TYPE_METAL_SHARED_EVENT_BIT_EXT = 0x00000020, + VK_EXPORT_METAL_OBJECT_TYPE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkExportMetalObjectTypeFlagBitsEXT; +typedef VkFlags VkExportMetalObjectTypeFlagsEXT; +typedef struct VkExportMetalObjectCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkExportMetalObjectTypeFlagBitsEXT exportObjectType; +} VkExportMetalObjectCreateInfoEXT; + +typedef struct VkExportMetalObjectsInfoEXT { + VkStructureType sType; + const void* pNext; +} VkExportMetalObjectsInfoEXT; + +typedef struct VkExportMetalDeviceInfoEXT { + VkStructureType sType; + const void* pNext; + MTLDevice_id mtlDevice; +} VkExportMetalDeviceInfoEXT; + +typedef struct VkExportMetalCommandQueueInfoEXT { + VkStructureType sType; + const void* pNext; + VkQueue queue; + MTLCommandQueue_id mtlCommandQueue; +} VkExportMetalCommandQueueInfoEXT; + +typedef struct VkExportMetalBufferInfoEXT { + VkStructureType sType; + const void* pNext; + VkDeviceMemory memory; + MTLBuffer_id mtlBuffer; +} VkExportMetalBufferInfoEXT; + +typedef struct VkImportMetalBufferInfoEXT { + VkStructureType sType; + const void* pNext; + MTLBuffer_id mtlBuffer; +} VkImportMetalBufferInfoEXT; + +typedef struct VkExportMetalTextureInfoEXT { + VkStructureType sType; + const void* pNext; + VkImage image; + VkImageView imageView; + VkBufferView bufferView; + VkImageAspectFlagBits plane; + MTLTexture_id mtlTexture; +} VkExportMetalTextureInfoEXT; + +typedef struct VkImportMetalTextureInfoEXT { + VkStructureType sType; + const void* pNext; + VkImageAspectFlagBits plane; + MTLTexture_id mtlTexture; +} VkImportMetalTextureInfoEXT; + +typedef struct VkExportMetalIOSurfaceInfoEXT { + VkStructureType sType; + const void* pNext; + VkImage image; + IOSurfaceRef ioSurface; +} VkExportMetalIOSurfaceInfoEXT; + +typedef struct VkImportMetalIOSurfaceInfoEXT { + VkStructureType sType; + const void* pNext; + IOSurfaceRef ioSurface; +} VkImportMetalIOSurfaceInfoEXT; + +typedef struct VkExportMetalSharedEventInfoEXT { + VkStructureType sType; + const void* pNext; + VkSemaphore semaphore; + VkEvent event; + MTLSharedEvent_id mtlSharedEvent; +} VkExportMetalSharedEventInfoEXT; + +typedef struct VkImportMetalSharedEventInfoEXT { + VkStructureType sType; + const void* pNext; + MTLSharedEvent_id mtlSharedEvent; +} VkImportMetalSharedEventInfoEXT; + +typedef void (VKAPI_PTR *PFN_vkExportMetalObjectsEXT)(VkDevice device, VkExportMetalObjectsInfoEXT* pMetalObjectsInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkExportMetalObjectsEXT( + VkDevice device, + VkExportMetalObjectsInfoEXT* pMetalObjectsInfo); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/3rdparty/include/vulkan/vulkan_mir.h b/3rdparty/include/vulkan/vulkan_mir.h deleted file mode 100644 index 7d24ed27a3..0000000000 --- a/3rdparty/include/vulkan/vulkan_mir.h +++ /dev/null @@ -1,65 +0,0 @@ -#ifndef VULKAN_MIR_H_ -#define VULKAN_MIR_H_ 1 - -#ifdef __cplusplus -extern "C" { -#endif - -/* -** Copyright (c) 2015-2018 The Khronos Group Inc. -** -** 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. -*/ - -/* -** This header is generated from the Khronos Vulkan XML API Registry. -** -*/ - - -#define VK_KHR_mir_surface 1 -#define VK_KHR_MIR_SURFACE_SPEC_VERSION 4 -#define VK_KHR_MIR_SURFACE_EXTENSION_NAME "VK_KHR_mir_surface" - -typedef VkFlags VkMirSurfaceCreateFlagsKHR; - -typedef struct VkMirSurfaceCreateInfoKHR { - VkStructureType sType; - const void* pNext; - VkMirSurfaceCreateFlagsKHR flags; - MirConnection* connection; - MirSurface* mirSurface; -} VkMirSurfaceCreateInfoKHR; - - -typedef VkResult (VKAPI_PTR *PFN_vkCreateMirSurfaceKHR)(VkInstance instance, const VkMirSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); -typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceMirPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, MirConnection* connection); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkCreateMirSurfaceKHR( - VkInstance instance, - const VkMirSurfaceCreateInfoKHR* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkSurfaceKHR* pSurface); - -VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceMirPresentationSupportKHR( - VkPhysicalDevice physicalDevice, - uint32_t queueFamilyIndex, - MirConnection* connection); -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/3rdparty/include/vulkan/vulkan_screen.h b/3rdparty/include/vulkan/vulkan_screen.h new file mode 100644 index 0000000000..1067c04634 --- /dev/null +++ b/3rdparty/include/vulkan/vulkan_screen.h @@ -0,0 +1,54 @@ +#ifndef VULKAN_SCREEN_H_ +#define VULKAN_SCREEN_H_ 1 + +/* +** Copyright 2015-2023 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +#define VK_QNX_screen_surface 1 +#define VK_QNX_SCREEN_SURFACE_SPEC_VERSION 1 +#define VK_QNX_SCREEN_SURFACE_EXTENSION_NAME "VK_QNX_screen_surface" +typedef VkFlags VkScreenSurfaceCreateFlagsQNX; +typedef struct VkScreenSurfaceCreateInfoQNX { + VkStructureType sType; + const void* pNext; + VkScreenSurfaceCreateFlagsQNX flags; + struct _screen_context* context; + struct _screen_window* window; +} VkScreenSurfaceCreateInfoQNX; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateScreenSurfaceQNX)(VkInstance instance, const VkScreenSurfaceCreateInfoQNX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); +typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, struct _screen_window* window); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateScreenSurfaceQNX( + VkInstance instance, + const VkScreenSurfaceCreateInfoQNX* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSurfaceKHR* pSurface); + +VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceScreenPresentationSupportQNX( + VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + struct _screen_window* window); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/3rdparty/include/vulkan/vulkan_vi.h b/3rdparty/include/vulkan/vulkan_vi.h index 015166bfc6..6726470533 100644 --- a/3rdparty/include/vulkan/vulkan_vi.h +++ b/3rdparty/include/vulkan/vulkan_vi.h @@ -1,24 +1,10 @@ #ifndef VULKAN_VI_H_ #define VULKAN_VI_H_ 1 -#ifdef __cplusplus -extern "C" { -#endif - /* -** Copyright (c) 2015-2018 The Khronos Group Inc. +** Copyright 2015-2023 The Khronos Group Inc. ** -** 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. +** SPDX-License-Identifier: Apache-2.0 */ /* @@ -27,12 +13,16 @@ extern "C" { */ +#ifdef __cplusplus +extern "C" { +#endif + + + #define VK_NN_vi_surface 1 #define VK_NN_VI_SURFACE_SPEC_VERSION 1 #define VK_NN_VI_SURFACE_EXTENSION_NAME "VK_NN_vi_surface" - typedef VkFlags VkViSurfaceCreateFlagsNN; - typedef struct VkViSurfaceCreateInfoNN { VkStructureType sType; const void* pNext; @@ -40,7 +30,6 @@ typedef struct VkViSurfaceCreateInfoNN { void* window; } VkViSurfaceCreateInfoNN; - typedef VkResult (VKAPI_PTR *PFN_vkCreateViSurfaceNN)(VkInstance instance, const VkViSurfaceCreateInfoNN* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); #ifndef VK_NO_PROTOTYPES diff --git a/3rdparty/include/vulkan/vulkan_wayland.h b/3rdparty/include/vulkan/vulkan_wayland.h index 5ba0827aa3..42b2801849 100644 --- a/3rdparty/include/vulkan/vulkan_wayland.h +++ b/3rdparty/include/vulkan/vulkan_wayland.h @@ -1,24 +1,10 @@ #ifndef VULKAN_WAYLAND_H_ #define VULKAN_WAYLAND_H_ 1 -#ifdef __cplusplus -extern "C" { -#endif - /* -** Copyright (c) 2015-2018 The Khronos Group Inc. +** Copyright 2015-2023 The Khronos Group Inc. ** -** 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. +** SPDX-License-Identifier: Apache-2.0 */ /* @@ -27,12 +13,16 @@ extern "C" { */ +#ifdef __cplusplus +extern "C" { +#endif + + + #define VK_KHR_wayland_surface 1 #define VK_KHR_WAYLAND_SURFACE_SPEC_VERSION 6 #define VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME "VK_KHR_wayland_surface" - typedef VkFlags VkWaylandSurfaceCreateFlagsKHR; - typedef struct VkWaylandSurfaceCreateInfoKHR { VkStructureType sType; const void* pNext; @@ -41,7 +31,6 @@ typedef struct VkWaylandSurfaceCreateInfoKHR { struct wl_surface* surface; } VkWaylandSurfaceCreateInfoKHR; - typedef VkResult (VKAPI_PTR *PFN_vkCreateWaylandSurfaceKHR)(VkInstance instance, const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, struct wl_display* display); diff --git a/3rdparty/include/vulkan/vulkan_win32.h b/3rdparty/include/vulkan/vulkan_win32.h index 6a85409ebe..5b65a36a6d 100644 --- a/3rdparty/include/vulkan/vulkan_win32.h +++ b/3rdparty/include/vulkan/vulkan_win32.h @@ -1,24 +1,10 @@ #ifndef VULKAN_WIN32_H_ #define VULKAN_WIN32_H_ 1 -#ifdef __cplusplus -extern "C" { -#endif - /* -** Copyright (c) 2015-2018 The Khronos Group Inc. +** Copyright 2015-2023 The Khronos Group Inc. ** -** 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. +** SPDX-License-Identifier: Apache-2.0 */ /* @@ -27,12 +13,16 @@ extern "C" { */ +#ifdef __cplusplus +extern "C" { +#endif + + + #define VK_KHR_win32_surface 1 #define VK_KHR_WIN32_SURFACE_SPEC_VERSION 6 #define VK_KHR_WIN32_SURFACE_EXTENSION_NAME "VK_KHR_win32_surface" - typedef VkFlags VkWin32SurfaceCreateFlagsKHR; - typedef struct VkWin32SurfaceCreateInfoKHR { VkStructureType sType; const void* pNext; @@ -41,7 +31,6 @@ typedef struct VkWin32SurfaceCreateInfoKHR { HWND hwnd; } VkWin32SurfaceCreateInfoKHR; - typedef VkResult (VKAPI_PTR *PFN_vkCreateWin32SurfaceKHR)(VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex); @@ -57,10 +46,10 @@ VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceWin32PresentationSupportKHR( uint32_t queueFamilyIndex); #endif + #define VK_KHR_external_memory_win32 1 #define VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1 #define VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_KHR_external_memory_win32" - typedef struct VkImportMemoryWin32HandleInfoKHR { VkStructureType sType; const void* pNext; @@ -90,7 +79,6 @@ typedef struct VkMemoryGetWin32HandleInfoKHR { VkExternalMemoryHandleTypeFlagBits handleType; } VkMemoryGetWin32HandleInfoKHR; - typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandleKHR)(VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle); typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandlePropertiesKHR)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, HANDLE handle, VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties); @@ -107,10 +95,10 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandlePropertiesKHR( VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties); #endif + #define VK_KHR_win32_keyed_mutex 1 #define VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION 1 #define VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_KHR_win32_keyed_mutex" - typedef struct VkWin32KeyedMutexAcquireReleaseInfoKHR { VkStructureType sType; const void* pNext; @@ -128,7 +116,6 @@ typedef struct VkWin32KeyedMutexAcquireReleaseInfoKHR { #define VK_KHR_external_semaphore_win32 1 #define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION 1 #define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME "VK_KHR_external_semaphore_win32" - typedef struct VkImportSemaphoreWin32HandleInfoKHR { VkStructureType sType; const void* pNext; @@ -163,7 +150,6 @@ typedef struct VkSemaphoreGetWin32HandleInfoKHR { VkExternalSemaphoreHandleTypeFlagBits handleType; } VkSemaphoreGetWin32HandleInfoKHR; - typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreWin32HandleKHR)(VkDevice device, const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo); typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreWin32HandleKHR)(VkDevice device, const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle); @@ -178,10 +164,10 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreWin32HandleKHR( HANDLE* pHandle); #endif + #define VK_KHR_external_fence_win32 1 #define VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION 1 #define VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME "VK_KHR_external_fence_win32" - typedef struct VkImportFenceWin32HandleInfoKHR { VkStructureType sType; const void* pNext; @@ -207,7 +193,6 @@ typedef struct VkFenceGetWin32HandleInfoKHR { VkExternalFenceHandleTypeFlagBits handleType; } VkFenceGetWin32HandleInfoKHR; - typedef VkResult (VKAPI_PTR *PFN_vkImportFenceWin32HandleKHR)(VkDevice device, const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo); typedef VkResult (VKAPI_PTR *PFN_vkGetFenceWin32HandleKHR)(VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle); @@ -222,10 +207,10 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceWin32HandleKHR( HANDLE* pHandle); #endif + #define VK_NV_external_memory_win32 1 #define VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1 #define VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_NV_external_memory_win32" - typedef struct VkImportMemoryWin32HandleInfoNV { VkStructureType sType; const void* pNext; @@ -240,7 +225,6 @@ typedef struct VkExportMemoryWin32HandleInfoNV { DWORD dwAccess; } VkExportMemoryWin32HandleInfoNV; - typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandleNV)(VkDevice device, VkDeviceMemory memory, VkExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle); #ifndef VK_NO_PROTOTYPES @@ -251,10 +235,10 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandleNV( HANDLE* pHandle); #endif -#define VK_NV_win32_keyed_mutex 1 -#define VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION 1 -#define VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_NV_win32_keyed_mutex" +#define VK_NV_win32_keyed_mutex 1 +#define VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION 2 +#define VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_NV_win32_keyed_mutex" typedef struct VkWin32KeyedMutexAcquireReleaseInfoNV { VkStructureType sType; const void* pNext; @@ -269,6 +253,79 @@ typedef struct VkWin32KeyedMutexAcquireReleaseInfoNV { +#define VK_EXT_full_screen_exclusive 1 +#define VK_EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION 4 +#define VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME "VK_EXT_full_screen_exclusive" + +typedef enum VkFullScreenExclusiveEXT { + VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT = 0, + VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT = 1, + VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT = 2, + VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT = 3, + VK_FULL_SCREEN_EXCLUSIVE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkFullScreenExclusiveEXT; +typedef struct VkSurfaceFullScreenExclusiveInfoEXT { + VkStructureType sType; + void* pNext; + VkFullScreenExclusiveEXT fullScreenExclusive; +} VkSurfaceFullScreenExclusiveInfoEXT; + +typedef struct VkSurfaceCapabilitiesFullScreenExclusiveEXT { + VkStructureType sType; + void* pNext; + VkBool32 fullScreenExclusiveSupported; +} VkSurfaceCapabilitiesFullScreenExclusiveEXT; + +typedef struct VkSurfaceFullScreenExclusiveWin32InfoEXT { + VkStructureType sType; + const void* pNext; + HMONITOR hmonitor; +} VkSurfaceFullScreenExclusiveWin32InfoEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes); +typedef VkResult (VKAPI_PTR *PFN_vkAcquireFullScreenExclusiveModeEXT)(VkDevice device, VkSwapchainKHR swapchain); +typedef VkResult (VKAPI_PTR *PFN_vkReleaseFullScreenExclusiveModeEXT)(VkDevice device, VkSwapchainKHR swapchain); +typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupSurfacePresentModes2EXT)(VkDevice device, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkDeviceGroupPresentModeFlagsKHR* pModes); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModes2EXT( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, + uint32_t* pPresentModeCount, + VkPresentModeKHR* pPresentModes); + +VKAPI_ATTR VkResult VKAPI_CALL vkAcquireFullScreenExclusiveModeEXT( + VkDevice device, + VkSwapchainKHR swapchain); + +VKAPI_ATTR VkResult VKAPI_CALL vkReleaseFullScreenExclusiveModeEXT( + VkDevice device, + VkSwapchainKHR swapchain); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupSurfacePresentModes2EXT( + VkDevice device, + const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, + VkDeviceGroupPresentModeFlagsKHR* pModes); +#endif + + +#define VK_NV_acquire_winrt_display 1 +#define VK_NV_ACQUIRE_WINRT_DISPLAY_SPEC_VERSION 1 +#define VK_NV_ACQUIRE_WINRT_DISPLAY_EXTENSION_NAME "VK_NV_acquire_winrt_display" +typedef VkResult (VKAPI_PTR *PFN_vkAcquireWinrtDisplayNV)(VkPhysicalDevice physicalDevice, VkDisplayKHR display); +typedef VkResult (VKAPI_PTR *PFN_vkGetWinrtDisplayNV)(VkPhysicalDevice physicalDevice, uint32_t deviceRelativeId, VkDisplayKHR* pDisplay); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkAcquireWinrtDisplayNV( + VkPhysicalDevice physicalDevice, + VkDisplayKHR display); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetWinrtDisplayNV( + VkPhysicalDevice physicalDevice, + uint32_t deviceRelativeId, + VkDisplayKHR* pDisplay); +#endif + #ifdef __cplusplus } #endif diff --git a/3rdparty/include/vulkan/vulkan_xcb.h b/3rdparty/include/vulkan/vulkan_xcb.h index ba03600602..b49aa4e2c5 100644 --- a/3rdparty/include/vulkan/vulkan_xcb.h +++ b/3rdparty/include/vulkan/vulkan_xcb.h @@ -1,24 +1,10 @@ #ifndef VULKAN_XCB_H_ #define VULKAN_XCB_H_ 1 -#ifdef __cplusplus -extern "C" { -#endif - /* -** Copyright (c) 2015-2018 The Khronos Group Inc. +** Copyright 2015-2023 The Khronos Group Inc. ** -** 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. +** SPDX-License-Identifier: Apache-2.0 */ /* @@ -27,12 +13,16 @@ extern "C" { */ +#ifdef __cplusplus +extern "C" { +#endif + + + #define VK_KHR_xcb_surface 1 #define VK_KHR_XCB_SURFACE_SPEC_VERSION 6 #define VK_KHR_XCB_SURFACE_EXTENSION_NAME "VK_KHR_xcb_surface" - typedef VkFlags VkXcbSurfaceCreateFlagsKHR; - typedef struct VkXcbSurfaceCreateInfoKHR { VkStructureType sType; const void* pNext; @@ -41,7 +31,6 @@ typedef struct VkXcbSurfaceCreateInfoKHR { xcb_window_t window; } VkXcbSurfaceCreateInfoKHR; - typedef VkResult (VKAPI_PTR *PFN_vkCreateXcbSurfaceKHR)(VkInstance instance, const VkXcbSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id); diff --git a/3rdparty/include/vulkan/vulkan_xlib.h b/3rdparty/include/vulkan/vulkan_xlib.h index e1d967e018..186cdd5ef1 100644 --- a/3rdparty/include/vulkan/vulkan_xlib.h +++ b/3rdparty/include/vulkan/vulkan_xlib.h @@ -1,24 +1,10 @@ #ifndef VULKAN_XLIB_H_ #define VULKAN_XLIB_H_ 1 -#ifdef __cplusplus -extern "C" { -#endif - /* -** Copyright (c) 2015-2018 The Khronos Group Inc. +** Copyright 2015-2023 The Khronos Group Inc. ** -** 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. +** SPDX-License-Identifier: Apache-2.0 */ /* @@ -27,12 +13,16 @@ extern "C" { */ +#ifdef __cplusplus +extern "C" { +#endif + + + #define VK_KHR_xlib_surface 1 #define VK_KHR_XLIB_SURFACE_SPEC_VERSION 6 #define VK_KHR_XLIB_SURFACE_EXTENSION_NAME "VK_KHR_xlib_surface" - typedef VkFlags VkXlibSurfaceCreateFlagsKHR; - typedef struct VkXlibSurfaceCreateInfoKHR { VkStructureType sType; const void* pNext; @@ -41,7 +31,6 @@ typedef struct VkXlibSurfaceCreateInfoKHR { Window window; } VkXlibSurfaceCreateInfoKHR; - typedef VkResult (VKAPI_PTR *PFN_vkCreateXlibSurfaceKHR)(VkInstance instance, const VkXlibSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, Display* dpy, VisualID visualID); diff --git a/3rdparty/include/vulkan/vulkan_xlib_xrandr.h b/3rdparty/include/vulkan/vulkan_xlib_xrandr.h index 117d01799e..9a3b62991a 100644 --- a/3rdparty/include/vulkan/vulkan_xlib_xrandr.h +++ b/3rdparty/include/vulkan/vulkan_xlib_xrandr.h @@ -1,24 +1,10 @@ #ifndef VULKAN_XLIB_XRANDR_H_ #define VULKAN_XLIB_XRANDR_H_ 1 -#ifdef __cplusplus -extern "C" { -#endif - /* -** Copyright (c) 2015-2018 The Khronos Group Inc. +** Copyright 2015-2023 The Khronos Group Inc. ** -** 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. +** SPDX-License-Identifier: Apache-2.0 */ /* @@ -27,10 +13,15 @@ extern "C" { */ +#ifdef __cplusplus +extern "C" { +#endif + + + #define VK_EXT_acquire_xlib_display 1 #define VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION 1 #define VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME "VK_EXT_acquire_xlib_display" - typedef VkResult (VKAPI_PTR *PFN_vkAcquireXlibDisplayEXT)(VkPhysicalDevice physicalDevice, Display* dpy, VkDisplayKHR display); typedef VkResult (VKAPI_PTR *PFN_vkGetRandROutputDisplayEXT)(VkPhysicalDevice physicalDevice, Display* dpy, RROutput rrOutput, VkDisplayKHR* pDisplay); diff --git a/cmake/OpenCVDetectVulkan.cmake b/cmake/OpenCVDetectVulkan.cmake index 2bb7cc1b56..b6ef0f25a3 100644 --- a/cmake/OpenCVDetectVulkan.cmake +++ b/cmake/OpenCVDetectVulkan.cmake @@ -1,5 +1,5 @@ set(VULKAN_INCLUDE_DIRS "${OpenCV_SOURCE_DIR}/3rdparty/include" CACHE PATH "Vulkan include directory") -set(VULKAN_LIBRARIES "") +set(VULKAN_LIBRARIES "" CACHE PATH "Path to Vulkan Libraries.") try_compile(VALID_VULKAN "${OpenCV_BINARY_DIR}" diff --git a/modules/dnn/include/opencv2/dnn/dnn.hpp b/modules/dnn/include/opencv2/dnn/dnn.hpp index f9813fa053..60f68fce6e 100644 --- a/modules/dnn/include/opencv2/dnn/dnn.hpp +++ b/modules/dnn/include/opencv2/dnn/dnn.hpp @@ -330,7 +330,7 @@ CV__DNN_INLINE_NS_BEGIN virtual Ptr initNgraph(const std::vector > &inputs, const std::vector >& nodes); - virtual Ptr initVkCom(const std::vector > &inputs); + virtual Ptr initVkCom(const std::vector > &inputs, std::vector > &outputs); virtual Ptr initWebnn(const std::vector > &inputs, const std::vector >& nodes); diff --git a/modules/dnn/src/dnn_common.hpp b/modules/dnn/src/dnn_common.hpp index 27947afea1..82b7e845ac 100644 --- a/modules/dnn/src/dnn_common.hpp +++ b/modules/dnn/src/dnn_common.hpp @@ -14,6 +14,7 @@ namespace cv { namespace dnn { CV__DNN_INLINE_NS_BEGIN #define IS_DNN_OPENCL_TARGET(id) (id == DNN_TARGET_OPENCL || id == DNN_TARGET_OPENCL_FP16) #define IS_DNN_CPU_TARGET(id) (id == DNN_TARGET_CPU || id == DNN_TARGET_CPU_FP16) +#define IS_DNN_VULKAN_TARGET(id) (id == DNN_TARGET_VULKAN) Mutex& getInitializationMutex(); void initializeLayerFactory(); diff --git a/modules/dnn/src/int8layers/convolution_layer.cpp b/modules/dnn/src/int8layers/convolution_layer.cpp index 728ef24d91..3d6f6bc824 100644 --- a/modules/dnn/src/int8layers/convolution_layer.cpp +++ b/modules/dnn/src/int8layers/convolution_layer.cpp @@ -87,11 +87,11 @@ public: CV_Assert(inputs[0].dims == outputs[0].dims); if (weightShape.dims() == 3) { - kernel_size.assign(1, kernel_size[0]); - strides.assign(1, strides[0]); - dilations.assign(1, dilations[0]); - pads_begin.assign(1, pads_begin[0]); - pads_end.assign(1, pads_end[0]); + kernel_size.resize(1, kernel_size[0]); + strides.resize(1, strides[0]); + dilations.resize(1, dilations[0]); + pads_begin.resize(1, pads_begin[0]); + pads_end.resize(1, pads_end[0]); } CV_Assert(weightShape.dims() == kernel_size.size() + 2); for (int i = 0; i < kernel_size.size(); i++) { diff --git a/modules/dnn/src/int8layers/pooling_layer.cpp b/modules/dnn/src/int8layers/pooling_layer.cpp index 6c52d19e83..a2dda5eb07 100644 --- a/modules/dnn/src/int8layers/pooling_layer.cpp +++ b/modules/dnn/src/int8layers/pooling_layer.cpp @@ -89,10 +89,10 @@ public: if (inputs[0].dims == 3) { // Pool1D - kernel_size.assign(1, kernel_size[0]); - strides.assign(1, strides[0]); - pads_begin.assign(1, pads_begin[0]); - pads_end.assign(1, pads_end[0]); + kernel_size.resize(1, kernel_size[0]); + strides.resize(1, strides[0]); + pads_begin.resize(1, pads_begin[0]); + pads_end.resize(1, pads_end[0]); } } diff --git a/modules/dnn/src/layer.cpp b/modules/dnn/src/layer.cpp index 49ede4fa25..17de43db8e 100644 --- a/modules/dnn/src/layer.cpp +++ b/modules/dnn/src/layer.cpp @@ -50,7 +50,8 @@ Ptr Layer::initCUDA( return Ptr(); } -Ptr Layer::initVkCom(const std::vector>&) +Ptr Layer::initVkCom(const std::vector > &inputs, + std::vector > &outputs) { CV_Error(Error::StsNotImplemented, "VkCom pipeline of " + type + " layers is not defined."); return Ptr(); diff --git a/modules/dnn/src/layers/concat_layer.cpp b/modules/dnn/src/layers/concat_layer.cpp index f8f5152e33..6bd3dcdea5 100644 --- a/modules/dnn/src/layers/concat_layer.cpp +++ b/modules/dnn/src/layers/concat_layer.cpp @@ -141,7 +141,6 @@ public: backendId == DNN_BACKEND_CUDA || (backendId == DNN_BACKEND_HALIDE && haveHalide() && axis == 1 && !padding) || // By channels (backendId == DNN_BACKEND_WEBNN && !padding) || - (backendId == DNN_BACKEND_VKCOM && haveVulkan() && !padding) || (backendId == DNN_BACKEND_CANN && !padding); } @@ -332,17 +331,6 @@ public: } #endif - virtual Ptr initVkCom(const std::vector > &input) CV_OVERRIDE - { -#ifdef HAVE_VULKAN - vkcom::Tensor in = VkComTensor(input[0]); - int cAxis = normalize_axis(axis, in.dimNum()); - std::shared_ptr op(new vkcom::OpConcat(cAxis)); - return Ptr(new VkComBackendNode(input, op)); -#endif // HAVE_VULKAN - return Ptr(); - } - virtual Ptr initHalide(const std::vector > &input) CV_OVERRIDE { #ifdef HAVE_HALIDE diff --git a/modules/dnn/src/layers/convolution_layer.cpp b/modules/dnn/src/layers/convolution_layer.cpp index da85deebaa..a975e9fbc3 100644 --- a/modules/dnn/src/layers/convolution_layer.cpp +++ b/modules/dnn/src/layers/convolution_layer.cpp @@ -134,11 +134,11 @@ public: CV_Assert(inputs[0].dims == outputs[0].dims); if (weightShape.dims() == 3) { - kernel_size.assign(1, kernel_size[0]); - strides.assign(1, strides[0]); - dilations.assign(1, dilations[0]); - pads_begin.assign(1, pads_begin[0]); - pads_end.assign(1, pads_end[0]); + kernel_size.resize(1, kernel_size[0]); + strides.resize(1, strides[0]); + dilations.resize(1, dilations[0]); + pads_begin.resize(1, pads_begin[0]); + pads_end.resize(1, pads_end[0]); } CV_Assert(weightShape.dims() == kernel_size.size() + 2); for (int i = 0; i < kernel_size.size(); i++) { @@ -665,68 +665,50 @@ public: biasvec[outCn] = biasvec[outCn+1] = biasvec[outCn-1]; } - virtual Ptr initVkCom(const std::vector > &inputs) CV_OVERRIDE + virtual Ptr initVkCom(const std::vector > &inputs, std::vector > &outputs) CV_OVERRIDE { #ifdef HAVE_VULKAN - CV_Assert(!blobs.empty()); - int out_channel = blobs[0].size[0]; - bool has_bias = hasBias() || fusedBias; - int filter_size[2] = {kernel.height, kernel.width}; - int pad_size[2] = {pad.height, pad.width}; - int stride_size[2] = {stride.height, stride.width}; - int dilation_size[2] = {dilation.height, dilation.width}; - int activation = 0; - vkcom::Tensor input_tensor = VkComTensor(inputs[0]); - int in_channel = input_tensor.dimSize(1); - int group = in_channel / blobs[0].size[1]; + int activationType = transFusedActivType(activ); - // TODO: support group > 1 - if (group != 1) + CV_Assert(inputs.size() == 1 && outputs.size() == 1); + Ptr inputWrap = inputs[0].dynamicCast(); + Ptr outputWrap = outputs[0].dynamicCast(); + CV_Assert(inputWrap && outputWrap); + + MatShape inpShape = shape(*inputWrap->getMat()); + MatShape outShape = shape(*outputWrap->getMat()); + + CV_Assert(inpShape.size() == 4 && inpShape.size() == outShape.size()); + + if (activationType == -1) + { + CV_LOG_WARNING(NULL, "Unsupported fused Active type in Conv layer!!!"); + return Ptr(); + } + + const int inpGroupCn = blobs[0].size[1]; + int ngroups = inpShape[1] / inpGroupCn; + CV_Assert(outShape[1] % ngroups == 0); + if (ngroups != 1) return Ptr(); - int padding_mode; - if (padMode.empty()) - { - padding_mode = vkcom::kPaddingModeCaffe; - } - else if (padMode == "VALID") - { - padding_mode = vkcom::kPaddingModeValid; - } - else if (padMode == "SAME") - { - padding_mode = vkcom::kPaddingModeSame; - } - else - CV_Error(Error::StsError, "Unsupported padding mode " + padMode); - - std::shared_ptr op(new vkcom::OpConv(out_channel, has_bias, - filter_size, pad_size, - stride_size, dilation_size, - activation, group, - padding_mode)); - - std::vector > blobsWrapper; - + Mat weightVK; if (fusedWeights) { - Mat wm; - weightsMat.copyTo(wm); // to handle the case of isContinuous() == false - wm = wm.reshape(1, blobs[0].dims, blobs[0].size); - blobsWrapper.push_back(Ptr(new VkComBackendWrapper(wm))); + weightsMat.copyTo(weightVK); // to handle the case of isContinuous() == false + weightVK = weightVK.reshape(1, blobs[0].dims, blobs[0].size); } else - { - blobsWrapper.push_back(Ptr(new VkComBackendWrapper(blobs[0]))); - } + weightVK = blobs[0]; - if (has_bias) - { - Mat biasesMat({out_channel}, CV_32F, &biasvec[0]); - blobsWrapper.push_back(Ptr(new VkComBackendWrapper(biasesMat))); - } + CV_Assert(weightVK.isContinuous()); + CV_Assert(pads_begin.size() == 2); + CV_Assert(fusedAdd == false && "Vulkan Backend can not support the Conv_Add optimization."); + Ptr op(new vkcom::OpConv(weightVK, biasvec, activationType, ngroups, outShape[1], inpShape[1], + kernel.height, kernel.width, stride.height, stride.width, + dilation.height, dilation.width, pads_begin[1], pads_begin[0])); - return Ptr(new VkComBackendNode(inputs, op, blobsWrapper)); + return Ptr(new VkComBackendNode(inputs, op, outputs)); #endif // HAVE_VULKAN return Ptr(); } diff --git a/modules/dnn/src/layers/elementwise_layers.cpp b/modules/dnn/src/layers/elementwise_layers.cpp index c7ce703e3e..28cf737044 100644 --- a/modules/dnn/src/layers/elementwise_layers.cpp +++ b/modules/dnn/src/layers/elementwise_layers.cpp @@ -216,13 +216,6 @@ public: } #endif - virtual Ptr initVkCom(const std::vector >& inputs) CV_OVERRIDE - { -#ifdef HAVE_VULKAN - return Ptr(new VkComBackendNode(inputs, func.initVkCom())); -#endif // HAVE_VULKAN - return Ptr(); - } virtual bool tryFuse(Ptr& top) CV_OVERRIDE { @@ -359,7 +352,6 @@ struct ReLUFunctor : public BaseFunctor return backendId == DNN_BACKEND_OPENCV || backendId == DNN_BACKEND_CUDA || backendId == DNN_BACKEND_HALIDE || - backendId == DNN_BACKEND_VKCOM || backendId == DNN_BACKEND_CANN; } @@ -514,14 +506,6 @@ struct ReLUFunctor : public BaseFunctor } #endif -#ifdef HAVE_VULKAN - std::shared_ptr initVkCom() - { - std::shared_ptr op(new vkcom::OpReLU(slope)); - return op; - } -#endif // HAVE_VULKAN - bool tryQuantize(const std::vector > &scales, const std::vector > &zeropoints, LayerParams& params) { @@ -706,14 +690,6 @@ struct ReLU6Functor : public BaseFunctor } #endif -#ifdef HAVE_VULKAN - std::shared_ptr initVkCom() - { - // TODO: add vkcom implementation - return std::shared_ptr(); - } -#endif // HAVE_VULKAN - bool tryQuantize(const std::vector > &scales, const std::vector > &zeropoints, LayerParams& params) { @@ -830,14 +806,6 @@ struct BaseDefaultFunctor : public BaseFunctor } #endif -#ifdef HAVE_VULKAN - std::shared_ptr initVkCom() - { - // TODO: add vkcom implementation - return std::shared_ptr(); - } -#endif // HAVE_VULKAN - private: static const char* const ocl_kernel_name; }; @@ -2371,14 +2339,6 @@ struct PowerFunctor : public BaseFunctor } #endif -#ifdef HAVE_VULKAN - std::shared_ptr initVkCom() - { - // TODO: add vkcom implementation - return std::shared_ptr(); - } -#endif // HAVE_VULKAN - bool tryFuse(Ptr& top) { if (power != 1.0f && shift != 0.0f) @@ -2635,14 +2595,6 @@ struct ChannelsPReLUFunctor : public BaseFunctor } #endif -#ifdef HAVE_VULKAN - std::shared_ptr initVkCom() - { - // TODO: add vkcom implementation - return std::shared_ptr(); - } -#endif // HAVE_VULKAN - int64 getFLOPSPerElement() const { return 1; } }; diff --git a/modules/dnn/src/layers/fully_connected_layer.cpp b/modules/dnn/src/layers/fully_connected_layer.cpp index 556c517594..e0fdac1039 100644 --- a/modules/dnn/src/layers/fully_connected_layer.cpp +++ b/modules/dnn/src/layers/fully_connected_layer.cpp @@ -48,6 +48,7 @@ #include "../ie_ngraph.hpp" #include "../op_webnn.hpp" #include "../op_cann.hpp" +#include "../op_vkcom.hpp" #include @@ -187,7 +188,8 @@ public: backendId == DNN_BACKEND_CUDA || (backendId == DNN_BACKEND_HALIDE && haveHalide() && axis == 1 && !tranAorB) || (backendId == DNN_BACKEND_WEBNN && axis == 1 && !tranAorB) || - backendId == DNN_BACKEND_CANN;; + backendId == DNN_BACKEND_CANN || + (backendId == DNN_BACKEND_VKCOM && haveVulkan() && !tranAorB); } virtual bool setActivation(const Ptr& layer) CV_OVERRIDE @@ -637,6 +639,72 @@ public: } #endif +#ifdef HAVE_VULKAN + virtual Ptr initVkCom(const std::vector > &inputs, + std::vector > &outputs) CV_OVERRIDE + { + auto biasMat_ = bias ? biasMat : Mat(); + auto input_wrapper = inputs[0].dynamicCast(); + + CV_Assert((inputs.size() == 2 || inputs.size() == 1) && outputs.size() == 1); + std::vector vkBlobs; + Ptr op; + + if (!biasMat_.empty() || !activ.empty()) + { + return Ptr(); + } + + Ptr outputWrap = outputs[0].dynamicCast(); + CV_Assert(outputWrap); + // TODO: Currently, we only support the 2D MatMul. Need support the FC layer and bias case in the future. + + if (inputs.size() == 2) + { + Ptr inputWrap0 = inputs[0].dynamicCast(); + Ptr inputWrap1 = inputs[1].dynamicCast(); + CV_Assert(inputWrap0 && inputWrap1); + + MatShape inpShape0 = shape(*inputWrap0->getMat()); + MatShape inpShape1 = shape(*inputWrap1->getMat()); + MatShape outShape = shape(*outputWrap->getMat()); + + // TODO Currently, vulkan only support 2D matmul. Try to support 3D and 4D matmul. + if (inpShape0.size() != 2 || inpShape1.size() != 2) + return Ptr(); + + op = (new vkcom::OpMatMul(vkBlobs, inpShape0[0], inpShape0[1], outShape[1])); + } + else + { + CV_Assert(!weightsMat.empty()); + Mat wm; + weightsMat.copyTo(wm); // to handle the case of isContinuous() == false + wm = wm.reshape(1, blobs[0].dims, blobs[0].size); + vkBlobs.push_back(wm.t()); + + Ptr inputWrap = inputs[0].dynamicCast(); + CV_Assert(inputWrap); + + MatShape inpShape = shape(*inputWrap->getMat()); + MatShape outShape = shape(*outputWrap->getMat()); + MatShape wShape = shape(weightsMat); + + // TODO Currently, vulkan only support 2D matmul. Try to support 3D and 4D matmul. + if (inpShape.size() != 2 || wShape.size() != 2) + return Ptr(); + + // TODO: Currently, only focus on 2D MatMul. + CV_Assert(inpShape.size() == 2 && outShape.size() == 2 && wShape.size() == 2); + CV_Assert(inpShape[1] == outShape[0]); + op = (new vkcom::OpMatMul(vkBlobs, inpShape[0], inpShape[1], outShape[1])); + } + + return Ptr(new VkComBackendNode(inputs, op, outputs)); + } +#endif + + virtual Ptr initHalide(const std::vector > &inputs) CV_OVERRIDE { #ifdef HAVE_HALIDE @@ -844,15 +912,27 @@ public: { CV_UNUSED(inputs); // suppress unused variable warning long flops = 0; + int innerSize = 0; + + if (!blobs.empty()) + { + innerSize = blobs[0].size[1]; + } + else + { + CV_Assert(inputs.size() == 2); + if (transB) + innerSize = inputs[1][1]; + else + innerSize = inputs[1][0]; + } - int innerSize = blobs[0].size[1]; for(int i = 0; i < outputs.size(); i++) { flops += CV_BIG_INT(3)*innerSize*total(outputs[i]); } return flops; - } bool bias; diff --git a/modules/dnn/src/layers/lrn_layer.cpp b/modules/dnn/src/layers/lrn_layer.cpp index 728a597849..61c2224e36 100644 --- a/modules/dnn/src/layers/lrn_layer.cpp +++ b/modules/dnn/src/layers/lrn_layer.cpp @@ -107,7 +107,6 @@ public: return backendId == DNN_BACKEND_OPENCV || backendId == DNN_BACKEND_CUDA || backendId == DNN_BACKEND_HALIDE || - (backendId == DNN_BACKEND_VKCOM && haveVulkan() && (size % 2 == 1) && (type == CHANNEL_NRM)) || backendId == DNN_BACKEND_CANN; } @@ -362,15 +361,6 @@ public: } #endif - virtual Ptr initVkCom(const std::vector > &inputs) CV_OVERRIDE - { -#ifdef HAVE_VULKAN - std::shared_ptr op(new vkcom::OpLRN(size / 2, bias, alpha, beta, normBySize)); - return Ptr(new VkComBackendNode(inputs, op)); -#endif - return Ptr(); - } - virtual Ptr initHalide(const std::vector > &inputs) CV_OVERRIDE { #ifdef HAVE_HALIDE diff --git a/modules/dnn/src/layers/not_implemented_layer.cpp b/modules/dnn/src/layers/not_implemented_layer.cpp index f661155219..fa4c9e3cf5 100644 --- a/modules/dnn/src/layers/not_implemented_layer.cpp +++ b/modules/dnn/src/layers/not_implemented_layer.cpp @@ -93,7 +93,8 @@ public: CV_Error(Error::StsNotImplemented, msg); } - virtual Ptr initVkCom(const std::vector > &inputs) CV_OVERRIDE + virtual Ptr initVkCom(const std::vector > &inputs, + std::vector > &outputs) CV_OVERRIDE { CV_Error(Error::StsNotImplemented, msg); } diff --git a/modules/dnn/src/layers/permute_layer.cpp b/modules/dnn/src/layers/permute_layer.cpp index 3fab980264..4e6ca2543d 100644 --- a/modules/dnn/src/layers/permute_layer.cpp +++ b/modules/dnn/src/layers/permute_layer.cpp @@ -144,7 +144,6 @@ public: return backendId == DNN_BACKEND_OPENCV || backendId == DNN_BACKEND_CUDA || backendId == DNN_BACKEND_WEBNN || - (backendId == DNN_BACKEND_VKCOM && haveVulkan()) || backendId == DNN_BACKEND_CANN; } @@ -511,15 +510,6 @@ public: #endif -#ifdef HAVE_VULKAN - virtual Ptr initVkCom(const std::vector > &input) CV_OVERRIDE - { - CV_Assert(!_order.empty()); - std::shared_ptr op(new vkcom::OpPermute(_order)); - return Ptr(new VkComBackendNode(input, op)); - } -#endif // HAVE_VULKAN - #ifdef HAVE_TIMVX virtual Ptr initTimVX(void* timVXInfo_, const std::vector > &inputsWrapper, diff --git a/modules/dnn/src/layers/pooling_layer.cpp b/modules/dnn/src/layers/pooling_layer.cpp index 02f56e7419..c58405507e 100644 --- a/modules/dnn/src/layers/pooling_layer.cpp +++ b/modules/dnn/src/layers/pooling_layer.cpp @@ -182,10 +182,10 @@ public: if (inputs[0].dims == 3) { // Pool1D - kernel_size.assign(1, kernel_size[0]); - strides.assign(1, strides[0]); - pads_begin.assign(1, pads_begin[0]); - pads_end.assign(1, pads_end[0]); + kernel_size.resize(1, kernel_size[0]); + strides.resize(1, strides[0]); + pads_begin.resize(1, pads_begin[0]); + pads_end.resize(1, pads_end[0]); } #ifdef HAVE_OPENCL @@ -227,13 +227,6 @@ public: return haveHalide() && (type == MAX || (type == AVE && !pads_begin[0] && !pads_begin[1] && !pads_end[0] && !pads_end[1])); } - else if (backendId == DNN_BACKEND_VKCOM) - { - if (kernel_size.empty() || kernel_size.size() == 2) - return haveVulkan() && - (type == MAX || type == AVE); - return false; - } else if (backendId == DNN_BACKEND_WEBNN) { if (kernel_size.empty() || kernel_size.size() == 2) @@ -501,42 +494,6 @@ public: } #endif - -#ifdef HAVE_VULKAN - virtual Ptr initVkCom(const std::vector > &inputs) CV_OVERRIDE - { - int padding_mode; - vkcom::PoolType pool_type; - int filter_size[2] = {static_cast(kernel_size[0]), static_cast(kernel_size[1])}; - int pad_size[2] = {static_cast(pads_begin[0]), static_cast(pads_begin[1])}; - int stride_size[2] = {static_cast(strides[0]), static_cast(strides[1])}; - pool_type = type == MAX ? vkcom::kPoolTypeMax: - (type == AVE ? vkcom::kPoolTypeAvg: - vkcom::kPoolTypeNum); - - if (padMode.empty()) - { - padding_mode = vkcom::kPaddingModeCaffe; - } - else if (padMode == "VALID") - { - padding_mode = vkcom::kPaddingModeValid; - } - else if (padMode == "SAME") - { - padding_mode = vkcom::kPaddingModeSame; - } - else - CV_Error(Error::StsError, "Unsupported padding mode " + padMode); - - std::shared_ptr op(new vkcom::OpPool(filter_size, pad_size, - stride_size, padding_mode, - pool_type, avePoolPaddedArea)); - return Ptr(new VkComBackendNode(inputs, op)); - } -#endif - - virtual Ptr initHalide(const std::vector > &inputs) CV_OVERRIDE { if (type == MAX) diff --git a/modules/dnn/src/layers/prior_box_layer.cpp b/modules/dnn/src/layers/prior_box_layer.cpp index 160b36c18d..bf25927480 100644 --- a/modules/dnn/src/layers/prior_box_layer.cpp +++ b/modules/dnn/src/layers/prior_box_layer.cpp @@ -297,8 +297,7 @@ public: return _explicitSizes || _stepX == _stepY; #endif return backendId == DNN_BACKEND_OPENCV || - backendId == DNN_BACKEND_CUDA || - (backendId == DNN_BACKEND_VKCOM && haveVulkan()); + backendId == DNN_BACKEND_CUDA; } bool getMemoryShapes(const std::vector &inputs, @@ -608,20 +607,6 @@ public: } #endif - -#ifdef HAVE_VULKAN - virtual Ptr initVkCom(const std::vector > &input) CV_OVERRIDE - { - std::shared_ptr op(new vkcom::OpPriorBox(_stepX, _stepY, - _clip, _numPriors, - _variance, _offsetsX, - _offsetsY, _boxWidths, - _boxHeights)); - return Ptr(new VkComBackendNode(input, op)); - } -#endif // HAVE_VULKAN - - virtual int64 getFLOPS(const std::vector &inputs, const std::vector &outputs) const CV_OVERRIDE { diff --git a/modules/dnn/src/layers/softmax_layer.cpp b/modules/dnn/src/layers/softmax_layer.cpp index 4f1bcf59a4..b74f2b6791 100644 --- a/modules/dnn/src/layers/softmax_layer.cpp +++ b/modules/dnn/src/layers/softmax_layer.cpp @@ -46,7 +46,6 @@ #include "../op_halide.hpp" #include "../op_inf_engine.hpp" #include "../ie_ngraph.hpp" -#include "../op_vkcom.hpp" #include "../op_webnn.hpp" #include "../op_cann.hpp" @@ -117,7 +116,6 @@ public: return backendId == DNN_BACKEND_OPENCV || backendId == DNN_BACKEND_CUDA || (backendId == DNN_BACKEND_HALIDE && haveHalide() && axisRaw == 1) || - (backendId == DNN_BACKEND_VKCOM && haveVulkan()) || backendId == DNN_BACKEND_CANN; } @@ -327,18 +325,6 @@ public: } #endif - virtual Ptr initVkCom(const std::vector > &inputs) CV_OVERRIDE - { -#ifdef HAVE_VULKAN - vkcom::Tensor in = VkComTensor(inputs[0]); - int cAxis = normalize_axis(axisRaw, in.dimNum()); - std::shared_ptr op(new vkcom::OpSoftmax(cAxis, logSoftMax)); - return Ptr(new VkComBackendNode(inputs, op)); -#endif // HAVE_VULKAN - return Ptr(); - } - - virtual Ptr initHalide(const std::vector > &inputs) CV_OVERRIDE { #ifdef HAVE_HALIDE diff --git a/modules/dnn/src/net_impl.cpp b/modules/dnn/src/net_impl.cpp index 8024a05597..c8341e4c6f 100644 --- a/modules/dnn/src/net_impl.cpp +++ b/modules/dnn/src/net_impl.cpp @@ -32,7 +32,10 @@ std::string detail::NetImplBase::getDumpFileNameBase() const Net::Impl::~Impl() { - // nothing +#ifdef HAVE_VULKAN + if (context) + context->reset(); +#endif } @@ -1538,10 +1541,14 @@ string Net::Impl::dump(bool forceAllocation) const else { if (itBackend->second == prevNode) - skipId.push_back(idPrev); + { + if (idPrev != -1) + skipId.push_back(idPrev); + } else if (!skipId.empty()) { - skipId.push_back(idPrev); + if (idPrev != -1) + skipId.push_back(idPrev); std::sort(skipId.begin(), skipId.end()); for (int i = 0; i < skipId.size(); i++) { diff --git a/modules/dnn/src/net_impl.hpp b/modules/dnn/src/net_impl.hpp index 6eb06aa5b7..d935655c4a 100644 --- a/modules/dnn/src/net_impl.hpp +++ b/modules/dnn/src/net_impl.hpp @@ -179,6 +179,7 @@ struct Net::Impl : public detail::NetImplBase #endif #ifdef HAVE_VULKAN + Ptr context; void initVkComBackend(); #endif diff --git a/modules/dnn/src/net_impl_fuse.cpp b/modules/dnn/src/net_impl_fuse.cpp index 38aa6476cd..8c87b68be8 100644 --- a/modules/dnn/src/net_impl_fuse.cpp +++ b/modules/dnn/src/net_impl_fuse.cpp @@ -39,7 +39,8 @@ void Net::Impl::fuseLayers(const std::vector& blobsToKeep_) if(!fusion || (preferableBackend != DNN_BACKEND_OPENCV && preferableBackend != DNN_BACKEND_CUDA && preferableBackend != DNN_BACKEND_INFERENCE_ENGINE_NGRAPH && - preferableBackend != DNN_BACKEND_TIMVX)) + preferableBackend != DNN_BACKEND_TIMVX && + preferableBackend != DNN_BACKEND_VKCOM)) return; #if 0 // FIXIT mode without fusion is broken due to unsupported layers and handling of "custom" nodes @@ -111,7 +112,8 @@ void Net::Impl::fuseLayers(const std::vector& blobsToKeep_) break; } - if (preferableBackend != DNN_BACKEND_OPENCV && preferableBackend != DNN_BACKEND_CUDA) + if (preferableBackend != DNN_BACKEND_OPENCV && preferableBackend != DNN_BACKEND_CUDA + && preferableBackend != DNN_BACKEND_VKCOM) continue; // Go to the next layer. // TODO: OpenCL target support more fusion styles. @@ -141,6 +143,28 @@ void Net::Impl::fuseLayers(const std::vector& blobsToKeep_) if (nextActivLayer.empty()) break; + // For now, Vulkan target support fusion with activation of ReLU/ReLU6 + if (IS_DNN_VULKAN_TARGET(preferableTarget)) + { + if (nextData->type == "ReLU") + { + Ptr nextReLULayer = nextData->layerInstance.dynamicCast(); + CV_Assert(nextReLULayer); + if (nextReLULayer->negativeSlope != 0.0f) + break; // Skip LeakyReLU + } + else if (nextData->type == "ReLU6") + { + Ptr nextReLU6Layer = nextData->layerInstance.dynamicCast(); + CV_Assert(nextReLU6Layer); + + if( fabs(nextReLU6Layer->minValue) > FLT_EPSILON || fabs(nextReLU6Layer->maxValue - 6.0f) > FLT_EPSILON) + break; // Skip ReLU6 if the minValue != 0 or maxValue != 6. + } + else + break; + } + if (currLayer->setActivation(nextActivLayer)) { printf_(("\tfused with %s\n", nextActivLayer->name.c_str())); diff --git a/modules/dnn/src/op_vkcom.cpp b/modules/dnn/src/op_vkcom.cpp index 7249c27ce2..84ffc9819d 100644 --- a/modules/dnn/src/op_vkcom.cpp +++ b/modules/dnn/src/op_vkcom.cpp @@ -18,12 +18,13 @@ namespace dnn CV__DNN_INLINE_NS_BEGIN - void Net::Impl::initVkComBackend() { CV_TRACE_FUNCTION(); CV_Assert(preferableBackend == DNN_BACKEND_VKCOM); + context = vkcom::Context::create(); + for (MapIdToLayerData::iterator it = layers.begin(); it != layers.end(); it++) { LayerData &ld = it->second; @@ -33,12 +34,9 @@ void Net::Impl::initVkComBackend() continue; } - ld.skip = false; - try { - ld.backendNodes[DNN_BACKEND_VKCOM] = - layer->initVkCom(ld.inputBlobsWrappers); + ld.backendNodes[DNN_BACKEND_VKCOM] = layer->initVkCom(ld.inputBlobsWrappers, ld.outputBlobsWrappers); } catch (const cv::Exception& e) { @@ -52,150 +50,187 @@ CV__DNN_INLINE_NS_END /////////////////////////////////////////////////////////////////////////////// - - void copyToTensor(vkcom::Tensor &dst, const Mat &src) +int transFusedActivType(Ptr &actLayer) +{ + if (actLayer) { - CV_Assert(src.isContinuous() && src.type() == CV_32F); + Ptr activ_relu = actLayer.dynamicCast(); + Ptr activ_relu6 = actLayer.dynamicCast(); - std::vector mat_shape = shape(src); - dst.reshape((const char*)src.data, mat_shape); - } - - void copyToMat(Mat &dst, vkcom::Tensor &src) - { - CV_Assert(dst.type() == CV_32F); - - std::vector shape = src.getShape(); - void *data = src.map(); - Mat tmp(shape, CV_32F, data); - tmp.copyTo(dst); - src.unMap(); - } - - vkcom::Tensor VkComTensor(const Ptr& ptr) - { - CV_Assert(!ptr.empty()); - return ptr.dynamicCast()->getTensor(); - } - - void setDirty(std::vector >& ptrs) - { - for (const Ptr& ptr : ptrs) + if (!activ_relu.empty()) { - ptr.dynamicCast()->setDeviceDirty(); + if (activ_relu->negativeSlope == 0.0f) + { + return 1; // kFusedActivRelu + } + else // Leaky ReLU + { + return -1; // kFusedActivNone + } } - } - - std::vector VkComTensors(const std::vector >& ptrs) - { - std::vector vec; - vec.reserve(ptrs.size()); - for (const Ptr& ptr : ptrs) + else if (!activ_relu6.empty()) { - vec.push_back(VkComTensor(ptr)); + return 2; // kFusedActivRelu6 } - return vec; + else + return -1; // kFusedActivUnsupport + } + else + return 0; // kFusedActivNone +} + +void copyToTensor(vkcom::Tensor &dst, const Mat &src) +{ + CV_Assert(src.isContinuous() && src.type() == CV_32F); + + std::vector mat_shape = shape(src); + + // The following code will copy the src data from CPU Mat to GPU VkBuffer. + dst.reshape((const char*)src.data, mat_shape); +} + +void copyToMat(Mat &dst, vkcom::Tensor &src) +{ + CV_Assert(dst.type() == CV_32F); + + std::vector shape = src.getShape(); + void *data = src.map(); + Mat tmp(shape, CV_32F, data); + tmp.copyTo(dst); + src.unMap(); +} + +vkcom::Tensor VkComTensor(const Ptr& ptr) +{ + CV_Assert(!ptr.empty()); + return ptr.dynamicCast()->getTensor(); +} + +void setDirty(std::vector >& ptrs) +{ + for (const Ptr& ptr : ptrs) + { + ptr.dynamicCast()->setDeviceDirty(); + } +} + +std::vector VkComTensors(const std::vector >& ptrs) +{ + std::vector vec; + vec.reserve(ptrs.size()); + for (const Ptr& ptr : ptrs) + { + vec.push_back(VkComTensor(ptr)); + } + return vec; +} + +VkComBackendNode::VkComBackendNode(const std::vector >& inputsWrapper, + const Ptr& op, + const std::vector >& outputsWrapper) + : BackendNode(DNN_BACKEND_VKCOM) +{ + operation = op; + + inputsWrapper_ = inputsWrapper; + ins = VkComTensors(inputsWrapper_); + + outputsWrapper_ = outputsWrapper; + outs = VkComTensors(outputsWrapper_); +} + +bool VkComBackendNode::forward() +{ + for (int i = 0, n = inputsWrapper_.size(); i < n; ++i) + { + inputsWrapper_[i].dynamicCast()->copyToDevice(); } - VkComBackendNode::VkComBackendNode(const std::vector >& inputsWrapper, - const std::shared_ptr& op, - const std::vector >& blobsWrapper) - : BackendNode(DNN_BACKEND_VKCOM) + return operation->forward(ins, outs); +} + +VkComBackendWrapper::VkComBackendWrapper(Mat& m) : BackendWrapper(DNN_BACKEND_VKCOM, DNN_TARGET_VULKAN) +{ + CV_Assert(m.isContinuous()); + copyToTensor(tensor, m); + host = &m; + hostDirty = false; + deviceDirty = false; +} + +// Other constructor, need change the logical. The purpose is to decline the data copy. +VkComBackendWrapper::VkComBackendWrapper(const Ptr& baseBuffer, Mat& m) + : BackendWrapper(DNN_BACKEND_VKCOM, DNN_TARGET_VULKAN) +{ + Ptr base = baseBuffer.dynamicCast(); + CV_Assert(!base.empty()); + + host = &m; + tensor = base->tensor; + CV_Assert(tensor.count() >= m.total()); + tensor.reshape(0, shape(m)); + hostDirty = false; + deviceDirty = false; +} + +void VkComBackendWrapper::copyToHost() +{ + if (deviceDirty) + copyToMat(*host, tensor); +} + +void VkComBackendWrapper::setHostDirty() +{ + hostDirty = true; +}; + +void VkComBackendWrapper::setDeviceDirty() +{ + deviceDirty = true; +}; + +void VkComBackendWrapper::copyToDevice() +{ + if (hostDirty) { - operation = op; - - inputsWrapper_ = inputsWrapper; - ins = VkComTensors(inputsWrapper_); - - if (!blobsWrapper.empty()) - { - blobs = VkComTensors(blobsWrapper); - } - } - - bool VkComBackendNode::forward(std::vector& outs) - { - for (int i = 0, n = inputsWrapper_.size(); i < n; ++i) - { - inputsWrapper_[i].dynamicCast()->copyToDevice(); - } - - return operation->forward(ins, blobs, outs); - } - - VkComBackendWrapper::VkComBackendWrapper(Mat& m) : BackendWrapper(DNN_BACKEND_VKCOM, DNN_TARGET_VULKAN) - { - copyToTensor(tensor, m); - host = &m; + copyToTensor(tensor, *host); hostDirty = false; - deviceDirty = false; } +} - VkComBackendWrapper::VkComBackendWrapper(const Ptr& baseBuffer, Mat& m) - : BackendWrapper(DNN_BACKEND_VKCOM, DNN_TARGET_VULKAN) - { - Ptr base = baseBuffer.dynamicCast(); - CV_Assert(!base.empty()); +vkcom::Tensor VkComBackendWrapper::getTensor() +{ + return tensor; +} - host = &m; - tensor = base->tensor; - CV_Assert(tensor.count() >= m.total()); - tensor.reshape(0, shape(m)); - hostDirty = false; - deviceDirty = false; - } +Mat* VkComBackendWrapper::getMat() +{ + return host; +} - void VkComBackendWrapper::copyToHost() - { - if (deviceDirty) - copyToMat(*host, tensor); - } - - void VkComBackendWrapper::setHostDirty() - { - hostDirty = true; - }; - - void VkComBackendWrapper::setDeviceDirty() - { - deviceDirty = true; - }; - - void VkComBackendWrapper::copyToDevice() - { - if (hostDirty) - { - copyToTensor(tensor, *host); - hostDirty = false; - } - } - - vkcom::Tensor VkComBackendWrapper::getTensor() - { - return tensor; - } #endif - void forwardVkCom(std::vector > &outputs, - const Ptr& node) - { -#ifdef HAVE_VULKAN - CV_Assert(!node.empty()); - Ptr node_ = node.dynamicCast(); - std::vector outs = VkComTensors(outputs); - node_->forward(outs); - setDirty(outputs); +void forwardVkCom(std::vector > &outputs, + const Ptr& node) +{ +#ifdef HAVE_VULKAN + CV_Assert(!node.empty()); + + Ptr node_ = node.dynamicCast(); + + CV_Assert(node_->forward()); + setDirty(outputs); #endif - } +} - bool haveVulkan() - { +bool haveVulkan() +{ #ifdef HAVE_VULKAN - return vkcom::isAvailable(); + return vkcom::isAvailable(); #else - return false; + return false; #endif // HAVE_VULKAN - } +} } // namespace dnn } // namespace cv diff --git a/modules/dnn/src/op_vkcom.hpp b/modules/dnn/src/op_vkcom.hpp index 4f979629e0..3f00ac7ecb 100644 --- a/modules/dnn/src/op_vkcom.hpp +++ b/modules/dnn/src/op_vkcom.hpp @@ -18,56 +18,63 @@ namespace cv namespace dnn { #ifdef HAVE_VULKAN - std::vector VkComTensors(const std::vector >& ptrs); +std::vector VkComTensors(const std::vector >& ptrs); - vkcom::Tensor VkComTensor(const Ptr& ptr); +vkcom::Tensor VkComTensor(const Ptr& ptr); - // Data copied from/to Mat to/from Tensor. Change the shape of dst if - // needed to make it the same shape as src - void copyToTensor(vkcom::Tensor &dst, const Mat &src); +// the input is the OpenCV activation layer, and the output is the activation in Vulkan backend. +int transFusedActivType(Ptr &actLayer); - void copyToMat(Mat &dst, const vkcom::Tensor &src); +// Data copied from/to Mat to/from Tensor. Change the shape of dst if +// needed to make it the same shape as src +void copyToMat(Mat &dst, const vkcom::Tensor &src); +void copyToTensor(vkcom::Tensor &dst, const Mat &src); - class VkComBackendNode : public BackendNode - { - public: - VkComBackendNode(const std::vector >& inputsWrapper, - const std::shared_ptr &op, - const std::vector >& blobsWrapper = - std::vector >()); +void printTensor(vkcom::Tensor &dst); - bool forward(std::vector& outs); +// VkComBackendNode contains the input and output of a layer/op. +// And the specific weight and the parameter information of the layer will be saved in the Op instance. +class VkComBackendNode : public BackendNode +{ +public: + VkComBackendNode(const std::vector >& inputsWrapper, + const Ptr& op, + const std::vector >& outputsWrapper); + bool forward(); private: std::vector ins; - std::vector blobs; + std::vector outs; std::vector > inputsWrapper_; - std::shared_ptr operation; - }; + std::vector > outputsWrapper_; + Ptr operation; +}; - class VkComBackendWrapper : public BackendWrapper - { - public: - VkComBackendWrapper(Mat& m); - VkComBackendWrapper(const Ptr& baseBuffer, Mat& m); +class VkComBackendWrapper : public BackendWrapper +{ +public: + VkComBackendWrapper(Mat& m); + VkComBackendWrapper(const Ptr& baseBuffer, Mat& m); - virtual void copyToHost() CV_OVERRIDE; - virtual void setHostDirty() CV_OVERRIDE; - void setDeviceDirty(); - void copyToDevice(); - vkcom::Tensor getTensor(); + virtual void copyToHost() CV_OVERRIDE; + virtual void setHostDirty() CV_OVERRIDE; + void setDeviceDirty(); + void copyToDevice(); + vkcom::Tensor getTensor(); + Mat* getMat(); + +private: + vkcom::Tensor tensor; + Mat* host; + bool hostDirty; + bool deviceDirty; +}; - private: - vkcom::Tensor tensor; - Mat* host; - bool hostDirty; - bool deviceDirty; - }; #endif // HAVE_VULKAN - void forwardVkCom(std::vector > &outputs, const Ptr& node); +void forwardVkCom(std::vector > &outputs, const Ptr& node); - bool haveVulkan(); +bool haveVulkan(); } // namespace dnn } // namespace cv diff --git a/modules/dnn/src/precomp.hpp b/modules/dnn/src/precomp.hpp index 0100eb2c7f..178a8f42cf 100644 --- a/modules/dnn/src/precomp.hpp +++ b/modules/dnn/src/precomp.hpp @@ -89,4 +89,4 @@ #include #include -#include "dnn_common.hpp" +#include "dnn_common.hpp" \ No newline at end of file diff --git a/modules/dnn/src/vkcom/include/buffer.hpp b/modules/dnn/src/vkcom/include/buffer.hpp index dfb705c42a..956fb1abf8 100644 --- a/modules/dnn/src/vkcom/include/buffer.hpp +++ b/modules/dnn/src/vkcom/include/buffer.hpp @@ -19,17 +19,15 @@ namespace cv { namespace dnn { namespace vkcom { class Buffer { public: - Buffer(VkDevice& device) - : device_(device), buffer_(VK_NULL_HANDLE), memory_(VK_NULL_HANDLE){}; - Buffer(VkDevice& device, size_t size_in_bytes, const char* data); + Buffer(VkBufferUsageFlags usageFlag = VK_BUFFER_USAGE_STORAGE_BUFFER_BIT); + Buffer(size_t size_in_bytes, const char* data, VkBufferUsageFlags usageFlags = VK_BUFFER_USAGE_STORAGE_BUFFER_BIT); ~Buffer(); VkDeviceMemory getVkMemory() { return memory_; } VkBuffer getVkBuffer() { return buffer_; } private: - Buffer(); bool init(size_t size_in_bytes, const char* data); - VkDevice device_; + VkBufferUsageFlags usageFlag_; VkBuffer buffer_; VkDeviceMemory memory_; }; diff --git a/modules/dnn/src/vkcom/include/command.hpp b/modules/dnn/src/vkcom/include/command.hpp new file mode 100644 index 0000000000..7cbbd45ad1 --- /dev/null +++ b/modules/dnn/src/vkcom/include/command.hpp @@ -0,0 +1,82 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. + +#ifndef OPENCV_COMMAND_VULKAN_HPP +#define OPENCV_COMMAND_VULKAN_HPP + +#include +#ifdef HAVE_VULKAN +#include +#endif // HAVE_VULKAN + +#include "fence.hpp" + +namespace cv { namespace dnn { namespace vkcom { + +#ifdef HAVE_VULKAN + +class CommandPool; +// CommandBuffer will record and dispatch the VkCommand, it was allocated from CommandPool. +class CommandBuffer +{ +public: + ~CommandBuffer(); + + void beginRecord(VkCommandBufferUsageFlags flag = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT); + void endRecord(); + + enum BarrierType { + READ_WRITE = 0, + WRITE_WRITE = 1, + }; + void barrierSource(VkBuffer source, size_t start, size_t size, BarrierType type = READ_WRITE) const; + + VkCommandBuffer get() + { + return cmdBuffer; + } + +private: + friend class CommandPool; + CommandBuffer(CommandPool* pool); + + CommandPool* cmdPool; + VkCommandBuffer cmdBuffer; + // If is true, the deconstructor will release the instance, otherwise, re-use it. + bool needRelease = true; +}; + +class CommandPool +{ +public: + static Ptr create(const VkQueue& q, uint32_t _queueFamilyIndex); + + void operator=(const CommandPool &) = delete; + CommandPool(CommandPool &other) = delete; + + void reset(); + ~CommandPool(); + VkCommandPool get() const + { + return cmdPool; + } + + Ptr allocBuffer(); + void submitAndWait(VkCommandBuffer& buffer) const; + + std::queue bufferQueue; // For re-use the CommandBuffer. + +private: + CommandPool(const VkQueue& q, uint32_t _queueFamilyIndex); + const VkQueue& queue; + VkCommandPool cmdPool; + uint32_t queueFamilyIndex; +}; + +#endif // HAVE_VULKAN + +}}} // namespace cv::dnn::vkcom + + +#endif //OPENCV_COMMAND_VULKAN_HPP diff --git a/modules/dnn/src/vkcom/include/context.hpp b/modules/dnn/src/vkcom/include/context.hpp new file mode 100644 index 0000000000..25794cf66e --- /dev/null +++ b/modules/dnn/src/vkcom/include/context.hpp @@ -0,0 +1,184 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. + +/* +The code has been borrowed from ncnn inference engine (https://github.com/Tencent/ncnn/blob/20230223/src/gpu.cpp) +and adapted for OpenCV by Zihao Mu. +Below is the original copyright: +*/ + +// Tencent is pleased to support the open source community by making ncnn available. +// +// Copyright (C) 2018 THL A29 Limited, a Tencent company. All rights reserved. +// +// Licensed under the BSD 3-Clause License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// https://opensource.org/licenses/BSD-3-Clause +// +// 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. + +#ifndef OPENCV_CONTEXT_VULKAN_HPP +#define OPENCV_CONTEXT_VULKAN_HPP + +#include "../../precomp.hpp" + +#ifdef HAVE_VULKAN +#include +#endif // HAVE_VULKAN + +#include "command.hpp" +#include "pipeline.hpp" + +namespace cv { namespace dnn { namespace vkcom { + +#ifdef HAVE_VULKAN + +// NOTE: Manually set true to enable ValidationLayers, default is false. +const bool enableValidationLayers = false; + +enum GPU_TYPE { + GPU_TYPE_NOFOUND = -1, + GPU_TYPE_DISCRETE = 0, + GPU_TYPE_INTEGRATED = 1, + GPU_TYPE_VIRTUAL = 2, + GPU_TYPE_CPU_ONLY = 3, +}; + +// GPUInfo will parse GPU hardware information and save it in param. +struct GPUInfo +{ + // memory properties + VkPhysicalDeviceMemoryProperties physicalDeviceMemoryProperties; + + // basic info + GPU_TYPE type; // cpu, integrated GPU, discrete GPU. + uint32_t apiVersion; + uint32_t driverVersion; + uint32_t vendorId; + uint32_t deviceId; + char deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE]; + uint8_t pipelineCacheUUID[VK_UUID_SIZE]; + + // hardware limit + uint32_t maxSharedMemorySize; + uint32_t maxWorkgroupCount_x; + uint32_t maxWorkgroupCount_y; + uint32_t maxWorkgroupCount_z; + uint32_t maxWorkgroup_invocations; + uint32_t maxWorkgroupSize_x; + uint32_t maxWorkgroupSize_y; + uint32_t maxWorkgroupSize_z; + size_t memoryMapAlignment; + size_t bufferOffsetAlignment; + size_t non_coherent_atom_size; + size_t bufferImageGranularity; + + uint32_t maxImageDimension_1d; + uint32_t maxImageDimension_2d; + uint32_t maxImageDimension_3d; + float timestampPeriod; + + // runtime + uint32_t computeQueueFamilyIndex; + uint32_t graphicsQueueFamilyIndex; + uint32_t transferQueueFamilyIndex; + bool unifiedComputeTransferQueue; + + uint32_t computeQueueCount; + uint32_t graphicsQueueCount; + uint32_t transferQueueCount; + + // subgroup + uint32_t subgroupSize; + bool supportSubgroupBasic; + bool supportSubgroupVote; + bool supportSubgroupBallot; + bool supportSubgroupShuffle; + + // TODO! Maybe in OpenCV we just care about if the device supports the FP16 or INT8. + // fp16 and int8 feature + bool support_fp16_packed; + bool support_fp16_storage; + bool support_fp16_arithmetic; + bool support_int8_packed; + bool support_int8_storage; + bool support_int8_arithmetic; + + // cooperative matrix + bool support_cooperative_matrix; + + // extension capability + int support_VK_KHR_8bit_storage; + int support_VK_KHR_16bit_storage; + int support_VK_KHR_bind_memory2; + int support_VK_KHR_create_renderpass2; + int support_VK_KHR_dedicated_allocation; + int support_VK_KHR_descriptor_update_template; + int support_VK_KHR_external_memory; + int support_VK_KHR_get_memory_requirements2; + int support_VK_KHR_maintenance1; + int support_VK_KHR_maintenance2; + int support_VK_KHR_maintenance3; + int support_VK_KHR_multiview; + int support_VK_KHR_portability_subset; + int support_VK_KHR_push_descriptor; + int support_VK_KHR_sampler_ycbcr_conversion; + int support_VK_KHR_shader_float16_int8; + int support_VK_KHR_shader_float_controls; + int support_VK_KHR_storage_buffer_storage_class; + int support_VK_KHR_swapchain; + int support_VK_EXT_descriptor_indexing; + int support_VK_EXT_memory_budget; + int support_VK_EXT_queue_family_foreign; +#if defined(__ANDROID_API__) && __ANDROID_API__ >= 26 + int support_VK_ANDROID_external_memory_android_hardware_buffer; +#endif // __ANDROID_API__ >= 26 + int support_VK_NV_cooperative_matrix; +}; + +// It contains all source we need in Vulkan Backend. +// every class may need use the resource from context. +class Context +{ +public: + static Ptr create(); + + void operator=(const Context &) = delete; + Context(Context &other) = delete; + ~Context(); // TODO deconstruct this class when net was deconstructed. + void reset(); +private: + GPUInfo parseGPUInfo(VkPhysicalDevice& device); + + // The following function will create kInstance. + void createInstance(); + int findBestPhysicalGPUIndex(); + Context(); + + // Vulkan related resource. + VkInstance kInstance = VK_NULL_HANDLE; + VkPhysicalDevice kPhysicalDevice = VK_NULL_HANDLE; + + uint32_t kQueueFamilyIndex; + + std::vector gpuInfoList; // store all available GPU information. + int bestGPUIndex; + + std::vector kEnabledLayers; + VkDebugReportCallbackEXT kDebugReportCallback = VK_NULL_HANDLE; + + // Extension things + std::vector enabledExtensions; + uint32_t instanceExtensionPropertyCount; + std::vector instanceExtensionProperties; + uint32_t instanceApiVersion; +}; + +#endif // HAVE_VULKAN +}}} // namespace cv::dnn::vkcom +#endif //OPENCV_CONTEXT_VULKAN_HPP diff --git a/modules/dnn/src/vkcom/include/fence.hpp b/modules/dnn/src/vkcom/include/fence.hpp new file mode 100644 index 0000000000..a8b704f082 --- /dev/null +++ b/modules/dnn/src/vkcom/include/fence.hpp @@ -0,0 +1,33 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. + +#ifndef OPENCV_FENCE_HPP +#define OPENCV_FENCE_HPP + +#include "../../precomp.hpp" + +#ifdef HAVE_VULKAN +#include +#endif // HAVE_VULKAN + +namespace cv { namespace dnn { namespace vkcom { +#ifdef HAVE_VULKAN +// Used for synchronize and wait +class Fence +{ +public: + Fence(); + ~Fence(); + + VkFence get() const; + VkResult reset() const; + VkResult wait() const; + +private: + VkFence fence; +}; +#endif // HAVE_VULKAN +}}} // namespace cv::dnn::vkcom + +#endif //OPENCV_FENCE_HPP diff --git a/modules/dnn/src/vkcom/include/op_base.hpp b/modules/dnn/src/vkcom/include/op_base.hpp index 57be12d2fa..0a3b7aeb6e 100644 --- a/modules/dnn/src/vkcom/include/op_base.hpp +++ b/modules/dnn/src/vkcom/include/op_base.hpp @@ -10,6 +10,7 @@ #include "../../precomp.hpp" #include "vkcom.hpp" +#include "context.hpp" namespace cv { namespace dnn { namespace vkcom { @@ -23,31 +24,14 @@ class OpBase public: OpBase(); virtual ~OpBase(); - virtual bool forward(std::vector& ins, - std::vector& blobs, - std::vector& outs) = 0; + virtual bool forward(std::vector& ins, std::vector& outs) = 0; protected: - void initVulkanThing(int buffer_num); - void createDescriptorSetLayout(int buffer_num); - void createDescriptorSet(int buffer_num); - void createShaderModule(const uint32_t* spv, size_t sz, const std::string& source = std::string()); - void createPipeline(size_t push_constants_size = 0, VkSpecializationInfo* specialization_info = 0); - void createCommandBuffer(); - void recordCommandBuffer(void* push_constants = NULL, size_t push_constants_size = 0); - void runCommandBuffer(); - - VkPipeline pipeline_; - VkCommandBuffer cmd_buffer_; - VkDescriptorPool descriptor_pool_; - VkDescriptorSet descriptor_set_; - VkDevice device_; - VkDescriptorSetLayout descriptor_set_layout_; - VkPipelineLayout pipeline_layout_; - VkShaderModule module_; + std::vector destTypes; // Save the input data type. + std::string shader_name; // the key which is used for retrieve Pipeline from PipelineFactory. + std::string type_; int group_x_; int group_y_; int group_z_; - std::string type_; }; #endif // HAVE_VULKAN diff --git a/modules/dnn/src/vkcom/include/op_concat.hpp b/modules/dnn/src/vkcom/include/op_concat.hpp deleted file mode 100644 index c754a61233..0000000000 --- a/modules/dnn/src/vkcom/include/op_concat.hpp +++ /dev/null @@ -1,55 +0,0 @@ -// This file is part of OpenCV project. -// It is subject to the license terms in the LICENSE file found in the top-level directory -// of this distribution and at http://opencv.org/license.html. -// -// Copyright (C) 2018, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. - -#ifndef OPENCV_DNN_VKCOM_OP_CONCAT_HPP -#define OPENCV_DNN_VKCOM_OP_CONCAT_HPP - -#include "vkcom.hpp" -#include "op_base.hpp" - -namespace cv { namespace dnn { namespace vkcom { - -#ifdef HAVE_VULKAN - -struct ConcatShaderConfig -{ - int local_size_x; - int local_size_y; - int local_size_z; - int block_height; - int block_width; - int block_depth; -}; - -class OpConcat: public OpBase -{ -public: - OpConcat(const int axis); - bool forward(std::vector& ins, Tensor& out); - void reshapeOutTensor(std::vector& in, Tensor& out); - virtual bool forward(std::vector& ins, - std::vector& blobs, - std::vector& outs) CV_OVERRIDE; - -private: - bool init(const int axis); - bool computeGroupCount(); - - ConcatShaderConfig config_; - int axis_; - int out_concat_axis_; - int accumulated_concat_axis_; - int concat_size_; - int total_concat_size_; - int thread_num_; -}; - -#endif // HAVE_VULKAN - -}}} // namespace cv::dnn::vkcom - -#endif // OPENCV_DNN_VKCOM_OP_CONCAT_HPP diff --git a/modules/dnn/src/vkcom/include/op_conv.hpp b/modules/dnn/src/vkcom/include/op_conv.hpp index 2f48eff303..053eb51cd2 100644 --- a/modules/dnn/src/vkcom/include/op_conv.hpp +++ b/modules/dnn/src/vkcom/include/op_conv.hpp @@ -17,10 +17,10 @@ namespace cv { namespace dnn { namespace vkcom { enum ConvShaderType { - kConvShaderTypeBasic = 0, - kConvShaderType48, - kConvShaderTypeDepthWise, - kConvShaderTypeNum + kConvShaderTypeGeneric = 0, + kConvShaderTypeDepthWise = 2, // special branch + kConvShaderTypeWinograd = 3, + kConvShaderTest = 4, }; struct ConvShaderConfig @@ -28,55 +28,46 @@ struct ConvShaderConfig int local_size_x; int local_size_y; int local_size_z; - int block_height; - int block_width; - int block_depth; - ConvShaderType shader_type; }; +// Current Vulkan Convolution layer only support Conv2D. class OpConv : public OpBase { public: - OpConv(const int out_channel, const bool has_bias, - const int* filter_size, const int* pad, - const int* stride, const int* dilation, - const int activation, const int group, - const int padding_mode); - void reshapeOutTensor(Tensor& in, Tensor& out); - bool forward(Tensor& in, Tensor& filter_weights, Tensor& bias, Tensor& out); - virtual bool forward(std::vector& ins, - std::vector& blobs, - std::vector& outs) CV_OVERRIDE; + OpConv(const Mat& weightBlob, const std::vector& biasvec, int activType, const int ngroups, const int K, const int C, const int Hk, const int Wk, + const int stride_h, const int stride_w, const int dilation_h, const int dilation_w, + const int pad_left, const int pad_top); + ~OpConv(); + + void firstForward(); // Execute only in the first forward. + virtual bool forward(std::vector& ins, std::vector& outs) CV_OVERRIDE; + + std::vector biasCopy; + Ptr weightTensorPtr; + Ptr biasTensorPtr; + private: - bool init(const int out_channel, const bool has_bias, - const int* filter_size, const int* pad, - const int* stride, const int* dilation, - const int activation, const int group, - const int padding_mode); bool computeGroupCount(); - int batch_; - int in_height_; - int in_width_; - int in_channel_; - int out_height_; - int out_width_; - int out_channel_; - int filter_height_; - int filter_width_; - int stride_height_; - int stride_width_; - int padding_top_; - int padding_left_; - int dilation_height_; - int dilation_width_; - int activation_; - PaddingMode padding_mode_; - int group_; - int has_bias_; - Tensor swizzled_weights; - ConvShaderConfig config_; - bool dwconv_; + FusedActivationType activ; + const int ngroups; + const int K, C, Hk, Wk; // output channel, input channel, height of kernel, width of kernel. + const int stride_h, stride_w; + const int dilation_h, dilation_w; + const int pad_left, pad_top; + + int H0, W0; + int Hi, Wi; + int batch; + int Kg, Cg; + int CgHkWk, CgHkWk_aligned, ksize; + + int STRIP_LEN; + bool fast_1x1 = false; + + ConvShaderType shaderType; + ConvShaderConfig config; + bool firstForwardFinsh = false; }; #endif // HAVE_VULKAN diff --git a/modules/dnn/src/vkcom/include/op_lrn.hpp b/modules/dnn/src/vkcom/include/op_lrn.hpp deleted file mode 100644 index caafb9d09a..0000000000 --- a/modules/dnn/src/vkcom/include/op_lrn.hpp +++ /dev/null @@ -1,70 +0,0 @@ -// This file is part of OpenCV project. -// It is subject to the license terms in the LICENSE file found in the top-level directory -// of this distribution and at http://opencv.org/license.html. -// -// Copyright (C) 2018, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. - -#ifndef OPENCV_DNN_VKCOM_OP_LRN_HPP -#define OPENCV_DNN_VKCOM_OP_LRN_HPP - -#include "vkcom.hpp" -#include "op_base.hpp" - -namespace cv { namespace dnn { namespace vkcom { - -#ifdef HAVE_VULKAN - -enum LRNShaderType -{ - kLRNShaderTypeBasic = 0, - kLRNShaderTypeNum -}; - -struct LRNShaderConfig -{ - int local_size_x; - int local_size_y; - int local_size_z; - int block_height; - int block_width; - int block_depth; - LRNShaderType shader_type; -}; - -class OpLRN : public OpBase -{ -public: - OpLRN(const int radius, const float bias, - const float alpha, const float beta, - const bool norm_by_size); - void reshapeOutTensor(Tensor& in, Tensor& out); - bool forward(Tensor& in, Tensor& out); - virtual bool forward(std::vector& ins, - std::vector& blobs, - std::vector& outs) CV_OVERRIDE; - -private: - bool init(const int radius, const float bias, - const float alpha, const float beta, - const bool norm_by_size); - bool computeGroupCount(); - int batch_; - int height_; - int width_; - int channels_; - int radius_; - float bias_; - float alpha_; - float beta_; - int filter_len_; - int thread_num_; - bool norm_by_size_; - LRNShaderConfig config_; -}; - -#endif // HAVE_VULKAN - -}}} // namespace cv::dnn::vkcom - -#endif // OPENCV_DNN_VKCOM_OP_LRN_HPP diff --git a/modules/dnn/src/vkcom/include/op_matmul.hpp b/modules/dnn/src/vkcom/include/op_matmul.hpp new file mode 100644 index 0000000000..db7bcdcfcf --- /dev/null +++ b/modules/dnn/src/vkcom/include/op_matmul.hpp @@ -0,0 +1,47 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. + +#ifndef OPENCV_OP_MATMUL_HPP +#define OPENCV_OP_MATMUL_HPP + +#include "vkcom.hpp" +#include "op_base.hpp" + +namespace cv { namespace dnn { namespace vkcom { + +#ifdef HAVE_VULKAN + +struct MatMulShaderConfig +{ + int local_size_x; + int local_size_y; + int local_size_z; +}; + +// Current Vulkan Convolution layer only support Conv2D. +class OpMatMul : public OpBase +{ +public: + OpMatMul(std::vector& matBlobs, const int M, const int K, const int N); + + void firstForward(); // Execute only in the first forward. + virtual bool forward(std::vector& ins, std::vector& outs) CV_OVERRIDE; + Ptr weightTensorPtr; +private: + bool computeGroupCount(); + + const int M, K, N; + + int Hi, Wi; + int H0, W0; + int batch; + + MatMulShaderConfig config; + bool firstForwardFinsh = false; +}; + +#endif // HAVE_VULKAN + +}}} // namespace cv::dnn::vkcom +#endif //OPENCV_OP_MATMUL_HPP diff --git a/modules/dnn/src/vkcom/include/op_permute.hpp b/modules/dnn/src/vkcom/include/op_permute.hpp deleted file mode 100644 index b594d30cbe..0000000000 --- a/modules/dnn/src/vkcom/include/op_permute.hpp +++ /dev/null @@ -1,50 +0,0 @@ -// This file is part of OpenCV project. -// It is subject to the license terms in the LICENSE file found in the top-level directory -// of this distribution and at http://opencv.org/license.html. -// -// Copyright (C) 2018, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. - -#ifndef OPENCV_DNN_VKCOM_OP_PERMUTE_HPP -#define OPENCV_DNN_VKCOM_OP_PERMUTE_HPP - -#include "vkcom.hpp" -#include "op_base.hpp" - -namespace cv { namespace dnn { namespace vkcom { - -#ifdef HAVE_VULKAN - -class OpPermute: public OpBase -{ -public: - OpPermute(std::vector& order); - bool forward(std::vector& ins, std::vector& outs); - void reshapeOutTensor(std::vector& in, std::vector& outs); - virtual bool forward(std::vector& ins, - std::vector& blobs, - std::vector& outs) CV_OVERRIDE; - -private: - void prepareStrides(const Shape &shape_before, const Shape &shape_after); - bool computeGroupCount(); - - std::vector order_; - bool need_permute_; - int global_size_; - int nthreads_; - int dims_; - Tensor tensor_order_; - Tensor tensor_old_stride_; - Tensor tensor_new_stride_; - std::vector old_stride_; - std::vector new_stride_; - Shape in_shape_; - Shape out_shape_; -}; - -#endif // HAVE_VULKAN - -}}} // namespace cv::dnn::vkcom - -#endif // OPENCV_DNN_VKCOM_OP_PERMUTE_HPP diff --git a/modules/dnn/src/vkcom/include/op_pool.hpp b/modules/dnn/src/vkcom/include/op_pool.hpp deleted file mode 100644 index 50f8fc0682..0000000000 --- a/modules/dnn/src/vkcom/include/op_pool.hpp +++ /dev/null @@ -1,70 +0,0 @@ -// This file is part of OpenCV project. -// It is subject to the license terms in the LICENSE file found in the top-level directory -// of this distribution and at http://opencv.org/license.html. -// -// Copyright (C) 2018, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. - -#ifndef OPENCV_DNN_VKCOM_OP_POOL_HPP -#define OPENCV_DNN_VKCOM_OP_POOL_HPP - -#include "vkcom.hpp" -#include "op_base.hpp" - -namespace cv { namespace dnn { namespace vkcom { - -#ifdef HAVE_VULKAN - -enum PoolType { kPoolTypeAvg, kPoolTypeMax, kPoolTypeNum }; - -struct PoolShaderConfig -{ - int local_size_x; - int local_size_y; - int local_size_z; - int block_height; - int block_width; - int block_depth; -}; - -class OpPool: public OpBase -{ -public: - OpPool(const int* filter_size, const int* pad, const int* stride, - const int padding_mode, const PoolType pool_type, - const bool avg_pool_padded_area); - bool forward(Tensor& in, Tensor& out, Tensor& mask); - void reshapeOutTensor(Tensor& in, Tensor& out); - virtual bool forward(std::vector& ins, - std::vector& blobs, - std::vector& outs) CV_OVERRIDE; -private: - bool init(const int* filter_size, const int* pad, const int* stride, - const int padding_mode, const PoolType type, const bool avg_pool_padded_area); - bool computeGroupCount(); - - int batch_; - int channels_; - int in_height_; - int in_width_; - int out_height_; - int out_width_; - int filter_height_; - int filter_width_; - int stride_height_; - int stride_width_; - int padding_left_; - int padding_top_; - PoolType pool_type_; - int avg_pool_padded_area_; - int need_mask_; - PaddingMode padding_mode_; - //int activation_; - PoolShaderConfig config_; -}; - -#endif // HAVE_VULKAN - -}}} // namespace cv::dnn::vkcom - -#endif // OPENCV_DNN_VKCOM_OP_POOL_HPP diff --git a/modules/dnn/src/vkcom/include/op_prior_box.hpp b/modules/dnn/src/vkcom/include/op_prior_box.hpp deleted file mode 100644 index 7068d66cfb..0000000000 --- a/modules/dnn/src/vkcom/include/op_prior_box.hpp +++ /dev/null @@ -1,66 +0,0 @@ -// This file is part of OpenCV project. -// It is subject to the license terms in the LICENSE file found in the top-level directory -// of this distribution and at http://opencv.org/license.html. -// -// Copyright (C) 2018, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. - -#ifndef OPENCV_DNN_VKCOM_OP_PRIOR_BOX_HPP -#define OPENCV_DNN_VKCOM_OP_PRIOR_BOX_HPP - -#include "vkcom.hpp" -#include "op_base.hpp" - -namespace cv { namespace dnn { namespace vkcom { - -#ifdef HAVE_VULKAN - -class OpPriorBox: public OpBase -{ -public: - OpPriorBox(float step_x, - float step_y, - bool clip, - int num_priors, - std::vector& variance, - std::vector& offsets_x, - std::vector& offsets_y, - std::vector& box_widths, - std::vector& box_heights); - bool forward(std::vector& in, Tensor& out); - void reshapeOutTensor(std::vector& in, Tensor& out); - virtual bool forward(std::vector& ins, - std::vector& blobs, - std::vector& outs) CV_OVERRIDE; -private: - bool computeGroupCount(); - - int global_size_; - int nthreads_; - float step_x_; - float step_y_; - bool clip_; - int num_priors_; - std::vector variance_; - std::vector offsets_x_; - std::vector offsets_y_; - std::vector box_widths_; - std::vector box_heights_; - int img_h_; - int img_w_; - int in_h_; - int in_w_; - int out_channel_; - int out_channel_size_; - Tensor tensor_offsets_x_; - Tensor tensor_offsets_y_; - Tensor tensor_widths_; - Tensor tensor_heights_; - Tensor tensor_variance_; -}; - -#endif // HAVE_VULKAN - -}}} // namespace cv::dnn::vkcom - -#endif // OPENCV_DNN_VKCOM_OP_PRIOR_BOX_HPP diff --git a/modules/dnn/src/vkcom/include/op_relu.hpp b/modules/dnn/src/vkcom/include/op_relu.hpp deleted file mode 100644 index 82846c7495..0000000000 --- a/modules/dnn/src/vkcom/include/op_relu.hpp +++ /dev/null @@ -1,37 +0,0 @@ -// This file is part of OpenCV project. -// It is subject to the license terms in the LICENSE file found in the top-level directory -// of this distribution and at http://opencv.org/license.html. -// -// Copyright (C) 2018, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. - -#ifndef OPENCV_DNN_VKCOM_OP_RELU_HPP -#define OPENCV_DNN_VKCOM_OP_RELU_HPP - -#include "vkcom.hpp" -#include "op_base.hpp" - -namespace cv { namespace dnn { namespace vkcom { - -#ifdef HAVE_VULKAN - -class OpReLU: public OpBase -{ -public: - OpReLU(const float slope = 1.f); - bool forward(Tensor& in, Tensor& out); - void reshapeOutTensor(Tensor& in, Tensor& out); - virtual bool forward(std::vector& ins, - std::vector& blobs, - std::vector& outs) CV_OVERRIDE; -private: - bool computeGroupCount(); - int total_; - float slope_; -}; - -#endif // HAVE_VULKAN - -}}} // namespace cv::dnn::vkcom - -#endif // OPENCV_DNN_VKCOM_OP_RELU_HPP diff --git a/modules/dnn/src/vkcom/include/op_softmax.hpp b/modules/dnn/src/vkcom/include/op_softmax.hpp deleted file mode 100644 index 12127a8bb7..0000000000 --- a/modules/dnn/src/vkcom/include/op_softmax.hpp +++ /dev/null @@ -1,56 +0,0 @@ -// This file is part of OpenCV project. -// It is subject to the license terms in the LICENSE file found in the top-level directory -// of this distribution and at http://opencv.org/license.html. -// -// Copyright (C) 2018, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. - -#ifndef OPENCV_DNN_VKCOM_OP_SOFTMAX_HPP -#define OPENCV_DNN_VKCOM_OP_SOFTMAX_HPP - -#include "vkcom.hpp" -#include "op_base.hpp" - -namespace cv { namespace dnn { namespace vkcom { - -#ifdef HAVE_VULKAN - -struct SoftmaxShaderConfig -{ - int local_size_x; - int local_size_y; - int local_size_z; - int block_height; - int block_width; - int block_depth; -}; - -class OpSoftmax: public OpBase -{ -public: - OpSoftmax(const int axis, const bool log_softmax = false); - ~OpSoftmax(); - void reshapeOutTensor(Tensor& in, Tensor& out); - bool forward(Tensor& in, Tensor& out); - virtual bool forward(std::vector& ins, - std::vector& blobs, - std::vector& outs) CV_OVERRIDE; -private: - bool init(const int axis, const bool log_softmax); - bool computeGroupCount(); - - int axis_; - int channels_; - int channel_size_; - int outer_size_; - bool log_softmax_; - SoftmaxShaderConfig config_; - Tensor* max_tensor_; - Tensor* sum_tensor_; -}; - -#endif // HAVE_VULKAN - -}}} // namespace cv::dnn::vkcom - -#endif // OPENCV_DNN_VKCOM_OP_SOFTMAX_HPP diff --git a/modules/dnn/src/vkcom/include/pipeline.hpp b/modules/dnn/src/vkcom/include/pipeline.hpp new file mode 100644 index 0000000000..a1f16d7ba6 --- /dev/null +++ b/modules/dnn/src/vkcom/include/pipeline.hpp @@ -0,0 +1,104 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. + +#ifndef OPENCV_PIPELINE_VULKAN_HPP +#define OPENCV_PIPELINE_VULKAN_HPP + +#include "../../precomp.hpp" +#include "tensor.hpp" +#include +#include + +#ifdef HAVE_VULKAN +#include +#endif // HAVE_VULKAN + +namespace cv { namespace dnn { namespace vkcom { + +#ifdef HAVE_VULKAN + +class Pipeline; +class Descriptor +{ +public: + static Ptr create(const VkDescriptorPool& pool, const VkDescriptorSet& set, + Pipeline* _pipeline); + ~Descriptor(); + + void writeTensor(Tensor tensor, int bindIndex); + // the buffer is bond to the device VkMemory. + void writeBuffer(VkBuffer buffer, int bindIndex, size_t size, VkDeviceSize offset = 0); + + VkDescriptorSet get() const + { + return desSet; + } + +private: + friend class Pipeline; + Descriptor(const VkDescriptorPool& pool, const VkDescriptorSet& set, Pipeline* _pipeline); + + VkDescriptorPool desPool; + VkDescriptorSet desSet; + Pipeline* pipeline; + // If is true, the deconstruct will release the instance, otherwise, re-use it. + bool needRelease = true; +}; + +class Pipeline +{ +public: + static Ptr create(const uint32_t* spv, size_t length, const std::vector& bufferTypes, + VkPipelineCache& cache, const std::vector& localSize = std::vector()); + ~Pipeline(); + + VkPipeline get() const + { + return pipelineVK; + } + + Ptr createSet(); + + void bind(VkCommandBuffer buffer, VkDescriptorSet descriptorSet) const; + + inline VkDescriptorType argType(int index) const + { + return bufferTypes[index]; + } + + // To save the descriptor that can be reused. + std::queue > descriptorPairQueue; +private: + Pipeline(const uint32_t* spv, size_t length, const std::vector& bufferTypes, + VkPipelineCache& cache, const std::vector& localSize = std::vector()); + + VkPipeline pipelineVK; + VkPipelineLayout pipelineLayout; + std::vector desPoolSize; + VkDescriptorSetLayout setLayout; + std::vector bufferTypes; +}; + +class PipelineFactory +{ +public: + static Ptr create(); + + // Try to retrieve the Pipeline from pipelineCreated, create a new pipeline instance if not found. + Ptr getPipeline(const std::string& key, const std::vector& types, + const std::vector& localSize = std::vector()); + ~PipelineFactory(); + void reset(); + + void operator=(const PipelineFactory &) = delete; + PipelineFactory(PipelineFactory &other) = delete; +private: + PipelineFactory(); + mutable std::map > pipelineCreated; + VkPipelineCache pipelineCache; +}; + +#endif // HAVE_VULKAN +}}} // namespace cv::dnn::vkcom +#endif //OPENCV_PIPELINE_VULKAN_HPP diff --git a/modules/dnn/src/vkcom/include/tensor.hpp b/modules/dnn/src/vkcom/include/tensor.hpp index d8ed9a20a0..806d55c5d9 100644 --- a/modules/dnn/src/vkcom/include/tensor.hpp +++ b/modules/dnn/src/vkcom/include/tensor.hpp @@ -1,9 +1,6 @@ // This file is part of OpenCV project. // It is subject to the license terms in the LICENSE file found in the top-level directory // of this distribution and at http://opencv.org/license.html. -// -// Copyright (C) 2018, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. #ifndef OPENCV_DNN_VKCOM_TENSOR_HPP #define OPENCV_DNN_VKCOM_TENSOR_HPP @@ -23,8 +20,9 @@ class Buffer; class Tensor { public: - Tensor(Format fmt = kFormatFp32); - Tensor(const char* data, std::vector& shape, Format fmt = kFormatFp32); + Tensor(Format fmt = kFormatFp32, VkBufferUsageFlags usageFlag = VK_BUFFER_USAGE_STORAGE_BUFFER_BIT); + Tensor(const char* data, std::vector& shape, Format fmt = kFormatFp32, + VkBufferUsageFlags usageFlag = VK_BUFFER_USAGE_STORAGE_BUFFER_BIT); void* map(); void unMap(); Shape getShape() const; @@ -42,14 +40,14 @@ public: size_t size() const { return size_in_byte_; } bool isEmpty() { return size_in_byte_ == 0 ? true : false; } void copyTo(Tensor& dst); - std::shared_ptr getBuffer() { return buffer_; } + Ptr getBuffer() { return buffer_; } private: - VkDevice device_; std::vector shape_; size_t size_in_byte_; - std::shared_ptr buffer_; + Ptr buffer_; Format format_; + VkBufferUsageFlags usageFlag_; }; #endif // HAVE_VULKAN diff --git a/modules/dnn/src/vkcom/include/vkcom.hpp b/modules/dnn/src/vkcom/include/vkcom.hpp index ee4f3be4a2..4c774abfb0 100644 --- a/modules/dnn/src/vkcom/include/vkcom.hpp +++ b/modules/dnn/src/vkcom/include/vkcom.hpp @@ -24,19 +24,17 @@ enum Format{ }; enum OpType { + kOpTypeNull = -1, kOpTypeConv, - kOpTypePool, - kOpTypeDWConv, - kOpTypeLRN, - kOpTypeConcat, - kOpTypeSoftmax, - kOpTypeReLU, - kOpTypePriorBox, - kOpTypePermute, - kOpTypeNum + kOpTypeMatMul, +}; + +enum FusedActivationType { + kFusedActivUnsupport = -1, + kFusedActivNone = 0, + kFusedActivRelu = 1, + kFusedActivRelu6 = 2, }; -enum PaddingMode { kPaddingModeSame, kPaddingModeValid, kPaddingModeCaffe, kPaddingModeNum }; -enum FusedActivationType { kNone, kRelu, kRelu1, kRelu6, kActivationNum }; typedef std::vector Shape; bool isAvailable(); @@ -45,16 +43,13 @@ bool isAvailable(); }}} // namespace cv::dnn::vkcom -#include "tensor.hpp" #include "buffer.hpp" +#include "tensor.hpp" +#include "context.hpp" + +// layer #include "op_base.hpp" -#include "op_concat.hpp" #include "op_conv.hpp" -#include "op_lrn.hpp" -#include "op_softmax.hpp" -#include "op_relu.hpp" -#include "op_pool.hpp" -#include "op_prior_box.hpp" -#include "op_permute.hpp" +#include "op_matmul.hpp" #endif // OPENCV_DNN_VKCOM_HPP diff --git a/modules/dnn/src/vkcom/shader/avg_pool.comp b/modules/dnn/src/vkcom/shader/avg_pool.comp deleted file mode 100644 index 06ef06aaae..0000000000 --- a/modules/dnn/src/vkcom/shader/avg_pool.comp +++ /dev/null @@ -1,69 +0,0 @@ -#version 450 -#define LOCAL_SZ_X 256 -layout(push_constant) uniform pushBlock { - int channels; - int in_h; - int in_w; - int out_h; - int out_w; - int padding_h; - int padding_w; - int filter_h; - int filter_w; - int stride_h; - int stride_w; - int total; - int padded_area; -} p; - -layout(binding = 0) readonly buffer Input0{ - float in_buffer[]; -}; - -layout(binding = 1) writeonly buffer Output{ - float out_buffer[]; -}; - -layout(local_size_x = LOCAL_SZ_X, local_size_y = 1, local_size_z = 1) in; - -void main() -{ - int global_size = int(gl_WorkGroupSize.x * gl_NumWorkGroups.x); - int gid = int(gl_GlobalInvocationID.x); - for (int index = gid; index < p.total; index += global_size) - { - const int pw = index % p.out_w; - const int ph = (index / p.out_w) % p.out_h; - const int c = (index / p.out_w / p.out_h) % p.channels; - const int n = index / p.out_w / p.out_h / p.channels; - int hstart = ph * p.stride_h - p.padding_h; - int wstart = pw * p.stride_w - p.padding_w; - int hend = min(hstart + p.filter_h, p.in_h + p.padding_h); - int wend = min(wstart + p.filter_w, p.in_w + p.padding_w); - int pool_size; - if (p.padded_area == 1) - { - pool_size = (hend - hstart) * (wend - wstart); - hstart = max(hstart, 0); - wstart = max(wstart, 0); - hend = min(hend, p.in_h); - wend = min(wend, p.in_w); - } - else - { - hstart = max(hstart, 0); - wstart = max(wstart, 0); - hend = min(hend, p.in_h); - wend = min(wend, p.in_w); - pool_size = (hend - hstart) * (wend - wstart); - } - float aveval = 0; - int off = (n * p.channels + c) * p.in_h * p.in_w; - for (int h = hstart; h < hend; ++h) { - for (int w = wstart; w < wend; ++w) { - aveval += in_buffer[off + h * p.in_w + w]; - } - } - out_buffer[index] = aveval / pool_size; - } -} diff --git a/modules/dnn/src/vkcom/shader/avg_pool_spv.cpp b/modules/dnn/src/vkcom/shader/avg_pool_spv.cpp deleted file mode 100644 index f2a0a02ebe..0000000000 --- a/modules/dnn/src/vkcom/shader/avg_pool_spv.cpp +++ /dev/null @@ -1,208 +0,0 @@ -// This file is part of OpenCV project. -// It is subject to the license terms in the LICENSE file found in the top-level directory -// of this distribution and at http://opencv.org/license.html. -// -// Copyright (C) 2018, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. - -#include "../../precomp.hpp" - -namespace cv { namespace dnn { namespace vkcom { - -extern const unsigned int avg_pool_spv[1538] = { - 0x07230203,0x00010000,0x00080001,0x000000f5,0x00000000,0x00020011,0x00000001,0x0006000b, - 0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001, - 0x0007000f,0x00000005,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x00000015,0x00060010, - 0x00000004,0x00000011,0x00000100,0x00000001,0x00000001,0x00030003,0x00000002,0x000001c2, - 0x00040005,0x00000004,0x6e69616d,0x00000000,0x00050005,0x00000008,0x626f6c67,0x735f6c61, - 0x00657a69,0x00070005,0x0000000d,0x4e5f6c67,0x6f576d75,0x72476b72,0x7370756f,0x00000000, - 0x00030005,0x00000014,0x00646967,0x00080005,0x00000015,0x475f6c67,0x61626f6c,0x766e496c, - 0x7461636f,0x496e6f69,0x00000044,0x00040005,0x00000019,0x65646e69,0x00000078,0x00050005, - 0x00000021,0x68737570,0x636f6c42,0x0000006b,0x00060006,0x00000021,0x00000000,0x6e616863, - 0x736c656e,0x00000000,0x00050006,0x00000021,0x00000001,0x685f6e69,0x00000000,0x00050006, - 0x00000021,0x00000002,0x775f6e69,0x00000000,0x00050006,0x00000021,0x00000003,0x5f74756f, - 0x00000068,0x00050006,0x00000021,0x00000004,0x5f74756f,0x00000077,0x00060006,0x00000021, - 0x00000005,0x64646170,0x5f676e69,0x00000068,0x00060006,0x00000021,0x00000006,0x64646170, - 0x5f676e69,0x00000077,0x00060006,0x00000021,0x00000007,0x746c6966,0x685f7265,0x00000000, - 0x00060006,0x00000021,0x00000008,0x746c6966,0x775f7265,0x00000000,0x00060006,0x00000021, - 0x00000009,0x69727473,0x685f6564,0x00000000,0x00060006,0x00000021,0x0000000a,0x69727473, - 0x775f6564,0x00000000,0x00050006,0x00000021,0x0000000b,0x61746f74,0x0000006c,0x00060006, - 0x00000021,0x0000000c,0x64646170,0x615f6465,0x00616572,0x00030005,0x00000023,0x00000070, - 0x00030005,0x0000002a,0x00007770,0x00030005,0x00000030,0x00006870,0x00030005,0x00000039, - 0x00000063,0x00030005,0x00000045,0x0000006e,0x00040005,0x00000050,0x61747368,0x00007472, - 0x00040005,0x0000005a,0x61747377,0x00007472,0x00040005,0x00000064,0x646e6568,0x00000000, - 0x00040005,0x00000071,0x646e6577,0x00000000,0x00050005,0x00000084,0x6c6f6f70,0x7a69735f, - 0x00000065,0x00040005,0x000000ae,0x76657661,0x00006c61,0x00030005,0x000000b0,0x0066666f, - 0x00030005,0x000000bd,0x00000068,0x00030005,0x000000c7,0x00000077,0x00040005,0x000000d2, - 0x75706e49,0x00003074,0x00060006,0x000000d2,0x00000000,0x625f6e69,0x65666675,0x00000072, - 0x00030005,0x000000d4,0x00000000,0x00040005,0x000000e7,0x7074754f,0x00007475,0x00060006, - 0x000000e7,0x00000000,0x5f74756f,0x66667562,0x00007265,0x00030005,0x000000e9,0x00000000, - 0x00040047,0x0000000d,0x0000000b,0x00000018,0x00040047,0x00000015,0x0000000b,0x0000001c, - 0x00050048,0x00000021,0x00000000,0x00000023,0x00000000,0x00050048,0x00000021,0x00000001, - 0x00000023,0x00000004,0x00050048,0x00000021,0x00000002,0x00000023,0x00000008,0x00050048, - 0x00000021,0x00000003,0x00000023,0x0000000c,0x00050048,0x00000021,0x00000004,0x00000023, - 0x00000010,0x00050048,0x00000021,0x00000005,0x00000023,0x00000014,0x00050048,0x00000021, - 0x00000006,0x00000023,0x00000018,0x00050048,0x00000021,0x00000007,0x00000023,0x0000001c, - 0x00050048,0x00000021,0x00000008,0x00000023,0x00000020,0x00050048,0x00000021,0x00000009, - 0x00000023,0x00000024,0x00050048,0x00000021,0x0000000a,0x00000023,0x00000028,0x00050048, - 0x00000021,0x0000000b,0x00000023,0x0000002c,0x00050048,0x00000021,0x0000000c,0x00000023, - 0x00000030,0x00030047,0x00000021,0x00000002,0x00040047,0x000000d1,0x00000006,0x00000004, - 0x00040048,0x000000d2,0x00000000,0x00000018,0x00050048,0x000000d2,0x00000000,0x00000023, - 0x00000000,0x00030047,0x000000d2,0x00000003,0x00040047,0x000000d4,0x00000022,0x00000000, - 0x00040047,0x000000d4,0x00000021,0x00000000,0x00040047,0x000000e6,0x00000006,0x00000004, - 0x00040048,0x000000e7,0x00000000,0x00000019,0x00050048,0x000000e7,0x00000000,0x00000023, - 0x00000000,0x00030047,0x000000e7,0x00000003,0x00040047,0x000000e9,0x00000022,0x00000000, - 0x00040047,0x000000e9,0x00000021,0x00000001,0x00040047,0x000000f4,0x0000000b,0x00000019, - 0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,0x00040015,0x00000006,0x00000020, - 0x00000001,0x00040020,0x00000007,0x00000007,0x00000006,0x00040015,0x00000009,0x00000020, - 0x00000000,0x0004002b,0x00000009,0x0000000a,0x00000100,0x00040017,0x0000000b,0x00000009, - 0x00000003,0x00040020,0x0000000c,0x00000001,0x0000000b,0x0004003b,0x0000000c,0x0000000d, - 0x00000001,0x0004002b,0x00000009,0x0000000e,0x00000000,0x00040020,0x0000000f,0x00000001, - 0x00000009,0x0004003b,0x0000000c,0x00000015,0x00000001,0x000f001e,0x00000021,0x00000006, - 0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006, - 0x00000006,0x00000006,0x00000006,0x00000006,0x00040020,0x00000022,0x00000009,0x00000021, - 0x0004003b,0x00000022,0x00000023,0x00000009,0x0004002b,0x00000006,0x00000024,0x0000000b, - 0x00040020,0x00000025,0x00000009,0x00000006,0x00020014,0x00000028,0x0004002b,0x00000006, - 0x0000002c,0x00000004,0x0004002b,0x00000006,0x00000035,0x00000003,0x0004002b,0x00000006, - 0x00000041,0x00000000,0x0004002b,0x00000006,0x00000052,0x00000009,0x0004002b,0x00000006, - 0x00000056,0x00000005,0x0004002b,0x00000006,0x0000005c,0x0000000a,0x0004002b,0x00000006, - 0x00000060,0x00000006,0x0004002b,0x00000006,0x00000066,0x00000007,0x0004002b,0x00000006, - 0x0000006a,0x00000001,0x0004002b,0x00000006,0x00000073,0x00000008,0x0004002b,0x00000006, - 0x00000077,0x00000002,0x0004002b,0x00000006,0x0000007e,0x0000000c,0x00030016,0x000000ac, - 0x00000020,0x00040020,0x000000ad,0x00000007,0x000000ac,0x0004002b,0x000000ac,0x000000af, - 0x00000000,0x0003001d,0x000000d1,0x000000ac,0x0003001e,0x000000d2,0x000000d1,0x00040020, - 0x000000d3,0x00000002,0x000000d2,0x0004003b,0x000000d3,0x000000d4,0x00000002,0x00040020, - 0x000000dd,0x00000002,0x000000ac,0x0003001d,0x000000e6,0x000000ac,0x0003001e,0x000000e7, - 0x000000e6,0x00040020,0x000000e8,0x00000002,0x000000e7,0x0004003b,0x000000e8,0x000000e9, - 0x00000002,0x0004002b,0x00000009,0x000000f3,0x00000001,0x0006002c,0x0000000b,0x000000f4, - 0x0000000a,0x000000f3,0x000000f3,0x00050036,0x00000002,0x00000004,0x00000000,0x00000003, - 0x000200f8,0x00000005,0x0004003b,0x00000007,0x00000008,0x00000007,0x0004003b,0x00000007, - 0x00000014,0x00000007,0x0004003b,0x00000007,0x00000019,0x00000007,0x0004003b,0x00000007, - 0x0000002a,0x00000007,0x0004003b,0x00000007,0x00000030,0x00000007,0x0004003b,0x00000007, - 0x00000039,0x00000007,0x0004003b,0x00000007,0x00000045,0x00000007,0x0004003b,0x00000007, - 0x00000050,0x00000007,0x0004003b,0x00000007,0x0000005a,0x00000007,0x0004003b,0x00000007, - 0x00000064,0x00000007,0x0004003b,0x00000007,0x00000071,0x00000007,0x0004003b,0x00000007, - 0x00000084,0x00000007,0x0004003b,0x000000ad,0x000000ae,0x00000007,0x0004003b,0x00000007, - 0x000000b0,0x00000007,0x0004003b,0x00000007,0x000000bd,0x00000007,0x0004003b,0x00000007, - 0x000000c7,0x00000007,0x00050041,0x0000000f,0x00000010,0x0000000d,0x0000000e,0x0004003d, - 0x00000009,0x00000011,0x00000010,0x00050084,0x00000009,0x00000012,0x0000000a,0x00000011, - 0x0004007c,0x00000006,0x00000013,0x00000012,0x0003003e,0x00000008,0x00000013,0x00050041, - 0x0000000f,0x00000016,0x00000015,0x0000000e,0x0004003d,0x00000009,0x00000017,0x00000016, - 0x0004007c,0x00000006,0x00000018,0x00000017,0x0003003e,0x00000014,0x00000018,0x0004003d, - 0x00000006,0x0000001a,0x00000014,0x0003003e,0x00000019,0x0000001a,0x000200f9,0x0000001b, - 0x000200f8,0x0000001b,0x000400f6,0x0000001d,0x0000001e,0x00000000,0x000200f9,0x0000001f, - 0x000200f8,0x0000001f,0x0004003d,0x00000006,0x00000020,0x00000019,0x00050041,0x00000025, - 0x00000026,0x00000023,0x00000024,0x0004003d,0x00000006,0x00000027,0x00000026,0x000500b1, - 0x00000028,0x00000029,0x00000020,0x00000027,0x000400fa,0x00000029,0x0000001c,0x0000001d, - 0x000200f8,0x0000001c,0x0004003d,0x00000006,0x0000002b,0x00000019,0x00050041,0x00000025, - 0x0000002d,0x00000023,0x0000002c,0x0004003d,0x00000006,0x0000002e,0x0000002d,0x0005008b, - 0x00000006,0x0000002f,0x0000002b,0x0000002e,0x0003003e,0x0000002a,0x0000002f,0x0004003d, - 0x00000006,0x00000031,0x00000019,0x00050041,0x00000025,0x00000032,0x00000023,0x0000002c, - 0x0004003d,0x00000006,0x00000033,0x00000032,0x00050087,0x00000006,0x00000034,0x00000031, - 0x00000033,0x00050041,0x00000025,0x00000036,0x00000023,0x00000035,0x0004003d,0x00000006, - 0x00000037,0x00000036,0x0005008b,0x00000006,0x00000038,0x00000034,0x00000037,0x0003003e, - 0x00000030,0x00000038,0x0004003d,0x00000006,0x0000003a,0x00000019,0x00050041,0x00000025, - 0x0000003b,0x00000023,0x0000002c,0x0004003d,0x00000006,0x0000003c,0x0000003b,0x00050087, - 0x00000006,0x0000003d,0x0000003a,0x0000003c,0x00050041,0x00000025,0x0000003e,0x00000023, - 0x00000035,0x0004003d,0x00000006,0x0000003f,0x0000003e,0x00050087,0x00000006,0x00000040, - 0x0000003d,0x0000003f,0x00050041,0x00000025,0x00000042,0x00000023,0x00000041,0x0004003d, - 0x00000006,0x00000043,0x00000042,0x0005008b,0x00000006,0x00000044,0x00000040,0x00000043, - 0x0003003e,0x00000039,0x00000044,0x0004003d,0x00000006,0x00000046,0x00000019,0x00050041, - 0x00000025,0x00000047,0x00000023,0x0000002c,0x0004003d,0x00000006,0x00000048,0x00000047, - 0x00050087,0x00000006,0x00000049,0x00000046,0x00000048,0x00050041,0x00000025,0x0000004a, - 0x00000023,0x00000035,0x0004003d,0x00000006,0x0000004b,0x0000004a,0x00050087,0x00000006, - 0x0000004c,0x00000049,0x0000004b,0x00050041,0x00000025,0x0000004d,0x00000023,0x00000041, - 0x0004003d,0x00000006,0x0000004e,0x0000004d,0x00050087,0x00000006,0x0000004f,0x0000004c, - 0x0000004e,0x0003003e,0x00000045,0x0000004f,0x0004003d,0x00000006,0x00000051,0x00000030, - 0x00050041,0x00000025,0x00000053,0x00000023,0x00000052,0x0004003d,0x00000006,0x00000054, - 0x00000053,0x00050084,0x00000006,0x00000055,0x00000051,0x00000054,0x00050041,0x00000025, - 0x00000057,0x00000023,0x00000056,0x0004003d,0x00000006,0x00000058,0x00000057,0x00050082, - 0x00000006,0x00000059,0x00000055,0x00000058,0x0003003e,0x00000050,0x00000059,0x0004003d, - 0x00000006,0x0000005b,0x0000002a,0x00050041,0x00000025,0x0000005d,0x00000023,0x0000005c, - 0x0004003d,0x00000006,0x0000005e,0x0000005d,0x00050084,0x00000006,0x0000005f,0x0000005b, - 0x0000005e,0x00050041,0x00000025,0x00000061,0x00000023,0x00000060,0x0004003d,0x00000006, - 0x00000062,0x00000061,0x00050082,0x00000006,0x00000063,0x0000005f,0x00000062,0x0003003e, - 0x0000005a,0x00000063,0x0004003d,0x00000006,0x00000065,0x00000050,0x00050041,0x00000025, - 0x00000067,0x00000023,0x00000066,0x0004003d,0x00000006,0x00000068,0x00000067,0x00050080, - 0x00000006,0x00000069,0x00000065,0x00000068,0x00050041,0x00000025,0x0000006b,0x00000023, - 0x0000006a,0x0004003d,0x00000006,0x0000006c,0x0000006b,0x00050041,0x00000025,0x0000006d, - 0x00000023,0x00000056,0x0004003d,0x00000006,0x0000006e,0x0000006d,0x00050080,0x00000006, - 0x0000006f,0x0000006c,0x0000006e,0x0007000c,0x00000006,0x00000070,0x00000001,0x00000027, - 0x00000069,0x0000006f,0x0003003e,0x00000064,0x00000070,0x0004003d,0x00000006,0x00000072, - 0x0000005a,0x00050041,0x00000025,0x00000074,0x00000023,0x00000073,0x0004003d,0x00000006, - 0x00000075,0x00000074,0x00050080,0x00000006,0x00000076,0x00000072,0x00000075,0x00050041, - 0x00000025,0x00000078,0x00000023,0x00000077,0x0004003d,0x00000006,0x00000079,0x00000078, - 0x00050041,0x00000025,0x0000007a,0x00000023,0x00000060,0x0004003d,0x00000006,0x0000007b, - 0x0000007a,0x00050080,0x00000006,0x0000007c,0x00000079,0x0000007b,0x0007000c,0x00000006, - 0x0000007d,0x00000001,0x00000027,0x00000076,0x0000007c,0x0003003e,0x00000071,0x0000007d, - 0x00050041,0x00000025,0x0000007f,0x00000023,0x0000007e,0x0004003d,0x00000006,0x00000080, - 0x0000007f,0x000500aa,0x00000028,0x00000081,0x00000080,0x0000006a,0x000300f7,0x00000083, - 0x00000000,0x000400fa,0x00000081,0x00000082,0x00000098,0x000200f8,0x00000082,0x0004003d, - 0x00000006,0x00000085,0x00000064,0x0004003d,0x00000006,0x00000086,0x00000050,0x00050082, - 0x00000006,0x00000087,0x00000085,0x00000086,0x0004003d,0x00000006,0x00000088,0x00000071, - 0x0004003d,0x00000006,0x00000089,0x0000005a,0x00050082,0x00000006,0x0000008a,0x00000088, - 0x00000089,0x00050084,0x00000006,0x0000008b,0x00000087,0x0000008a,0x0003003e,0x00000084, - 0x0000008b,0x0004003d,0x00000006,0x0000008c,0x00000050,0x0007000c,0x00000006,0x0000008d, - 0x00000001,0x0000002a,0x0000008c,0x00000041,0x0003003e,0x00000050,0x0000008d,0x0004003d, - 0x00000006,0x0000008e,0x0000005a,0x0007000c,0x00000006,0x0000008f,0x00000001,0x0000002a, - 0x0000008e,0x00000041,0x0003003e,0x0000005a,0x0000008f,0x0004003d,0x00000006,0x00000090, - 0x00000064,0x00050041,0x00000025,0x00000091,0x00000023,0x0000006a,0x0004003d,0x00000006, - 0x00000092,0x00000091,0x0007000c,0x00000006,0x00000093,0x00000001,0x00000027,0x00000090, - 0x00000092,0x0003003e,0x00000064,0x00000093,0x0004003d,0x00000006,0x00000094,0x00000071, - 0x00050041,0x00000025,0x00000095,0x00000023,0x00000077,0x0004003d,0x00000006,0x00000096, - 0x00000095,0x0007000c,0x00000006,0x00000097,0x00000001,0x00000027,0x00000094,0x00000096, - 0x0003003e,0x00000071,0x00000097,0x000200f9,0x00000083,0x000200f8,0x00000098,0x0004003d, - 0x00000006,0x00000099,0x00000050,0x0007000c,0x00000006,0x0000009a,0x00000001,0x0000002a, - 0x00000099,0x00000041,0x0003003e,0x00000050,0x0000009a,0x0004003d,0x00000006,0x0000009b, - 0x0000005a,0x0007000c,0x00000006,0x0000009c,0x00000001,0x0000002a,0x0000009b,0x00000041, - 0x0003003e,0x0000005a,0x0000009c,0x0004003d,0x00000006,0x0000009d,0x00000064,0x00050041, - 0x00000025,0x0000009e,0x00000023,0x0000006a,0x0004003d,0x00000006,0x0000009f,0x0000009e, - 0x0007000c,0x00000006,0x000000a0,0x00000001,0x00000027,0x0000009d,0x0000009f,0x0003003e, - 0x00000064,0x000000a0,0x0004003d,0x00000006,0x000000a1,0x00000071,0x00050041,0x00000025, - 0x000000a2,0x00000023,0x00000077,0x0004003d,0x00000006,0x000000a3,0x000000a2,0x0007000c, - 0x00000006,0x000000a4,0x00000001,0x00000027,0x000000a1,0x000000a3,0x0003003e,0x00000071, - 0x000000a4,0x0004003d,0x00000006,0x000000a5,0x00000064,0x0004003d,0x00000006,0x000000a6, - 0x00000050,0x00050082,0x00000006,0x000000a7,0x000000a5,0x000000a6,0x0004003d,0x00000006, - 0x000000a8,0x00000071,0x0004003d,0x00000006,0x000000a9,0x0000005a,0x00050082,0x00000006, - 0x000000aa,0x000000a8,0x000000a9,0x00050084,0x00000006,0x000000ab,0x000000a7,0x000000aa, - 0x0003003e,0x00000084,0x000000ab,0x000200f9,0x00000083,0x000200f8,0x00000083,0x0003003e, - 0x000000ae,0x000000af,0x0004003d,0x00000006,0x000000b1,0x00000045,0x00050041,0x00000025, - 0x000000b2,0x00000023,0x00000041,0x0004003d,0x00000006,0x000000b3,0x000000b2,0x00050084, - 0x00000006,0x000000b4,0x000000b1,0x000000b3,0x0004003d,0x00000006,0x000000b5,0x00000039, - 0x00050080,0x00000006,0x000000b6,0x000000b4,0x000000b5,0x00050041,0x00000025,0x000000b7, - 0x00000023,0x0000006a,0x0004003d,0x00000006,0x000000b8,0x000000b7,0x00050084,0x00000006, - 0x000000b9,0x000000b6,0x000000b8,0x00050041,0x00000025,0x000000ba,0x00000023,0x00000077, - 0x0004003d,0x00000006,0x000000bb,0x000000ba,0x00050084,0x00000006,0x000000bc,0x000000b9, - 0x000000bb,0x0003003e,0x000000b0,0x000000bc,0x0004003d,0x00000006,0x000000be,0x00000050, - 0x0003003e,0x000000bd,0x000000be,0x000200f9,0x000000bf,0x000200f8,0x000000bf,0x000400f6, - 0x000000c1,0x000000c2,0x00000000,0x000200f9,0x000000c3,0x000200f8,0x000000c3,0x0004003d, - 0x00000006,0x000000c4,0x000000bd,0x0004003d,0x00000006,0x000000c5,0x00000064,0x000500b1, - 0x00000028,0x000000c6,0x000000c4,0x000000c5,0x000400fa,0x000000c6,0x000000c0,0x000000c1, - 0x000200f8,0x000000c0,0x0004003d,0x00000006,0x000000c8,0x0000005a,0x0003003e,0x000000c7, - 0x000000c8,0x000200f9,0x000000c9,0x000200f8,0x000000c9,0x000400f6,0x000000cb,0x000000cc, - 0x00000000,0x000200f9,0x000000cd,0x000200f8,0x000000cd,0x0004003d,0x00000006,0x000000ce, - 0x000000c7,0x0004003d,0x00000006,0x000000cf,0x00000071,0x000500b1,0x00000028,0x000000d0, - 0x000000ce,0x000000cf,0x000400fa,0x000000d0,0x000000ca,0x000000cb,0x000200f8,0x000000ca, - 0x0004003d,0x00000006,0x000000d5,0x000000b0,0x0004003d,0x00000006,0x000000d6,0x000000bd, - 0x00050041,0x00000025,0x000000d7,0x00000023,0x00000077,0x0004003d,0x00000006,0x000000d8, - 0x000000d7,0x00050084,0x00000006,0x000000d9,0x000000d6,0x000000d8,0x00050080,0x00000006, - 0x000000da,0x000000d5,0x000000d9,0x0004003d,0x00000006,0x000000db,0x000000c7,0x00050080, - 0x00000006,0x000000dc,0x000000da,0x000000db,0x00060041,0x000000dd,0x000000de,0x000000d4, - 0x00000041,0x000000dc,0x0004003d,0x000000ac,0x000000df,0x000000de,0x0004003d,0x000000ac, - 0x000000e0,0x000000ae,0x00050081,0x000000ac,0x000000e1,0x000000e0,0x000000df,0x0003003e, - 0x000000ae,0x000000e1,0x000200f9,0x000000cc,0x000200f8,0x000000cc,0x0004003d,0x00000006, - 0x000000e2,0x000000c7,0x00050080,0x00000006,0x000000e3,0x000000e2,0x0000006a,0x0003003e, - 0x000000c7,0x000000e3,0x000200f9,0x000000c9,0x000200f8,0x000000cb,0x000200f9,0x000000c2, - 0x000200f8,0x000000c2,0x0004003d,0x00000006,0x000000e4,0x000000bd,0x00050080,0x00000006, - 0x000000e5,0x000000e4,0x0000006a,0x0003003e,0x000000bd,0x000000e5,0x000200f9,0x000000bf, - 0x000200f8,0x000000c1,0x0004003d,0x00000006,0x000000ea,0x00000019,0x0004003d,0x000000ac, - 0x000000eb,0x000000ae,0x0004003d,0x00000006,0x000000ec,0x00000084,0x0004006f,0x000000ac, - 0x000000ed,0x000000ec,0x00050088,0x000000ac,0x000000ee,0x000000eb,0x000000ed,0x00060041, - 0x000000dd,0x000000ef,0x000000e9,0x00000041,0x000000ea,0x0003003e,0x000000ef,0x000000ee, - 0x000200f9,0x0000001e,0x000200f8,0x0000001e,0x0004003d,0x00000006,0x000000f0,0x00000008, - 0x0004003d,0x00000006,0x000000f1,0x00000019,0x00050080,0x00000006,0x000000f2,0x000000f1, - 0x000000f0,0x0003003e,0x00000019,0x000000f2,0x000200f9,0x0000001b,0x000200f8,0x0000001d, - 0x000100fd,0x00010038 -}; - -}}} // namespace cv::dnn::vkcom diff --git a/modules/dnn/src/vkcom/shader/concat.comp b/modules/dnn/src/vkcom/shader/concat.comp deleted file mode 100644 index 2957a3b71d..0000000000 --- a/modules/dnn/src/vkcom/shader/concat.comp +++ /dev/null @@ -1,29 +0,0 @@ -#version 450 -#define LOCAL_SZ_X 256 - -layout(push_constant) uniform pushBlock { - int out_concat_axis; - int accumulated_concat_axis; - int concat_size; - int total_concat_size; - int thread_num; -} p; - -layout(binding = 0) readonly buffer Input0{ - float data[]; -} src; -layout(binding = 1) writeonly buffer Output{ - float data[]; -} dst; -layout(local_size_x = LOCAL_SZ_X, local_size_y = 1, local_size_z = 1) in; -void main() -{ - int index = int(gl_GlobalInvocationID.x); - if (index < p.thread_num) - { - int concat_num = index / p.total_concat_size; - int concat_index = index % p.total_concat_size; - int out_index = concat_index + (concat_num * p.out_concat_axis + p.accumulated_concat_axis) * p.concat_size; - dst.data[out_index] = src.data[index]; - } -} diff --git a/modules/dnn/src/vkcom/shader/concat_spv.cpp b/modules/dnn/src/vkcom/shader/concat_spv.cpp deleted file mode 100644 index 7ef7ea786b..0000000000 --- a/modules/dnn/src/vkcom/shader/concat_spv.cpp +++ /dev/null @@ -1,83 +0,0 @@ -// This file is part of OpenCV project. -// It is subject to the license terms in the LICENSE file found in the top-level directory -// of this distribution and at http://opencv.org/license.html. -// -// Copyright (C) 2018, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. - -#include "../../precomp.hpp" - -namespace cv { namespace dnn { namespace vkcom { - -extern const unsigned int concat_spv[541] = { - 0x07230203,0x00010000,0x00080001,0x0000004b,0x00000000,0x00020011,0x00000001,0x0006000b, - 0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001, - 0x0006000f,0x00000005,0x00000004,0x6e69616d,0x00000000,0x0000000c,0x00060010,0x00000004, - 0x00000011,0x00000100,0x00000001,0x00000001,0x00030003,0x00000002,0x000001c2,0x00040005, - 0x00000004,0x6e69616d,0x00000000,0x00040005,0x00000008,0x65646e69,0x00000078,0x00080005, - 0x0000000c,0x475f6c67,0x61626f6c,0x766e496c,0x7461636f,0x496e6f69,0x00000044,0x00050005, - 0x00000013,0x68737570,0x636f6c42,0x0000006b,0x00070006,0x00000013,0x00000000,0x5f74756f, - 0x636e6f63,0x615f7461,0x00736978,0x00090006,0x00000013,0x00000001,0x75636361,0x616c756d, - 0x5f646574,0x636e6f63,0x615f7461,0x00736978,0x00060006,0x00000013,0x00000002,0x636e6f63, - 0x735f7461,0x00657a69,0x00080006,0x00000013,0x00000003,0x61746f74,0x6f635f6c,0x7461636e, - 0x7a69735f,0x00000065,0x00060006,0x00000013,0x00000004,0x65726874,0x6e5f6461,0x00006d75, - 0x00030005,0x00000015,0x00000070,0x00050005,0x0000001e,0x636e6f63,0x6e5f7461,0x00006d75, - 0x00060005,0x00000024,0x636e6f63,0x695f7461,0x7865646e,0x00000000,0x00050005,0x00000029, - 0x5f74756f,0x65646e69,0x00000078,0x00040005,0x0000003b,0x7074754f,0x00007475,0x00050006, - 0x0000003b,0x00000000,0x61746164,0x00000000,0x00030005,0x0000003d,0x00747364,0x00040005, - 0x00000040,0x75706e49,0x00003074,0x00050006,0x00000040,0x00000000,0x61746164,0x00000000, - 0x00030005,0x00000042,0x00637273,0x00040047,0x0000000c,0x0000000b,0x0000001c,0x00050048, - 0x00000013,0x00000000,0x00000023,0x00000000,0x00050048,0x00000013,0x00000001,0x00000023, - 0x00000004,0x00050048,0x00000013,0x00000002,0x00000023,0x00000008,0x00050048,0x00000013, - 0x00000003,0x00000023,0x0000000c,0x00050048,0x00000013,0x00000004,0x00000023,0x00000010, - 0x00030047,0x00000013,0x00000002,0x00040047,0x0000003a,0x00000006,0x00000004,0x00040048, - 0x0000003b,0x00000000,0x00000019,0x00050048,0x0000003b,0x00000000,0x00000023,0x00000000, - 0x00030047,0x0000003b,0x00000003,0x00040047,0x0000003d,0x00000022,0x00000000,0x00040047, - 0x0000003d,0x00000021,0x00000001,0x00040047,0x0000003f,0x00000006,0x00000004,0x00040048, - 0x00000040,0x00000000,0x00000018,0x00050048,0x00000040,0x00000000,0x00000023,0x00000000, - 0x00030047,0x00000040,0x00000003,0x00040047,0x00000042,0x00000022,0x00000000,0x00040047, - 0x00000042,0x00000021,0x00000000,0x00040047,0x0000004a,0x0000000b,0x00000019,0x00020013, - 0x00000002,0x00030021,0x00000003,0x00000002,0x00040015,0x00000006,0x00000020,0x00000001, - 0x00040020,0x00000007,0x00000007,0x00000006,0x00040015,0x00000009,0x00000020,0x00000000, - 0x00040017,0x0000000a,0x00000009,0x00000003,0x00040020,0x0000000b,0x00000001,0x0000000a, - 0x0004003b,0x0000000b,0x0000000c,0x00000001,0x0004002b,0x00000009,0x0000000d,0x00000000, - 0x00040020,0x0000000e,0x00000001,0x00000009,0x0007001e,0x00000013,0x00000006,0x00000006, - 0x00000006,0x00000006,0x00000006,0x00040020,0x00000014,0x00000009,0x00000013,0x0004003b, - 0x00000014,0x00000015,0x00000009,0x0004002b,0x00000006,0x00000016,0x00000004,0x00040020, - 0x00000017,0x00000009,0x00000006,0x00020014,0x0000001a,0x0004002b,0x00000006,0x00000020, - 0x00000003,0x0004002b,0x00000006,0x0000002c,0x00000000,0x0004002b,0x00000006,0x00000030, - 0x00000001,0x0004002b,0x00000006,0x00000034,0x00000002,0x00030016,0x00000039,0x00000020, - 0x0003001d,0x0000003a,0x00000039,0x0003001e,0x0000003b,0x0000003a,0x00040020,0x0000003c, - 0x00000002,0x0000003b,0x0004003b,0x0000003c,0x0000003d,0x00000002,0x0003001d,0x0000003f, - 0x00000039,0x0003001e,0x00000040,0x0000003f,0x00040020,0x00000041,0x00000002,0x00000040, - 0x0004003b,0x00000041,0x00000042,0x00000002,0x00040020,0x00000044,0x00000002,0x00000039, - 0x0004002b,0x00000009,0x00000048,0x00000100,0x0004002b,0x00000009,0x00000049,0x00000001, - 0x0006002c,0x0000000a,0x0000004a,0x00000048,0x00000049,0x00000049,0x00050036,0x00000002, - 0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000007,0x00000008, - 0x00000007,0x0004003b,0x00000007,0x0000001e,0x00000007,0x0004003b,0x00000007,0x00000024, - 0x00000007,0x0004003b,0x00000007,0x00000029,0x00000007,0x00050041,0x0000000e,0x0000000f, - 0x0000000c,0x0000000d,0x0004003d,0x00000009,0x00000010,0x0000000f,0x0004007c,0x00000006, - 0x00000011,0x00000010,0x0003003e,0x00000008,0x00000011,0x0004003d,0x00000006,0x00000012, - 0x00000008,0x00050041,0x00000017,0x00000018,0x00000015,0x00000016,0x0004003d,0x00000006, - 0x00000019,0x00000018,0x000500b1,0x0000001a,0x0000001b,0x00000012,0x00000019,0x000300f7, - 0x0000001d,0x00000000,0x000400fa,0x0000001b,0x0000001c,0x0000001d,0x000200f8,0x0000001c, - 0x0004003d,0x00000006,0x0000001f,0x00000008,0x00050041,0x00000017,0x00000021,0x00000015, - 0x00000020,0x0004003d,0x00000006,0x00000022,0x00000021,0x00050087,0x00000006,0x00000023, - 0x0000001f,0x00000022,0x0003003e,0x0000001e,0x00000023,0x0004003d,0x00000006,0x00000025, - 0x00000008,0x00050041,0x00000017,0x00000026,0x00000015,0x00000020,0x0004003d,0x00000006, - 0x00000027,0x00000026,0x0005008b,0x00000006,0x00000028,0x00000025,0x00000027,0x0003003e, - 0x00000024,0x00000028,0x0004003d,0x00000006,0x0000002a,0x00000024,0x0004003d,0x00000006, - 0x0000002b,0x0000001e,0x00050041,0x00000017,0x0000002d,0x00000015,0x0000002c,0x0004003d, - 0x00000006,0x0000002e,0x0000002d,0x00050084,0x00000006,0x0000002f,0x0000002b,0x0000002e, - 0x00050041,0x00000017,0x00000031,0x00000015,0x00000030,0x0004003d,0x00000006,0x00000032, - 0x00000031,0x00050080,0x00000006,0x00000033,0x0000002f,0x00000032,0x00050041,0x00000017, - 0x00000035,0x00000015,0x00000034,0x0004003d,0x00000006,0x00000036,0x00000035,0x00050084, - 0x00000006,0x00000037,0x00000033,0x00000036,0x00050080,0x00000006,0x00000038,0x0000002a, - 0x00000037,0x0003003e,0x00000029,0x00000038,0x0004003d,0x00000006,0x0000003e,0x00000029, - 0x0004003d,0x00000006,0x00000043,0x00000008,0x00060041,0x00000044,0x00000045,0x00000042, - 0x0000002c,0x00000043,0x0004003d,0x00000039,0x00000046,0x00000045,0x00060041,0x00000044, - 0x00000047,0x0000003d,0x0000002c,0x0000003e,0x0003003e,0x00000047,0x00000046,0x000200f9, - 0x0000001d,0x000200f8,0x0000001d,0x000100fd,0x00010038 -}; - -}}} // namespace cv::dnn::vkcom diff --git a/modules/dnn/src/vkcom/shader/conv.comp b/modules/dnn/src/vkcom/shader/conv.comp deleted file mode 100644 index d899afc997..0000000000 --- a/modules/dnn/src/vkcom/shader/conv.comp +++ /dev/null @@ -1,76 +0,0 @@ -#version 450 -#define LOCAL_SZ_X 256 -layout(binding = 0) readonly buffer Input0{ - float image_data[]; -}; -layout(binding = 1) readonly buffer Input1 { - float bias_data[]; -}; -layout(binding = 2) readonly buffer Input3{ - float weight_data[]; -}; -layout(binding = 3) writeonly buffer Output{ - float convolved_image_data[]; -}; - -layout(push_constant) uniform pushBlock { - int in_h; - int in_w; - int out_h; - int out_w; - int stride_h; - int stride_w; - int pad_h; - int pad_w; - int filter_h; - int filter_w; - int dilation_h; - int dilation_w; - int channels; - int batch; - int has_bias; - int M; - int K; - int N; - int basic_shader_batch_idx; - int basic_shader_partition_idx; - int basic_shader_partition_size; -} p; - -layout(local_size_x = LOCAL_SZ_X, local_size_y = 1, local_size_z = 1) in; -void main() -{ - int gx = int(gl_GlobalInvocationID.x); - int gy = int(gl_GlobalInvocationID.y) + p.basic_shader_partition_idx * p.basic_shader_partition_size; - int gz = p.basic_shader_batch_idx; - if(gx < p.M && gy < p.N) - { - float sum = 0.0f; - int output_y = gx / p.out_w; - int output_x = gx % p.out_w; - int org_y = output_y * p.stride_h - p.pad_h; - int org_x = output_x * p.stride_w - p.pad_w; - int weight_off = gy * p.K; - int input_off = gz * p.in_h * p.in_w * p.channels + (org_y * p.in_w + org_x); - for(int c = 0; c < p.channels; c++) - { - for(int y = 0; y < p.filter_h; y++) - { - for(int x = 0; x < p.filter_w; x++) - { - if((org_y + y * p.dilation_h >= 0) && (org_y + y * p.dilation_h < p.in_h) && (org_x + x * p.dilation_w >= 0) && (org_x + x * p.dilation_w < p.in_w)) - { - sum += image_data[input_off + x * p.dilation_w] * weight_data[weight_off + x]; - } - } - input_off += p.in_w * p.dilation_h; - weight_off += p.filter_w; - } - input_off += p.in_h * p.in_w - p.in_w * p.filter_h * p.dilation_h; - } - int offset = gz * p.M * p.N + gx + gy * p.M; - if (p.has_bias == 1) - sum += bias_data[gy]; - convolved_image_data[offset] = sum; - } -} diff --git a/modules/dnn/src/vkcom/shader/conv48.comp b/modules/dnn/src/vkcom/shader/conv48.comp deleted file mode 100644 index 0390b37ac3..0000000000 --- a/modules/dnn/src/vkcom/shader/conv48.comp +++ /dev/null @@ -1,140 +0,0 @@ -#version 450 - -layout (constant_id = 0) const int LOCAL_SZ_X = 0; -layout (constant_id = 1) const int LOCAL_SZ_Y = 0; -layout (constant_id = 2) const int LOCAL_SZ_Z = 0; -layout (constant_id = 3) const int IN_H = 0; -layout (constant_id = 4) const int IN_W = 0; -layout (constant_id = 5) const int OUT_W = 0; -layout (constant_id = 6) const int STRIDE_H = 0; -layout (constant_id = 7) const int STRIDE_W = 0; -layout (constant_id = 8) const int PAD_H = 0; -layout (constant_id = 9) const int PAD_W = 0; -layout (constant_id = 10) const int FILTER_H = 0; -layout (constant_id = 11) const int FILTER_W = 0; -layout (constant_id = 12) const int CHANNELS = 0; -layout (constant_id = 13) const int BATCH = 0; -layout (constant_id = 14) const int M = 0; -layout (constant_id = 15) const int K = 0; -layout (constant_id = 16) const int N = 0; -layout (constant_id = 17) const int TAIL_M = 0; -layout (constant_id = 18) const int DILATION_H = 0; -layout (constant_id = 19) const int DILATION_W = 0; - -#if defined(ACTIVATION_RELU) -#define ACTIVATION_FUNCTION(x) clamp(x, vec4(0.0), vec4(999999999.0)) -#elif defined(ACTIVATION_RELU1) -#define ACTIVATION_FUNCTION(x) clamp(x, vec4(-1.0), vec4(1.0)) -#elif defined(ACTIVATION_RELU6) -#define ACTIVATION_FUNCTION(x) clamp(x, vec4(0.0), vec4(6.0)) -#else -#define ACTIVATION_FUNCTION(x) (x) -#endif - -layout(binding = 0) readonly buffer Input0{ - float data[]; -} src0; -layout(binding = 1) readonly buffer Input1 { - vec4 data[]; -} bias; -layout(binding = 2) readonly buffer Input3{ - vec4 data[]; -} src1; -layout(binding = 3) writeonly buffer Output{ - vec4 data[]; -} out0; - -layout(local_size_x_id = 0, local_size_y_id = 1, local_size_z_id = 2) in; - -#define VEC_SIZE 4 -#define BLOCK_H 4 -#define BLOCK_W 8 -#define FILTER_AREA (FILTER_H * FILTER_W) -#define LOAD_A(elm_idx, a_component) \ - src0_x = org_x + ((i * VEC_SIZE + elm_idx) % FILTER_W) * DILATION_W; \ - src0_y = org_y + (((i * VEC_SIZE + elm_idx) % FILTER_AREA) / FILTER_W) * DILATION_H; \ - src0_z = (i * VEC_SIZE + elm_idx) / FILTER_AREA; \ - if(src0_y >= 0 && src0_y < IN_H && src0_x >= 0 && src0_x < IN_W) \ - { \ - a_component = src0.data[input_batch_offset + src0_z * (IN_H * IN_W) + src0_y * IN_W + src0_x]; \ - } - -#define A_MULTIPLY_BTILE(a, sliver_num, comp) \ - dst_x = (out_y + sliver_num) % OUT_W; \ - dst_y = (out_y + sliver_num) / OUT_W; \ - org_y = dst_y * STRIDE_H - PAD_H; \ - org_x = dst_x * STRIDE_W - PAD_W; \ - LOAD_A(0, a.x); \ - LOAD_A(1, a.y); \ - LOAD_A(2, a.z); \ - LOAD_A(3, a.w); \ - dot0.comp += dot(brow0, a); \ - dot1.comp += dot(brow1, a); \ - dot2.comp += dot(brow2, a); \ - dot3.comp += dot(brow3, a); \ - dot4.comp += dot(brow4, a); \ - dot5.comp += dot(brow5, a); \ - dot6.comp += dot(brow6, a); \ - dot7.comp += dot(brow7, a); - -void main() -{ - int gx = int(gl_GlobalInvocationID.x); - int gy = int(gl_GlobalInvocationID.y); - int gz = int(gl_GlobalInvocationID.z); - int out_x = BLOCK_W * gx; - int out_y = BLOCK_H * gy; - int input_batch_offset = gz * IN_H * IN_W * CHANNELS; - int output_batch_offset = gz * M * N / VEC_SIZE; - if (out_x < N && gy < M / BLOCK_H) - { - int width0 = K / VEC_SIZE; - int width1 = N / VEC_SIZE; - int src1_read0_offset = out_x * width0; - vec4 dot0 = vec4(0.f); - vec4 dot1 = vec4(0.f); - vec4 dot2 = vec4(0.f); - vec4 dot3 = vec4(0.f); - vec4 dot4 = vec4(0.f); - vec4 dot5 = vec4(0.f); - vec4 dot6 = vec4(0.f); - vec4 dot7 = vec4(0.f); - int i = 0; - do - { - int dst_x, dst_y, org_x, org_y, src0_x, src0_y, src0_z; - vec4 a0 = vec4(0.f), a1 = vec4(0.f), a2 = vec4(0.f), a3 = vec4(0.f); - vec4 brow0 = src1.data[src1_read0_offset]; src1_read0_offset += width0; - vec4 brow1 = src1.data[src1_read0_offset]; src1_read0_offset += width0; - vec4 brow2 = src1.data[src1_read0_offset]; src1_read0_offset += width0; - vec4 brow3 = src1.data[src1_read0_offset]; src1_read0_offset += width0; - vec4 brow4 = src1.data[src1_read0_offset]; src1_read0_offset += width0; - vec4 brow5 = src1.data[src1_read0_offset]; src1_read0_offset += width0; - vec4 brow6 = src1.data[src1_read0_offset]; src1_read0_offset += width0; - vec4 brow7 = src1.data[src1_read0_offset]; src1_read0_offset += width0; - src1_read0_offset += 1 - BLOCK_W * width0; - - A_MULTIPLY_BTILE(a0, 0, x); - A_MULTIPLY_BTILE(a1, 1, y); - A_MULTIPLY_BTILE(a2, 2, z); - A_MULTIPLY_BTILE(a3, 3, w); - i++; - } - while( i < width0 ); - - vec4 bias_val; - bias_val = bias.data[2 * int(gl_GlobalInvocationID.x)]; - dot0 += bias_val.xxxx; dot1 += bias_val.yyyy; dot2 += bias_val.zzzz; dot3 += bias_val.wwww; - bias_val = bias.data[2 * int(gl_GlobalInvocationID.x) + 1]; - dot4 += bias_val.xxxx; dot5 += bias_val.yyyy; dot6 += bias_val.zzzz; dot7 += bias_val.wwww; - - out0.data[output_batch_offset + (out_x + 0) * M / VEC_SIZE + gy] = ACTIVATION_FUNCTION(dot0); - out0.data[output_batch_offset + (out_x + 1) * M / VEC_SIZE + gy] = ACTIVATION_FUNCTION(dot1); - out0.data[output_batch_offset + (out_x + 2) * M / VEC_SIZE + gy] = ACTIVATION_FUNCTION(dot2); - out0.data[output_batch_offset + (out_x + 3) * M / VEC_SIZE + gy] = ACTIVATION_FUNCTION(dot3); - out0.data[output_batch_offset + (out_x + 4) * M / VEC_SIZE + gy] = ACTIVATION_FUNCTION(dot4); - out0.data[output_batch_offset + (out_x + 5) * M / VEC_SIZE + gy] = ACTIVATION_FUNCTION(dot5); - out0.data[output_batch_offset + (out_x + 6) * M / VEC_SIZE + gy] = ACTIVATION_FUNCTION(dot6); - out0.data[output_batch_offset + (out_x + 7) * M / VEC_SIZE + gy] = ACTIVATION_FUNCTION(dot7); - } -} diff --git a/modules/dnn/src/vkcom/shader/conv48_nobias.comp b/modules/dnn/src/vkcom/shader/conv48_nobias.comp deleted file mode 100644 index cb26fc716f..0000000000 --- a/modules/dnn/src/vkcom/shader/conv48_nobias.comp +++ /dev/null @@ -1,134 +0,0 @@ -#version 450 - -layout (constant_id = 0) const int LOCAL_SZ_X = 0; -layout (constant_id = 1) const int LOCAL_SZ_Y = 0; -layout (constant_id = 2) const int LOCAL_SZ_Z = 0; -layout (constant_id = 3) const int IN_H = 0; -layout (constant_id = 4) const int IN_W = 0; -layout (constant_id = 5) const int OUT_W = 0; -layout (constant_id = 6) const int STRIDE_H = 0; -layout (constant_id = 7) const int STRIDE_W = 0; -layout (constant_id = 8) const int PAD_H = 0; -layout (constant_id = 9) const int PAD_W = 0; -layout (constant_id = 10) const int FILTER_H = 0; -layout (constant_id = 11) const int FILTER_W = 0; -layout (constant_id = 12) const int CHANNELS = 0; -layout (constant_id = 13) const int BATCH = 0; -layout (constant_id = 14) const int M = 0; -layout (constant_id = 15) const int K = 0; -layout (constant_id = 16) const int N = 0; -layout (constant_id = 17) const int TAIL_M = 0; -layout (constant_id = 18) const int DILATION_H = 0; -layout (constant_id = 19) const int DILATION_W = 0; - -#if defined(ACTIVATION_RELU) -#define ACTIVATION_FUNCTION(x) clamp(x, vec4(0.0), vec4(999999999.0)) -#elif defined(ACTIVATION_RELU1) -#define ACTIVATION_FUNCTION(x) clamp(x, vec4(-1.0), vec4(1.0)) -#elif defined(ACTIVATION_RELU6) -#define ACTIVATION_FUNCTION(x) clamp(x, vec4(0.0), vec4(6.0)) -#else -#define ACTIVATION_FUNCTION(x) (x) -#endif - -layout(binding = 0) readonly buffer Input0{ - float data[]; -} src0; -layout(binding = 1) readonly buffer Input1 { - vec4 data[]; -} bias; -layout(binding = 2) readonly buffer Input3{ - vec4 data[]; -} src1; -layout(binding = 3) writeonly buffer Output{ - vec4 data[]; -} out0; - -layout(local_size_x_id = 0, local_size_y_id = 1, local_size_z_id = 2) in; - -#define VEC_SIZE 4 -#define BLOCK_H 4 -#define BLOCK_W 8 -#define FILTER_AREA (FILTER_H * FILTER_W) -#define LOAD_A(elm_idx, a_component) \ - src0_x = org_x + ((i * VEC_SIZE + elm_idx) % FILTER_W) * DILATION_W; \ - src0_y = org_y + (((i * VEC_SIZE + elm_idx) % FILTER_AREA) / FILTER_W) * DILATION_H; \ - src0_z = (i * VEC_SIZE + elm_idx) / FILTER_AREA; \ - if(src0_y >= 0 && src0_y < IN_H && src0_x >= 0 && src0_x < IN_W) \ - { \ - a_component = src0.data[input_batch_offset + src0_z * (IN_H * IN_W) + src0_y * IN_W + src0_x]; \ - } - -#define A_MULTIPLY_BTILE(a, sliver_num, comp) \ - dst_x = (out_y + sliver_num) % OUT_W; \ - dst_y = (out_y + sliver_num) / OUT_W; \ - org_y = dst_y * STRIDE_H - PAD_H; \ - org_x = dst_x * STRIDE_W - PAD_W; \ - LOAD_A(0, a.x); \ - LOAD_A(1, a.y); \ - LOAD_A(2, a.z); \ - LOAD_A(3, a.w); \ - dot0.comp += dot(brow0, a); \ - dot1.comp += dot(brow1, a); \ - dot2.comp += dot(brow2, a); \ - dot3.comp += dot(brow3, a); \ - dot4.comp += dot(brow4, a); \ - dot5.comp += dot(brow5, a); \ - dot6.comp += dot(brow6, a); \ - dot7.comp += dot(brow7, a); - -void main() -{ - int gx = int(gl_GlobalInvocationID.x); - int gy = int(gl_GlobalInvocationID.y); - int gz = int(gl_GlobalInvocationID.z); - int out_x = BLOCK_W * gx; - int out_y = BLOCK_H * gy; - int input_batch_offset = gz * IN_H * IN_W * CHANNELS; - int output_batch_offset = gz * M * N / VEC_SIZE; - if (out_x < N && gy < M / BLOCK_H) - { - int width0 = K / VEC_SIZE; - int width1 = N / VEC_SIZE; - int src1_read0_offset = out_x * width0; - vec4 dot0 = vec4(0.f); - vec4 dot1 = vec4(0.f); - vec4 dot2 = vec4(0.f); - vec4 dot3 = vec4(0.f); - vec4 dot4 = vec4(0.f); - vec4 dot5 = vec4(0.f); - vec4 dot6 = vec4(0.f); - vec4 dot7 = vec4(0.f); - int i = 0; - do - { - int dst_x, dst_y, org_x, org_y, src0_x, src0_y, src0_z; - vec4 a0 = vec4(0.f), a1 = vec4(0.f), a2 = vec4(0.f), a3 = vec4(0.f); - vec4 brow0 = src1.data[src1_read0_offset]; src1_read0_offset += width0; - vec4 brow1 = src1.data[src1_read0_offset]; src1_read0_offset += width0; - vec4 brow2 = src1.data[src1_read0_offset]; src1_read0_offset += width0; - vec4 brow3 = src1.data[src1_read0_offset]; src1_read0_offset += width0; - vec4 brow4 = src1.data[src1_read0_offset]; src1_read0_offset += width0; - vec4 brow5 = src1.data[src1_read0_offset]; src1_read0_offset += width0; - vec4 brow6 = src1.data[src1_read0_offset]; src1_read0_offset += width0; - vec4 brow7 = src1.data[src1_read0_offset]; src1_read0_offset += width0; - src1_read0_offset += 1 - BLOCK_W * width0; - - A_MULTIPLY_BTILE(a0, 0, x); - A_MULTIPLY_BTILE(a1, 1, y); - A_MULTIPLY_BTILE(a2, 2, z); - A_MULTIPLY_BTILE(a3, 3, w); - i++; - } - while( i < width0 ); - - out0.data[output_batch_offset + (out_x + 0) * M / VEC_SIZE + gy] = ACTIVATION_FUNCTION(dot0); - out0.data[output_batch_offset + (out_x + 1) * M / VEC_SIZE + gy] = ACTIVATION_FUNCTION(dot1); - out0.data[output_batch_offset + (out_x + 2) * M / VEC_SIZE + gy] = ACTIVATION_FUNCTION(dot2); - out0.data[output_batch_offset + (out_x + 3) * M / VEC_SIZE + gy] = ACTIVATION_FUNCTION(dot3); - out0.data[output_batch_offset + (out_x + 4) * M / VEC_SIZE + gy] = ACTIVATION_FUNCTION(dot4); - out0.data[output_batch_offset + (out_x + 5) * M / VEC_SIZE + gy] = ACTIVATION_FUNCTION(dot5); - out0.data[output_batch_offset + (out_x + 6) * M / VEC_SIZE + gy] = ACTIVATION_FUNCTION(dot6); - out0.data[output_batch_offset + (out_x + 7) * M / VEC_SIZE + gy] = ACTIVATION_FUNCTION(dot7); - } -} diff --git a/modules/dnn/src/vkcom/shader/conv48_nobias_spv.cpp b/modules/dnn/src/vkcom/shader/conv48_nobias_spv.cpp deleted file mode 100644 index 2f35417e02..0000000000 --- a/modules/dnn/src/vkcom/shader/conv48_nobias_spv.cpp +++ /dev/null @@ -1,913 +0,0 @@ -// This file is part of OpenCV project. -// It is subject to the license terms in the LICENSE file found in the top-level directory -// of this distribution and at http://opencv.org/license.html. -// -// Copyright (C) 2018, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. - -#include "../../precomp.hpp" - -namespace cv { namespace dnn { namespace vkcom { - -extern const unsigned int conv48_nobias_spv[7182] = { - 0x07230203,0x00010000,0x0008000a,0x00000523,0x00000000,0x00020011,0x00000001,0x0006000b, - 0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001, - 0x0006000f,0x00000005,0x00000004,0x6e69616d,0x00000000,0x0000000c,0x00060010,0x00000004, - 0x00000011,0x00000001,0x00000001,0x00000001,0x00030003,0x00000002,0x000001c2,0x00040005, - 0x00000004,0x6e69616d,0x00000000,0x00030005,0x00000008,0x00007867,0x00080005,0x0000000c, - 0x475f6c67,0x61626f6c,0x766e496c,0x7461636f,0x496e6f69,0x00000044,0x00030005,0x00000012, - 0x00007967,0x00030005,0x00000017,0x00007a67,0x00040005,0x0000001c,0x5f74756f,0x00000078, - 0x00040005,0x00000020,0x5f74756f,0x00000079,0x00070005,0x00000024,0x75706e69,0x61625f74, - 0x5f686374,0x7366666f,0x00007465,0x00040005,0x00000026,0x485f4e49,0x00000000,0x00040005, - 0x00000028,0x575f4e49,0x00000000,0x00050005,0x0000002a,0x4e414843,0x534c454e,0x00000000, - 0x00070005,0x0000002c,0x7074756f,0x625f7475,0x68637461,0x66666f5f,0x00746573,0x00030005, - 0x0000002e,0x0000004d,0x00030005,0x00000030,0x0000004e,0x00040005,0x0000003e,0x74646977, - 0x00003068,0x00030005,0x0000003f,0x0000004b,0x00040005,0x00000041,0x74646977,0x00003168, - 0x00070005,0x00000043,0x31637273,0x6165725f,0x6f5f3064,0x65736666,0x00000074,0x00040005, - 0x0000004a,0x30746f64,0x00000000,0x00040005,0x0000004d,0x31746f64,0x00000000,0x00040005, - 0x0000004e,0x32746f64,0x00000000,0x00040005,0x0000004f,0x33746f64,0x00000000,0x00040005, - 0x00000050,0x34746f64,0x00000000,0x00040005,0x00000051,0x35746f64,0x00000000,0x00040005, - 0x00000052,0x36746f64,0x00000000,0x00040005,0x00000053,0x37746f64,0x00000000,0x00030005, - 0x00000054,0x00000069,0x00030005,0x0000005a,0x00003061,0x00030005,0x0000005b,0x00003161, - 0x00030005,0x0000005c,0x00003261,0x00030005,0x0000005d,0x00003361,0x00040005,0x0000005e, - 0x776f7262,0x00000030,0x00040005,0x00000060,0x75706e49,0x00003374,0x00050006,0x00000060, - 0x00000000,0x61746164,0x00000000,0x00040005,0x00000062,0x31637273,0x00000000,0x00040005, - 0x0000006a,0x776f7262,0x00000031,0x00040005,0x00000071,0x776f7262,0x00000032,0x00040005, - 0x00000078,0x776f7262,0x00000033,0x00040005,0x0000007f,0x776f7262,0x00000034,0x00040005, - 0x00000086,0x776f7262,0x00000035,0x00040005,0x0000008d,0x776f7262,0x00000036,0x00040005, - 0x00000094,0x776f7262,0x00000037,0x00040005,0x000000a1,0x5f747364,0x00000078,0x00040005, - 0x000000a4,0x5f54554f,0x00000057,0x00040005,0x000000a6,0x5f747364,0x00000079,0x00040005, - 0x000000aa,0x5f67726f,0x00000079,0x00050005,0x000000ac,0x49525453,0x485f4544,0x00000000, - 0x00040005,0x000000ae,0x5f444150,0x00000048,0x00040005,0x000000b0,0x5f67726f,0x00000078, - 0x00050005,0x000000b2,0x49525453,0x575f4544,0x00000000,0x00040005,0x000000b4,0x5f444150, - 0x00000057,0x00040005,0x000000b6,0x30637273,0x0000785f,0x00050005,0x000000bb,0x544c4946, - 0x575f5245,0x00000000,0x00050005,0x000000bd,0x414c4944,0x4e4f4954,0x0000575f,0x00040005, - 0x000000c0,0x30637273,0x0000795f,0x00050005,0x000000c5,0x544c4946,0x485f5245,0x00000000, - 0x00050005,0x000000c9,0x414c4944,0x4e4f4954,0x0000485f,0x00040005,0x000000cc,0x30637273, - 0x00007a5f,0x00040005,0x000000e0,0x75706e49,0x00003074,0x00050006,0x000000e0,0x00000000, - 0x61746164,0x00000000,0x00040005,0x000000e2,0x30637273,0x00000000,0x00040005,0x000004c0, - 0x7074754f,0x00007475,0x00050006,0x000004c0,0x00000000,0x61746164,0x00000000,0x00040005, - 0x000004c2,0x3074756f,0x00000000,0x00050005,0x00000516,0x41434f4c,0x5a535f4c,0x0000585f, - 0x00050005,0x00000517,0x41434f4c,0x5a535f4c,0x0000595f,0x00050005,0x00000518,0x41434f4c, - 0x5a535f4c,0x00005a5f,0x00040005,0x00000519,0x43544142,0x00000048,0x00040005,0x0000051a, - 0x4c494154,0x00004d5f,0x00040005,0x0000051c,0x75706e49,0x00003174,0x00050006,0x0000051c, - 0x00000000,0x61746164,0x00000000,0x00040005,0x0000051e,0x73616962,0x00000000,0x00040047, - 0x0000000c,0x0000000b,0x0000001c,0x00040047,0x00000026,0x00000001,0x00000003,0x00040047, - 0x00000028,0x00000001,0x00000004,0x00040047,0x0000002a,0x00000001,0x0000000c,0x00040047, - 0x0000002e,0x00000001,0x0000000e,0x00040047,0x00000030,0x00000001,0x00000010,0x00040047, - 0x0000003f,0x00000001,0x0000000f,0x00040047,0x0000005f,0x00000006,0x00000010,0x00040048, - 0x00000060,0x00000000,0x00000018,0x00050048,0x00000060,0x00000000,0x00000023,0x00000000, - 0x00030047,0x00000060,0x00000003,0x00040047,0x00000062,0x00000022,0x00000000,0x00040047, - 0x00000062,0x00000021,0x00000002,0x00040047,0x000000a4,0x00000001,0x00000005,0x00040047, - 0x000000ac,0x00000001,0x00000006,0x00040047,0x000000ae,0x00000001,0x00000008,0x00040047, - 0x000000b2,0x00000001,0x00000007,0x00040047,0x000000b4,0x00000001,0x00000009,0x00040047, - 0x000000bb,0x00000001,0x0000000b,0x00040047,0x000000bd,0x00000001,0x00000013,0x00040047, - 0x000000c5,0x00000001,0x0000000a,0x00040047,0x000000c9,0x00000001,0x00000012,0x00040047, - 0x000000df,0x00000006,0x00000004,0x00040048,0x000000e0,0x00000000,0x00000018,0x00050048, - 0x000000e0,0x00000000,0x00000023,0x00000000,0x00030047,0x000000e0,0x00000003,0x00040047, - 0x000000e2,0x00000022,0x00000000,0x00040047,0x000000e2,0x00000021,0x00000000,0x00040047, - 0x000004bf,0x00000006,0x00000010,0x00040048,0x000004c0,0x00000000,0x00000019,0x00050048, - 0x000004c0,0x00000000,0x00000023,0x00000000,0x00030047,0x000004c0,0x00000003,0x00040047, - 0x000004c2,0x00000022,0x00000000,0x00040047,0x000004c2,0x00000021,0x00000003,0x00040047, - 0x00000516,0x00000001,0x00000000,0x00040047,0x00000517,0x00000001,0x00000001,0x00040047, - 0x00000518,0x00000001,0x00000002,0x00040047,0x00000519,0x00000001,0x0000000d,0x00040047, - 0x0000051a,0x00000001,0x00000011,0x00040047,0x0000051b,0x00000006,0x00000010,0x00040048, - 0x0000051c,0x00000000,0x00000018,0x00050048,0x0000051c,0x00000000,0x00000023,0x00000000, - 0x00030047,0x0000051c,0x00000003,0x00040047,0x0000051e,0x00000022,0x00000000,0x00040047, - 0x0000051e,0x00000021,0x00000001,0x00040047,0x0000051f,0x00000001,0x00000000,0x00040047, - 0x00000520,0x00000001,0x00000001,0x00040047,0x00000521,0x00000001,0x00000002,0x00040047, - 0x00000522,0x0000000b,0x00000019,0x00020013,0x00000002,0x00030021,0x00000003,0x00000002, - 0x00040015,0x00000006,0x00000020,0x00000001,0x00040020,0x00000007,0x00000007,0x00000006, - 0x00040015,0x00000009,0x00000020,0x00000000,0x00040017,0x0000000a,0x00000009,0x00000003, - 0x00040020,0x0000000b,0x00000001,0x0000000a,0x0004003b,0x0000000b,0x0000000c,0x00000001, - 0x0004002b,0x00000009,0x0000000d,0x00000000,0x00040020,0x0000000e,0x00000001,0x00000009, - 0x0004002b,0x00000009,0x00000013,0x00000001,0x0004002b,0x00000009,0x00000018,0x00000002, - 0x0004002b,0x00000006,0x0000001d,0x00000008,0x0004002b,0x00000006,0x00000021,0x00000004, - 0x00040032,0x00000006,0x00000026,0x00000000,0x00040032,0x00000006,0x00000028,0x00000000, - 0x00040032,0x00000006,0x0000002a,0x00000000,0x00040032,0x00000006,0x0000002e,0x00000000, - 0x00040032,0x00000006,0x00000030,0x00000000,0x00020014,0x00000033,0x00060034,0x00000006, - 0x00000039,0x00000087,0x0000002e,0x00000021,0x00040032,0x00000006,0x0000003f,0x00000000, - 0x00060034,0x00000006,0x00000040,0x00000087,0x0000003f,0x00000021,0x00060034,0x00000006, - 0x00000042,0x00000087,0x00000030,0x00000021,0x00030016,0x00000047,0x00000020,0x00040017, - 0x00000048,0x00000047,0x00000004,0x00040020,0x00000049,0x00000007,0x00000048,0x0004002b, - 0x00000047,0x0000004b,0x00000000,0x0007002c,0x00000048,0x0000004c,0x0000004b,0x0000004b, - 0x0000004b,0x0000004b,0x0004002b,0x00000006,0x00000055,0x00000000,0x0003001d,0x0000005f, - 0x00000048,0x0003001e,0x00000060,0x0000005f,0x00040020,0x00000061,0x00000002,0x00000060, - 0x0004003b,0x00000061,0x00000062,0x00000002,0x00040020,0x00000064,0x00000002,0x00000048, - 0x0004002b,0x00000006,0x0000009b,0x00000001,0x00040032,0x00000006,0x000000a4,0x00000000, - 0x00040032,0x00000006,0x000000ac,0x00000000,0x00040032,0x00000006,0x000000ae,0x00000000, - 0x00040032,0x00000006,0x000000b2,0x00000000,0x00040032,0x00000006,0x000000b4,0x00000000, - 0x00040032,0x00000006,0x000000bb,0x00000000,0x00040032,0x00000006,0x000000bd,0x00000000, - 0x00040032,0x00000006,0x000000c5,0x00000000,0x00060034,0x00000006,0x000000c6,0x00000084, - 0x000000c5,0x000000bb,0x00040032,0x00000006,0x000000c9,0x00000000,0x00060034,0x00000006, - 0x000000d0,0x00000084,0x000000c5,0x000000bb,0x0003001d,0x000000df,0x00000047,0x0003001e, - 0x000000e0,0x000000df,0x00040020,0x000000e1,0x00000002,0x000000e0,0x0004003b,0x000000e1, - 0x000000e2,0x00000002,0x00060034,0x00000006,0x000000e5,0x00000084,0x00000026,0x00000028, - 0x00040020,0x000000ed,0x00000002,0x00000047,0x00040020,0x000000f0,0x00000007,0x00000047, - 0x00060034,0x00000006,0x000000fd,0x00000084,0x000000c5,0x000000bb,0x00060034,0x00000006, - 0x00000105,0x00000084,0x000000c5,0x000000bb,0x00060034,0x00000006,0x00000116,0x00000084, - 0x00000026,0x00000028,0x0004002b,0x00000006,0x00000124,0x00000002,0x00060034,0x00000006, - 0x0000012d,0x00000084,0x000000c5,0x000000bb,0x00060034,0x00000006,0x00000135,0x00000084, - 0x000000c5,0x000000bb,0x00060034,0x00000006,0x00000146,0x00000084,0x00000026,0x00000028, - 0x0004002b,0x00000006,0x00000154,0x00000003,0x00060034,0x00000006,0x0000015d,0x00000084, - 0x000000c5,0x000000bb,0x00060034,0x00000006,0x00000165,0x00000084,0x000000c5,0x000000bb, - 0x00060034,0x00000006,0x00000176,0x00000084,0x00000026,0x00000028,0x0004002b,0x00000009, - 0x00000180,0x00000003,0x00060034,0x00000006,0x000001d1,0x00000084,0x000000c5,0x000000bb, - 0x00060034,0x00000006,0x000001d9,0x00000084,0x000000c5,0x000000bb,0x00060034,0x00000006, - 0x000001ea,0x00000084,0x00000026,0x00000028,0x00060034,0x00000006,0x00000200,0x00000084, - 0x000000c5,0x000000bb,0x00060034,0x00000006,0x00000208,0x00000084,0x000000c5,0x000000bb, - 0x00060034,0x00000006,0x00000219,0x00000084,0x00000026,0x00000028,0x00060034,0x00000006, - 0x0000022f,0x00000084,0x000000c5,0x000000bb,0x00060034,0x00000006,0x00000237,0x00000084, - 0x000000c5,0x000000bb,0x00060034,0x00000006,0x00000248,0x00000084,0x00000026,0x00000028, - 0x00060034,0x00000006,0x0000025e,0x00000084,0x000000c5,0x000000bb,0x00060034,0x00000006, - 0x00000266,0x00000084,0x000000c5,0x000000bb,0x00060034,0x00000006,0x00000277,0x00000084, - 0x00000026,0x00000028,0x00060034,0x00000006,0x000002d1,0x00000084,0x000000c5,0x000000bb, - 0x00060034,0x00000006,0x000002d9,0x00000084,0x000000c5,0x000000bb,0x00060034,0x00000006, - 0x000002ea,0x00000084,0x00000026,0x00000028,0x00060034,0x00000006,0x00000300,0x00000084, - 0x000000c5,0x000000bb,0x00060034,0x00000006,0x00000308,0x00000084,0x000000c5,0x000000bb, - 0x00060034,0x00000006,0x00000319,0x00000084,0x00000026,0x00000028,0x00060034,0x00000006, - 0x0000032f,0x00000084,0x000000c5,0x000000bb,0x00060034,0x00000006,0x00000337,0x00000084, - 0x000000c5,0x000000bb,0x00060034,0x00000006,0x00000348,0x00000084,0x00000026,0x00000028, - 0x00060034,0x00000006,0x0000035e,0x00000084,0x000000c5,0x000000bb,0x00060034,0x00000006, - 0x00000366,0x00000084,0x000000c5,0x000000bb,0x00060034,0x00000006,0x00000377,0x00000084, - 0x00000026,0x00000028,0x00060034,0x00000006,0x000003d1,0x00000084,0x000000c5,0x000000bb, - 0x00060034,0x00000006,0x000003d9,0x00000084,0x000000c5,0x000000bb,0x00060034,0x00000006, - 0x000003ea,0x00000084,0x00000026,0x00000028,0x00060034,0x00000006,0x00000400,0x00000084, - 0x000000c5,0x000000bb,0x00060034,0x00000006,0x00000408,0x00000084,0x000000c5,0x000000bb, - 0x00060034,0x00000006,0x00000419,0x00000084,0x00000026,0x00000028,0x00060034,0x00000006, - 0x0000042f,0x00000084,0x000000c5,0x000000bb,0x00060034,0x00000006,0x00000437,0x00000084, - 0x000000c5,0x000000bb,0x00060034,0x00000006,0x00000448,0x00000084,0x00000026,0x00000028, - 0x00060034,0x00000006,0x0000045e,0x00000084,0x000000c5,0x000000bb,0x00060034,0x00000006, - 0x00000466,0x00000084,0x000000c5,0x000000bb,0x00060034,0x00000006,0x00000477,0x00000084, - 0x00000026,0x00000028,0x0003001d,0x000004bf,0x00000048,0x0003001e,0x000004c0,0x000004bf, - 0x00040020,0x000004c1,0x00000002,0x000004c0,0x0004003b,0x000004c1,0x000004c2,0x00000002, - 0x0004002b,0x00000006,0x000004f7,0x00000005,0x0004002b,0x00000006,0x00000502,0x00000006, - 0x0004002b,0x00000006,0x0000050d,0x00000007,0x00040032,0x00000006,0x00000516,0x00000000, - 0x00040032,0x00000006,0x00000517,0x00000000,0x00040032,0x00000006,0x00000518,0x00000000, - 0x00040032,0x00000006,0x00000519,0x00000000,0x00040032,0x00000006,0x0000051a,0x00000000, - 0x0003001d,0x0000051b,0x00000048,0x0003001e,0x0000051c,0x0000051b,0x00040020,0x0000051d, - 0x00000002,0x0000051c,0x0004003b,0x0000051d,0x0000051e,0x00000002,0x00040032,0x00000009, - 0x0000051f,0x00000001,0x00040032,0x00000009,0x00000520,0x00000001,0x00040032,0x00000009, - 0x00000521,0x00000001,0x00060033,0x0000000a,0x00000522,0x0000051f,0x00000520,0x00000521, - 0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b, - 0x00000007,0x00000008,0x00000007,0x0004003b,0x00000007,0x00000012,0x00000007,0x0004003b, - 0x00000007,0x00000017,0x00000007,0x0004003b,0x00000007,0x0000001c,0x00000007,0x0004003b, - 0x00000007,0x00000020,0x00000007,0x0004003b,0x00000007,0x00000024,0x00000007,0x0004003b, - 0x00000007,0x0000002c,0x00000007,0x0004003b,0x00000007,0x0000003e,0x00000007,0x0004003b, - 0x00000007,0x00000041,0x00000007,0x0004003b,0x00000007,0x00000043,0x00000007,0x0004003b, - 0x00000049,0x0000004a,0x00000007,0x0004003b,0x00000049,0x0000004d,0x00000007,0x0004003b, - 0x00000049,0x0000004e,0x00000007,0x0004003b,0x00000049,0x0000004f,0x00000007,0x0004003b, - 0x00000049,0x00000050,0x00000007,0x0004003b,0x00000049,0x00000051,0x00000007,0x0004003b, - 0x00000049,0x00000052,0x00000007,0x0004003b,0x00000049,0x00000053,0x00000007,0x0004003b, - 0x00000007,0x00000054,0x00000007,0x0004003b,0x00000049,0x0000005a,0x00000007,0x0004003b, - 0x00000049,0x0000005b,0x00000007,0x0004003b,0x00000049,0x0000005c,0x00000007,0x0004003b, - 0x00000049,0x0000005d,0x00000007,0x0004003b,0x00000049,0x0000005e,0x00000007,0x0004003b, - 0x00000049,0x0000006a,0x00000007,0x0004003b,0x00000049,0x00000071,0x00000007,0x0004003b, - 0x00000049,0x00000078,0x00000007,0x0004003b,0x00000049,0x0000007f,0x00000007,0x0004003b, - 0x00000049,0x00000086,0x00000007,0x0004003b,0x00000049,0x0000008d,0x00000007,0x0004003b, - 0x00000049,0x00000094,0x00000007,0x0004003b,0x00000007,0x000000a1,0x00000007,0x0004003b, - 0x00000007,0x000000a6,0x00000007,0x0004003b,0x00000007,0x000000aa,0x00000007,0x0004003b, - 0x00000007,0x000000b0,0x00000007,0x0004003b,0x00000007,0x000000b6,0x00000007,0x0004003b, - 0x00000007,0x000000c0,0x00000007,0x0004003b,0x00000007,0x000000cc,0x00000007,0x00050041, - 0x0000000e,0x0000000f,0x0000000c,0x0000000d,0x0004003d,0x00000009,0x00000010,0x0000000f, - 0x0004007c,0x00000006,0x00000011,0x00000010,0x0003003e,0x00000008,0x00000011,0x00050041, - 0x0000000e,0x00000014,0x0000000c,0x00000013,0x0004003d,0x00000009,0x00000015,0x00000014, - 0x0004007c,0x00000006,0x00000016,0x00000015,0x0003003e,0x00000012,0x00000016,0x00050041, - 0x0000000e,0x00000019,0x0000000c,0x00000018,0x0004003d,0x00000009,0x0000001a,0x00000019, - 0x0004007c,0x00000006,0x0000001b,0x0000001a,0x0003003e,0x00000017,0x0000001b,0x0004003d, - 0x00000006,0x0000001e,0x00000008,0x00050084,0x00000006,0x0000001f,0x0000001d,0x0000001e, - 0x0003003e,0x0000001c,0x0000001f,0x0004003d,0x00000006,0x00000022,0x00000012,0x00050084, - 0x00000006,0x00000023,0x00000021,0x00000022,0x0003003e,0x00000020,0x00000023,0x0004003d, - 0x00000006,0x00000025,0x00000017,0x00050084,0x00000006,0x00000027,0x00000025,0x00000026, - 0x00050084,0x00000006,0x00000029,0x00000027,0x00000028,0x00050084,0x00000006,0x0000002b, - 0x00000029,0x0000002a,0x0003003e,0x00000024,0x0000002b,0x0004003d,0x00000006,0x0000002d, - 0x00000017,0x00050084,0x00000006,0x0000002f,0x0000002d,0x0000002e,0x00050084,0x00000006, - 0x00000031,0x0000002f,0x00000030,0x00050087,0x00000006,0x00000032,0x00000031,0x00000021, - 0x0003003e,0x0000002c,0x00000032,0x0004003d,0x00000006,0x00000034,0x0000001c,0x000500b1, - 0x00000033,0x00000035,0x00000034,0x00000030,0x000300f7,0x00000037,0x00000000,0x000400fa, - 0x00000035,0x00000036,0x00000037,0x000200f8,0x00000036,0x0004003d,0x00000006,0x00000038, - 0x00000012,0x000500b1,0x00000033,0x0000003a,0x00000038,0x00000039,0x000200f9,0x00000037, - 0x000200f8,0x00000037,0x000700f5,0x00000033,0x0000003b,0x00000035,0x00000005,0x0000003a, - 0x00000036,0x000300f7,0x0000003d,0x00000000,0x000400fa,0x0000003b,0x0000003c,0x0000003d, - 0x000200f8,0x0000003c,0x0003003e,0x0000003e,0x00000040,0x0003003e,0x00000041,0x00000042, - 0x0004003d,0x00000006,0x00000044,0x0000001c,0x0004003d,0x00000006,0x00000045,0x0000003e, - 0x00050084,0x00000006,0x00000046,0x00000044,0x00000045,0x0003003e,0x00000043,0x00000046, - 0x0003003e,0x0000004a,0x0000004c,0x0003003e,0x0000004d,0x0000004c,0x0003003e,0x0000004e, - 0x0000004c,0x0003003e,0x0000004f,0x0000004c,0x0003003e,0x00000050,0x0000004c,0x0003003e, - 0x00000051,0x0000004c,0x0003003e,0x00000052,0x0000004c,0x0003003e,0x00000053,0x0000004c, - 0x0003003e,0x00000054,0x00000055,0x000200f9,0x00000056,0x000200f8,0x00000056,0x000400f6, - 0x00000058,0x00000059,0x00000000,0x000200f9,0x00000057,0x000200f8,0x00000057,0x0003003e, - 0x0000005a,0x0000004c,0x0003003e,0x0000005b,0x0000004c,0x0003003e,0x0000005c,0x0000004c, - 0x0003003e,0x0000005d,0x0000004c,0x0004003d,0x00000006,0x00000063,0x00000043,0x00060041, - 0x00000064,0x00000065,0x00000062,0x00000055,0x00000063,0x0004003d,0x00000048,0x00000066, - 0x00000065,0x0003003e,0x0000005e,0x00000066,0x0004003d,0x00000006,0x00000067,0x0000003e, - 0x0004003d,0x00000006,0x00000068,0x00000043,0x00050080,0x00000006,0x00000069,0x00000068, - 0x00000067,0x0003003e,0x00000043,0x00000069,0x0004003d,0x00000006,0x0000006b,0x00000043, - 0x00060041,0x00000064,0x0000006c,0x00000062,0x00000055,0x0000006b,0x0004003d,0x00000048, - 0x0000006d,0x0000006c,0x0003003e,0x0000006a,0x0000006d,0x0004003d,0x00000006,0x0000006e, - 0x0000003e,0x0004003d,0x00000006,0x0000006f,0x00000043,0x00050080,0x00000006,0x00000070, - 0x0000006f,0x0000006e,0x0003003e,0x00000043,0x00000070,0x0004003d,0x00000006,0x00000072, - 0x00000043,0x00060041,0x00000064,0x00000073,0x00000062,0x00000055,0x00000072,0x0004003d, - 0x00000048,0x00000074,0x00000073,0x0003003e,0x00000071,0x00000074,0x0004003d,0x00000006, - 0x00000075,0x0000003e,0x0004003d,0x00000006,0x00000076,0x00000043,0x00050080,0x00000006, - 0x00000077,0x00000076,0x00000075,0x0003003e,0x00000043,0x00000077,0x0004003d,0x00000006, - 0x00000079,0x00000043,0x00060041,0x00000064,0x0000007a,0x00000062,0x00000055,0x00000079, - 0x0004003d,0x00000048,0x0000007b,0x0000007a,0x0003003e,0x00000078,0x0000007b,0x0004003d, - 0x00000006,0x0000007c,0x0000003e,0x0004003d,0x00000006,0x0000007d,0x00000043,0x00050080, - 0x00000006,0x0000007e,0x0000007d,0x0000007c,0x0003003e,0x00000043,0x0000007e,0x0004003d, - 0x00000006,0x00000080,0x00000043,0x00060041,0x00000064,0x00000081,0x00000062,0x00000055, - 0x00000080,0x0004003d,0x00000048,0x00000082,0x00000081,0x0003003e,0x0000007f,0x00000082, - 0x0004003d,0x00000006,0x00000083,0x0000003e,0x0004003d,0x00000006,0x00000084,0x00000043, - 0x00050080,0x00000006,0x00000085,0x00000084,0x00000083,0x0003003e,0x00000043,0x00000085, - 0x0004003d,0x00000006,0x00000087,0x00000043,0x00060041,0x00000064,0x00000088,0x00000062, - 0x00000055,0x00000087,0x0004003d,0x00000048,0x00000089,0x00000088,0x0003003e,0x00000086, - 0x00000089,0x0004003d,0x00000006,0x0000008a,0x0000003e,0x0004003d,0x00000006,0x0000008b, - 0x00000043,0x00050080,0x00000006,0x0000008c,0x0000008b,0x0000008a,0x0003003e,0x00000043, - 0x0000008c,0x0004003d,0x00000006,0x0000008e,0x00000043,0x00060041,0x00000064,0x0000008f, - 0x00000062,0x00000055,0x0000008e,0x0004003d,0x00000048,0x00000090,0x0000008f,0x0003003e, - 0x0000008d,0x00000090,0x0004003d,0x00000006,0x00000091,0x0000003e,0x0004003d,0x00000006, - 0x00000092,0x00000043,0x00050080,0x00000006,0x00000093,0x00000092,0x00000091,0x0003003e, - 0x00000043,0x00000093,0x0004003d,0x00000006,0x00000095,0x00000043,0x00060041,0x00000064, - 0x00000096,0x00000062,0x00000055,0x00000095,0x0004003d,0x00000048,0x00000097,0x00000096, - 0x0003003e,0x00000094,0x00000097,0x0004003d,0x00000006,0x00000098,0x0000003e,0x0004003d, - 0x00000006,0x00000099,0x00000043,0x00050080,0x00000006,0x0000009a,0x00000099,0x00000098, - 0x0003003e,0x00000043,0x0000009a,0x0004003d,0x00000006,0x0000009c,0x0000003e,0x00050084, - 0x00000006,0x0000009d,0x0000001d,0x0000009c,0x00050082,0x00000006,0x0000009e,0x0000009b, - 0x0000009d,0x0004003d,0x00000006,0x0000009f,0x00000043,0x00050080,0x00000006,0x000000a0, - 0x0000009f,0x0000009e,0x0003003e,0x00000043,0x000000a0,0x0004003d,0x00000006,0x000000a2, - 0x00000020,0x00050080,0x00000006,0x000000a3,0x000000a2,0x00000055,0x0005008b,0x00000006, - 0x000000a5,0x000000a3,0x000000a4,0x0003003e,0x000000a1,0x000000a5,0x0004003d,0x00000006, - 0x000000a7,0x00000020,0x00050080,0x00000006,0x000000a8,0x000000a7,0x00000055,0x00050087, - 0x00000006,0x000000a9,0x000000a8,0x000000a4,0x0003003e,0x000000a6,0x000000a9,0x0004003d, - 0x00000006,0x000000ab,0x000000a6,0x00050084,0x00000006,0x000000ad,0x000000ab,0x000000ac, - 0x00050082,0x00000006,0x000000af,0x000000ad,0x000000ae,0x0003003e,0x000000aa,0x000000af, - 0x0004003d,0x00000006,0x000000b1,0x000000a1,0x00050084,0x00000006,0x000000b3,0x000000b1, - 0x000000b2,0x00050082,0x00000006,0x000000b5,0x000000b3,0x000000b4,0x0003003e,0x000000b0, - 0x000000b5,0x0004003d,0x00000006,0x000000b7,0x000000b0,0x0004003d,0x00000006,0x000000b8, - 0x00000054,0x00050084,0x00000006,0x000000b9,0x000000b8,0x00000021,0x00050080,0x00000006, - 0x000000ba,0x000000b9,0x00000055,0x0005008b,0x00000006,0x000000bc,0x000000ba,0x000000bb, - 0x00050084,0x00000006,0x000000be,0x000000bc,0x000000bd,0x00050080,0x00000006,0x000000bf, - 0x000000b7,0x000000be,0x0003003e,0x000000b6,0x000000bf,0x0004003d,0x00000006,0x000000c1, - 0x000000aa,0x0004003d,0x00000006,0x000000c2,0x00000054,0x00050084,0x00000006,0x000000c3, - 0x000000c2,0x00000021,0x00050080,0x00000006,0x000000c4,0x000000c3,0x00000055,0x0005008b, - 0x00000006,0x000000c7,0x000000c4,0x000000c6,0x00050087,0x00000006,0x000000c8,0x000000c7, - 0x000000bb,0x00050084,0x00000006,0x000000ca,0x000000c8,0x000000c9,0x00050080,0x00000006, - 0x000000cb,0x000000c1,0x000000ca,0x0003003e,0x000000c0,0x000000cb,0x0004003d,0x00000006, - 0x000000cd,0x00000054,0x00050084,0x00000006,0x000000ce,0x000000cd,0x00000021,0x00050080, - 0x00000006,0x000000cf,0x000000ce,0x00000055,0x00050087,0x00000006,0x000000d1,0x000000cf, - 0x000000d0,0x0003003e,0x000000cc,0x000000d1,0x0004003d,0x00000006,0x000000d2,0x000000c0, - 0x000500af,0x00000033,0x000000d3,0x000000d2,0x00000055,0x0004003d,0x00000006,0x000000d4, - 0x000000c0,0x000500b1,0x00000033,0x000000d5,0x000000d4,0x00000026,0x000500a7,0x00000033, - 0x000000d6,0x000000d3,0x000000d5,0x0004003d,0x00000006,0x000000d7,0x000000b6,0x000500af, - 0x00000033,0x000000d8,0x000000d7,0x00000055,0x000500a7,0x00000033,0x000000d9,0x000000d6, - 0x000000d8,0x0004003d,0x00000006,0x000000da,0x000000b6,0x000500b1,0x00000033,0x000000db, - 0x000000da,0x00000028,0x000500a7,0x00000033,0x000000dc,0x000000d9,0x000000db,0x000300f7, - 0x000000de,0x00000000,0x000400fa,0x000000dc,0x000000dd,0x000000de,0x000200f8,0x000000dd, - 0x0004003d,0x00000006,0x000000e3,0x00000024,0x0004003d,0x00000006,0x000000e4,0x000000cc, - 0x00050084,0x00000006,0x000000e6,0x000000e4,0x000000e5,0x00050080,0x00000006,0x000000e7, - 0x000000e3,0x000000e6,0x0004003d,0x00000006,0x000000e8,0x000000c0,0x00050084,0x00000006, - 0x000000e9,0x000000e8,0x00000028,0x00050080,0x00000006,0x000000ea,0x000000e7,0x000000e9, - 0x0004003d,0x00000006,0x000000eb,0x000000b6,0x00050080,0x00000006,0x000000ec,0x000000ea, - 0x000000eb,0x00060041,0x000000ed,0x000000ee,0x000000e2,0x00000055,0x000000ec,0x0004003d, - 0x00000047,0x000000ef,0x000000ee,0x00050041,0x000000f0,0x000000f1,0x0000005a,0x0000000d, - 0x0003003e,0x000000f1,0x000000ef,0x000200f9,0x000000de,0x000200f8,0x000000de,0x0004003d, - 0x00000006,0x000000f2,0x000000b0,0x0004003d,0x00000006,0x000000f3,0x00000054,0x00050084, - 0x00000006,0x000000f4,0x000000f3,0x00000021,0x00050080,0x00000006,0x000000f5,0x000000f4, - 0x0000009b,0x0005008b,0x00000006,0x000000f6,0x000000f5,0x000000bb,0x00050084,0x00000006, - 0x000000f7,0x000000f6,0x000000bd,0x00050080,0x00000006,0x000000f8,0x000000f2,0x000000f7, - 0x0003003e,0x000000b6,0x000000f8,0x0004003d,0x00000006,0x000000f9,0x000000aa,0x0004003d, - 0x00000006,0x000000fa,0x00000054,0x00050084,0x00000006,0x000000fb,0x000000fa,0x00000021, - 0x00050080,0x00000006,0x000000fc,0x000000fb,0x0000009b,0x0005008b,0x00000006,0x000000fe, - 0x000000fc,0x000000fd,0x00050087,0x00000006,0x000000ff,0x000000fe,0x000000bb,0x00050084, - 0x00000006,0x00000100,0x000000ff,0x000000c9,0x00050080,0x00000006,0x00000101,0x000000f9, - 0x00000100,0x0003003e,0x000000c0,0x00000101,0x0004003d,0x00000006,0x00000102,0x00000054, - 0x00050084,0x00000006,0x00000103,0x00000102,0x00000021,0x00050080,0x00000006,0x00000104, - 0x00000103,0x0000009b,0x00050087,0x00000006,0x00000106,0x00000104,0x00000105,0x0003003e, - 0x000000cc,0x00000106,0x0004003d,0x00000006,0x00000107,0x000000c0,0x000500af,0x00000033, - 0x00000108,0x00000107,0x00000055,0x0004003d,0x00000006,0x00000109,0x000000c0,0x000500b1, - 0x00000033,0x0000010a,0x00000109,0x00000026,0x000500a7,0x00000033,0x0000010b,0x00000108, - 0x0000010a,0x0004003d,0x00000006,0x0000010c,0x000000b6,0x000500af,0x00000033,0x0000010d, - 0x0000010c,0x00000055,0x000500a7,0x00000033,0x0000010e,0x0000010b,0x0000010d,0x0004003d, - 0x00000006,0x0000010f,0x000000b6,0x000500b1,0x00000033,0x00000110,0x0000010f,0x00000028, - 0x000500a7,0x00000033,0x00000111,0x0000010e,0x00000110,0x000300f7,0x00000113,0x00000000, - 0x000400fa,0x00000111,0x00000112,0x00000113,0x000200f8,0x00000112,0x0004003d,0x00000006, - 0x00000114,0x00000024,0x0004003d,0x00000006,0x00000115,0x000000cc,0x00050084,0x00000006, - 0x00000117,0x00000115,0x00000116,0x00050080,0x00000006,0x00000118,0x00000114,0x00000117, - 0x0004003d,0x00000006,0x00000119,0x000000c0,0x00050084,0x00000006,0x0000011a,0x00000119, - 0x00000028,0x00050080,0x00000006,0x0000011b,0x00000118,0x0000011a,0x0004003d,0x00000006, - 0x0000011c,0x000000b6,0x00050080,0x00000006,0x0000011d,0x0000011b,0x0000011c,0x00060041, - 0x000000ed,0x0000011e,0x000000e2,0x00000055,0x0000011d,0x0004003d,0x00000047,0x0000011f, - 0x0000011e,0x00050041,0x000000f0,0x00000120,0x0000005a,0x00000013,0x0003003e,0x00000120, - 0x0000011f,0x000200f9,0x00000113,0x000200f8,0x00000113,0x0004003d,0x00000006,0x00000121, - 0x000000b0,0x0004003d,0x00000006,0x00000122,0x00000054,0x00050084,0x00000006,0x00000123, - 0x00000122,0x00000021,0x00050080,0x00000006,0x00000125,0x00000123,0x00000124,0x0005008b, - 0x00000006,0x00000126,0x00000125,0x000000bb,0x00050084,0x00000006,0x00000127,0x00000126, - 0x000000bd,0x00050080,0x00000006,0x00000128,0x00000121,0x00000127,0x0003003e,0x000000b6, - 0x00000128,0x0004003d,0x00000006,0x00000129,0x000000aa,0x0004003d,0x00000006,0x0000012a, - 0x00000054,0x00050084,0x00000006,0x0000012b,0x0000012a,0x00000021,0x00050080,0x00000006, - 0x0000012c,0x0000012b,0x00000124,0x0005008b,0x00000006,0x0000012e,0x0000012c,0x0000012d, - 0x00050087,0x00000006,0x0000012f,0x0000012e,0x000000bb,0x00050084,0x00000006,0x00000130, - 0x0000012f,0x000000c9,0x00050080,0x00000006,0x00000131,0x00000129,0x00000130,0x0003003e, - 0x000000c0,0x00000131,0x0004003d,0x00000006,0x00000132,0x00000054,0x00050084,0x00000006, - 0x00000133,0x00000132,0x00000021,0x00050080,0x00000006,0x00000134,0x00000133,0x00000124, - 0x00050087,0x00000006,0x00000136,0x00000134,0x00000135,0x0003003e,0x000000cc,0x00000136, - 0x0004003d,0x00000006,0x00000137,0x000000c0,0x000500af,0x00000033,0x00000138,0x00000137, - 0x00000055,0x0004003d,0x00000006,0x00000139,0x000000c0,0x000500b1,0x00000033,0x0000013a, - 0x00000139,0x00000026,0x000500a7,0x00000033,0x0000013b,0x00000138,0x0000013a,0x0004003d, - 0x00000006,0x0000013c,0x000000b6,0x000500af,0x00000033,0x0000013d,0x0000013c,0x00000055, - 0x000500a7,0x00000033,0x0000013e,0x0000013b,0x0000013d,0x0004003d,0x00000006,0x0000013f, - 0x000000b6,0x000500b1,0x00000033,0x00000140,0x0000013f,0x00000028,0x000500a7,0x00000033, - 0x00000141,0x0000013e,0x00000140,0x000300f7,0x00000143,0x00000000,0x000400fa,0x00000141, - 0x00000142,0x00000143,0x000200f8,0x00000142,0x0004003d,0x00000006,0x00000144,0x00000024, - 0x0004003d,0x00000006,0x00000145,0x000000cc,0x00050084,0x00000006,0x00000147,0x00000145, - 0x00000146,0x00050080,0x00000006,0x00000148,0x00000144,0x00000147,0x0004003d,0x00000006, - 0x00000149,0x000000c0,0x00050084,0x00000006,0x0000014a,0x00000149,0x00000028,0x00050080, - 0x00000006,0x0000014b,0x00000148,0x0000014a,0x0004003d,0x00000006,0x0000014c,0x000000b6, - 0x00050080,0x00000006,0x0000014d,0x0000014b,0x0000014c,0x00060041,0x000000ed,0x0000014e, - 0x000000e2,0x00000055,0x0000014d,0x0004003d,0x00000047,0x0000014f,0x0000014e,0x00050041, - 0x000000f0,0x00000150,0x0000005a,0x00000018,0x0003003e,0x00000150,0x0000014f,0x000200f9, - 0x00000143,0x000200f8,0x00000143,0x0004003d,0x00000006,0x00000151,0x000000b0,0x0004003d, - 0x00000006,0x00000152,0x00000054,0x00050084,0x00000006,0x00000153,0x00000152,0x00000021, - 0x00050080,0x00000006,0x00000155,0x00000153,0x00000154,0x0005008b,0x00000006,0x00000156, - 0x00000155,0x000000bb,0x00050084,0x00000006,0x00000157,0x00000156,0x000000bd,0x00050080, - 0x00000006,0x00000158,0x00000151,0x00000157,0x0003003e,0x000000b6,0x00000158,0x0004003d, - 0x00000006,0x00000159,0x000000aa,0x0004003d,0x00000006,0x0000015a,0x00000054,0x00050084, - 0x00000006,0x0000015b,0x0000015a,0x00000021,0x00050080,0x00000006,0x0000015c,0x0000015b, - 0x00000154,0x0005008b,0x00000006,0x0000015e,0x0000015c,0x0000015d,0x00050087,0x00000006, - 0x0000015f,0x0000015e,0x000000bb,0x00050084,0x00000006,0x00000160,0x0000015f,0x000000c9, - 0x00050080,0x00000006,0x00000161,0x00000159,0x00000160,0x0003003e,0x000000c0,0x00000161, - 0x0004003d,0x00000006,0x00000162,0x00000054,0x00050084,0x00000006,0x00000163,0x00000162, - 0x00000021,0x00050080,0x00000006,0x00000164,0x00000163,0x00000154,0x00050087,0x00000006, - 0x00000166,0x00000164,0x00000165,0x0003003e,0x000000cc,0x00000166,0x0004003d,0x00000006, - 0x00000167,0x000000c0,0x000500af,0x00000033,0x00000168,0x00000167,0x00000055,0x0004003d, - 0x00000006,0x00000169,0x000000c0,0x000500b1,0x00000033,0x0000016a,0x00000169,0x00000026, - 0x000500a7,0x00000033,0x0000016b,0x00000168,0x0000016a,0x0004003d,0x00000006,0x0000016c, - 0x000000b6,0x000500af,0x00000033,0x0000016d,0x0000016c,0x00000055,0x000500a7,0x00000033, - 0x0000016e,0x0000016b,0x0000016d,0x0004003d,0x00000006,0x0000016f,0x000000b6,0x000500b1, - 0x00000033,0x00000170,0x0000016f,0x00000028,0x000500a7,0x00000033,0x00000171,0x0000016e, - 0x00000170,0x000300f7,0x00000173,0x00000000,0x000400fa,0x00000171,0x00000172,0x00000173, - 0x000200f8,0x00000172,0x0004003d,0x00000006,0x00000174,0x00000024,0x0004003d,0x00000006, - 0x00000175,0x000000cc,0x00050084,0x00000006,0x00000177,0x00000175,0x00000176,0x00050080, - 0x00000006,0x00000178,0x00000174,0x00000177,0x0004003d,0x00000006,0x00000179,0x000000c0, - 0x00050084,0x00000006,0x0000017a,0x00000179,0x00000028,0x00050080,0x00000006,0x0000017b, - 0x00000178,0x0000017a,0x0004003d,0x00000006,0x0000017c,0x000000b6,0x00050080,0x00000006, - 0x0000017d,0x0000017b,0x0000017c,0x00060041,0x000000ed,0x0000017e,0x000000e2,0x00000055, - 0x0000017d,0x0004003d,0x00000047,0x0000017f,0x0000017e,0x00050041,0x000000f0,0x00000181, - 0x0000005a,0x00000180,0x0003003e,0x00000181,0x0000017f,0x000200f9,0x00000173,0x000200f8, - 0x00000173,0x0004003d,0x00000048,0x00000182,0x0000005e,0x0004003d,0x00000048,0x00000183, - 0x0000005a,0x00050094,0x00000047,0x00000184,0x00000182,0x00000183,0x00050041,0x000000f0, - 0x00000185,0x0000004a,0x0000000d,0x0004003d,0x00000047,0x00000186,0x00000185,0x00050081, - 0x00000047,0x00000187,0x00000186,0x00000184,0x00050041,0x000000f0,0x00000188,0x0000004a, - 0x0000000d,0x0003003e,0x00000188,0x00000187,0x0004003d,0x00000048,0x00000189,0x0000006a, - 0x0004003d,0x00000048,0x0000018a,0x0000005a,0x00050094,0x00000047,0x0000018b,0x00000189, - 0x0000018a,0x00050041,0x000000f0,0x0000018c,0x0000004d,0x0000000d,0x0004003d,0x00000047, - 0x0000018d,0x0000018c,0x00050081,0x00000047,0x0000018e,0x0000018d,0x0000018b,0x00050041, - 0x000000f0,0x0000018f,0x0000004d,0x0000000d,0x0003003e,0x0000018f,0x0000018e,0x0004003d, - 0x00000048,0x00000190,0x00000071,0x0004003d,0x00000048,0x00000191,0x0000005a,0x00050094, - 0x00000047,0x00000192,0x00000190,0x00000191,0x00050041,0x000000f0,0x00000193,0x0000004e, - 0x0000000d,0x0004003d,0x00000047,0x00000194,0x00000193,0x00050081,0x00000047,0x00000195, - 0x00000194,0x00000192,0x00050041,0x000000f0,0x00000196,0x0000004e,0x0000000d,0x0003003e, - 0x00000196,0x00000195,0x0004003d,0x00000048,0x00000197,0x00000078,0x0004003d,0x00000048, - 0x00000198,0x0000005a,0x00050094,0x00000047,0x00000199,0x00000197,0x00000198,0x00050041, - 0x000000f0,0x0000019a,0x0000004f,0x0000000d,0x0004003d,0x00000047,0x0000019b,0x0000019a, - 0x00050081,0x00000047,0x0000019c,0x0000019b,0x00000199,0x00050041,0x000000f0,0x0000019d, - 0x0000004f,0x0000000d,0x0003003e,0x0000019d,0x0000019c,0x0004003d,0x00000048,0x0000019e, - 0x0000007f,0x0004003d,0x00000048,0x0000019f,0x0000005a,0x00050094,0x00000047,0x000001a0, - 0x0000019e,0x0000019f,0x00050041,0x000000f0,0x000001a1,0x00000050,0x0000000d,0x0004003d, - 0x00000047,0x000001a2,0x000001a1,0x00050081,0x00000047,0x000001a3,0x000001a2,0x000001a0, - 0x00050041,0x000000f0,0x000001a4,0x00000050,0x0000000d,0x0003003e,0x000001a4,0x000001a3, - 0x0004003d,0x00000048,0x000001a5,0x00000086,0x0004003d,0x00000048,0x000001a6,0x0000005a, - 0x00050094,0x00000047,0x000001a7,0x000001a5,0x000001a6,0x00050041,0x000000f0,0x000001a8, - 0x00000051,0x0000000d,0x0004003d,0x00000047,0x000001a9,0x000001a8,0x00050081,0x00000047, - 0x000001aa,0x000001a9,0x000001a7,0x00050041,0x000000f0,0x000001ab,0x00000051,0x0000000d, - 0x0003003e,0x000001ab,0x000001aa,0x0004003d,0x00000048,0x000001ac,0x0000008d,0x0004003d, - 0x00000048,0x000001ad,0x0000005a,0x00050094,0x00000047,0x000001ae,0x000001ac,0x000001ad, - 0x00050041,0x000000f0,0x000001af,0x00000052,0x0000000d,0x0004003d,0x00000047,0x000001b0, - 0x000001af,0x00050081,0x00000047,0x000001b1,0x000001b0,0x000001ae,0x00050041,0x000000f0, - 0x000001b2,0x00000052,0x0000000d,0x0003003e,0x000001b2,0x000001b1,0x0004003d,0x00000048, - 0x000001b3,0x00000094,0x0004003d,0x00000048,0x000001b4,0x0000005a,0x00050094,0x00000047, - 0x000001b5,0x000001b3,0x000001b4,0x00050041,0x000000f0,0x000001b6,0x00000053,0x0000000d, - 0x0004003d,0x00000047,0x000001b7,0x000001b6,0x00050081,0x00000047,0x000001b8,0x000001b7, - 0x000001b5,0x00050041,0x000000f0,0x000001b9,0x00000053,0x0000000d,0x0003003e,0x000001b9, - 0x000001b8,0x0004003d,0x00000006,0x000001ba,0x00000020,0x00050080,0x00000006,0x000001bb, - 0x000001ba,0x0000009b,0x0005008b,0x00000006,0x000001bc,0x000001bb,0x000000a4,0x0003003e, - 0x000000a1,0x000001bc,0x0004003d,0x00000006,0x000001bd,0x00000020,0x00050080,0x00000006, - 0x000001be,0x000001bd,0x0000009b,0x00050087,0x00000006,0x000001bf,0x000001be,0x000000a4, - 0x0003003e,0x000000a6,0x000001bf,0x0004003d,0x00000006,0x000001c0,0x000000a6,0x00050084, - 0x00000006,0x000001c1,0x000001c0,0x000000ac,0x00050082,0x00000006,0x000001c2,0x000001c1, - 0x000000ae,0x0003003e,0x000000aa,0x000001c2,0x0004003d,0x00000006,0x000001c3,0x000000a1, - 0x00050084,0x00000006,0x000001c4,0x000001c3,0x000000b2,0x00050082,0x00000006,0x000001c5, - 0x000001c4,0x000000b4,0x0003003e,0x000000b0,0x000001c5,0x0004003d,0x00000006,0x000001c6, - 0x000000b0,0x0004003d,0x00000006,0x000001c7,0x00000054,0x00050084,0x00000006,0x000001c8, - 0x000001c7,0x00000021,0x00050080,0x00000006,0x000001c9,0x000001c8,0x00000055,0x0005008b, - 0x00000006,0x000001ca,0x000001c9,0x000000bb,0x00050084,0x00000006,0x000001cb,0x000001ca, - 0x000000bd,0x00050080,0x00000006,0x000001cc,0x000001c6,0x000001cb,0x0003003e,0x000000b6, - 0x000001cc,0x0004003d,0x00000006,0x000001cd,0x000000aa,0x0004003d,0x00000006,0x000001ce, - 0x00000054,0x00050084,0x00000006,0x000001cf,0x000001ce,0x00000021,0x00050080,0x00000006, - 0x000001d0,0x000001cf,0x00000055,0x0005008b,0x00000006,0x000001d2,0x000001d0,0x000001d1, - 0x00050087,0x00000006,0x000001d3,0x000001d2,0x000000bb,0x00050084,0x00000006,0x000001d4, - 0x000001d3,0x000000c9,0x00050080,0x00000006,0x000001d5,0x000001cd,0x000001d4,0x0003003e, - 0x000000c0,0x000001d5,0x0004003d,0x00000006,0x000001d6,0x00000054,0x00050084,0x00000006, - 0x000001d7,0x000001d6,0x00000021,0x00050080,0x00000006,0x000001d8,0x000001d7,0x00000055, - 0x00050087,0x00000006,0x000001da,0x000001d8,0x000001d9,0x0003003e,0x000000cc,0x000001da, - 0x0004003d,0x00000006,0x000001db,0x000000c0,0x000500af,0x00000033,0x000001dc,0x000001db, - 0x00000055,0x0004003d,0x00000006,0x000001dd,0x000000c0,0x000500b1,0x00000033,0x000001de, - 0x000001dd,0x00000026,0x000500a7,0x00000033,0x000001df,0x000001dc,0x000001de,0x0004003d, - 0x00000006,0x000001e0,0x000000b6,0x000500af,0x00000033,0x000001e1,0x000001e0,0x00000055, - 0x000500a7,0x00000033,0x000001e2,0x000001df,0x000001e1,0x0004003d,0x00000006,0x000001e3, - 0x000000b6,0x000500b1,0x00000033,0x000001e4,0x000001e3,0x00000028,0x000500a7,0x00000033, - 0x000001e5,0x000001e2,0x000001e4,0x000300f7,0x000001e7,0x00000000,0x000400fa,0x000001e5, - 0x000001e6,0x000001e7,0x000200f8,0x000001e6,0x0004003d,0x00000006,0x000001e8,0x00000024, - 0x0004003d,0x00000006,0x000001e9,0x000000cc,0x00050084,0x00000006,0x000001eb,0x000001e9, - 0x000001ea,0x00050080,0x00000006,0x000001ec,0x000001e8,0x000001eb,0x0004003d,0x00000006, - 0x000001ed,0x000000c0,0x00050084,0x00000006,0x000001ee,0x000001ed,0x00000028,0x00050080, - 0x00000006,0x000001ef,0x000001ec,0x000001ee,0x0004003d,0x00000006,0x000001f0,0x000000b6, - 0x00050080,0x00000006,0x000001f1,0x000001ef,0x000001f0,0x00060041,0x000000ed,0x000001f2, - 0x000000e2,0x00000055,0x000001f1,0x0004003d,0x00000047,0x000001f3,0x000001f2,0x00050041, - 0x000000f0,0x000001f4,0x0000005b,0x0000000d,0x0003003e,0x000001f4,0x000001f3,0x000200f9, - 0x000001e7,0x000200f8,0x000001e7,0x0004003d,0x00000006,0x000001f5,0x000000b0,0x0004003d, - 0x00000006,0x000001f6,0x00000054,0x00050084,0x00000006,0x000001f7,0x000001f6,0x00000021, - 0x00050080,0x00000006,0x000001f8,0x000001f7,0x0000009b,0x0005008b,0x00000006,0x000001f9, - 0x000001f8,0x000000bb,0x00050084,0x00000006,0x000001fa,0x000001f9,0x000000bd,0x00050080, - 0x00000006,0x000001fb,0x000001f5,0x000001fa,0x0003003e,0x000000b6,0x000001fb,0x0004003d, - 0x00000006,0x000001fc,0x000000aa,0x0004003d,0x00000006,0x000001fd,0x00000054,0x00050084, - 0x00000006,0x000001fe,0x000001fd,0x00000021,0x00050080,0x00000006,0x000001ff,0x000001fe, - 0x0000009b,0x0005008b,0x00000006,0x00000201,0x000001ff,0x00000200,0x00050087,0x00000006, - 0x00000202,0x00000201,0x000000bb,0x00050084,0x00000006,0x00000203,0x00000202,0x000000c9, - 0x00050080,0x00000006,0x00000204,0x000001fc,0x00000203,0x0003003e,0x000000c0,0x00000204, - 0x0004003d,0x00000006,0x00000205,0x00000054,0x00050084,0x00000006,0x00000206,0x00000205, - 0x00000021,0x00050080,0x00000006,0x00000207,0x00000206,0x0000009b,0x00050087,0x00000006, - 0x00000209,0x00000207,0x00000208,0x0003003e,0x000000cc,0x00000209,0x0004003d,0x00000006, - 0x0000020a,0x000000c0,0x000500af,0x00000033,0x0000020b,0x0000020a,0x00000055,0x0004003d, - 0x00000006,0x0000020c,0x000000c0,0x000500b1,0x00000033,0x0000020d,0x0000020c,0x00000026, - 0x000500a7,0x00000033,0x0000020e,0x0000020b,0x0000020d,0x0004003d,0x00000006,0x0000020f, - 0x000000b6,0x000500af,0x00000033,0x00000210,0x0000020f,0x00000055,0x000500a7,0x00000033, - 0x00000211,0x0000020e,0x00000210,0x0004003d,0x00000006,0x00000212,0x000000b6,0x000500b1, - 0x00000033,0x00000213,0x00000212,0x00000028,0x000500a7,0x00000033,0x00000214,0x00000211, - 0x00000213,0x000300f7,0x00000216,0x00000000,0x000400fa,0x00000214,0x00000215,0x00000216, - 0x000200f8,0x00000215,0x0004003d,0x00000006,0x00000217,0x00000024,0x0004003d,0x00000006, - 0x00000218,0x000000cc,0x00050084,0x00000006,0x0000021a,0x00000218,0x00000219,0x00050080, - 0x00000006,0x0000021b,0x00000217,0x0000021a,0x0004003d,0x00000006,0x0000021c,0x000000c0, - 0x00050084,0x00000006,0x0000021d,0x0000021c,0x00000028,0x00050080,0x00000006,0x0000021e, - 0x0000021b,0x0000021d,0x0004003d,0x00000006,0x0000021f,0x000000b6,0x00050080,0x00000006, - 0x00000220,0x0000021e,0x0000021f,0x00060041,0x000000ed,0x00000221,0x000000e2,0x00000055, - 0x00000220,0x0004003d,0x00000047,0x00000222,0x00000221,0x00050041,0x000000f0,0x00000223, - 0x0000005b,0x00000013,0x0003003e,0x00000223,0x00000222,0x000200f9,0x00000216,0x000200f8, - 0x00000216,0x0004003d,0x00000006,0x00000224,0x000000b0,0x0004003d,0x00000006,0x00000225, - 0x00000054,0x00050084,0x00000006,0x00000226,0x00000225,0x00000021,0x00050080,0x00000006, - 0x00000227,0x00000226,0x00000124,0x0005008b,0x00000006,0x00000228,0x00000227,0x000000bb, - 0x00050084,0x00000006,0x00000229,0x00000228,0x000000bd,0x00050080,0x00000006,0x0000022a, - 0x00000224,0x00000229,0x0003003e,0x000000b6,0x0000022a,0x0004003d,0x00000006,0x0000022b, - 0x000000aa,0x0004003d,0x00000006,0x0000022c,0x00000054,0x00050084,0x00000006,0x0000022d, - 0x0000022c,0x00000021,0x00050080,0x00000006,0x0000022e,0x0000022d,0x00000124,0x0005008b, - 0x00000006,0x00000230,0x0000022e,0x0000022f,0x00050087,0x00000006,0x00000231,0x00000230, - 0x000000bb,0x00050084,0x00000006,0x00000232,0x00000231,0x000000c9,0x00050080,0x00000006, - 0x00000233,0x0000022b,0x00000232,0x0003003e,0x000000c0,0x00000233,0x0004003d,0x00000006, - 0x00000234,0x00000054,0x00050084,0x00000006,0x00000235,0x00000234,0x00000021,0x00050080, - 0x00000006,0x00000236,0x00000235,0x00000124,0x00050087,0x00000006,0x00000238,0x00000236, - 0x00000237,0x0003003e,0x000000cc,0x00000238,0x0004003d,0x00000006,0x00000239,0x000000c0, - 0x000500af,0x00000033,0x0000023a,0x00000239,0x00000055,0x0004003d,0x00000006,0x0000023b, - 0x000000c0,0x000500b1,0x00000033,0x0000023c,0x0000023b,0x00000026,0x000500a7,0x00000033, - 0x0000023d,0x0000023a,0x0000023c,0x0004003d,0x00000006,0x0000023e,0x000000b6,0x000500af, - 0x00000033,0x0000023f,0x0000023e,0x00000055,0x000500a7,0x00000033,0x00000240,0x0000023d, - 0x0000023f,0x0004003d,0x00000006,0x00000241,0x000000b6,0x000500b1,0x00000033,0x00000242, - 0x00000241,0x00000028,0x000500a7,0x00000033,0x00000243,0x00000240,0x00000242,0x000300f7, - 0x00000245,0x00000000,0x000400fa,0x00000243,0x00000244,0x00000245,0x000200f8,0x00000244, - 0x0004003d,0x00000006,0x00000246,0x00000024,0x0004003d,0x00000006,0x00000247,0x000000cc, - 0x00050084,0x00000006,0x00000249,0x00000247,0x00000248,0x00050080,0x00000006,0x0000024a, - 0x00000246,0x00000249,0x0004003d,0x00000006,0x0000024b,0x000000c0,0x00050084,0x00000006, - 0x0000024c,0x0000024b,0x00000028,0x00050080,0x00000006,0x0000024d,0x0000024a,0x0000024c, - 0x0004003d,0x00000006,0x0000024e,0x000000b6,0x00050080,0x00000006,0x0000024f,0x0000024d, - 0x0000024e,0x00060041,0x000000ed,0x00000250,0x000000e2,0x00000055,0x0000024f,0x0004003d, - 0x00000047,0x00000251,0x00000250,0x00050041,0x000000f0,0x00000252,0x0000005b,0x00000018, - 0x0003003e,0x00000252,0x00000251,0x000200f9,0x00000245,0x000200f8,0x00000245,0x0004003d, - 0x00000006,0x00000253,0x000000b0,0x0004003d,0x00000006,0x00000254,0x00000054,0x00050084, - 0x00000006,0x00000255,0x00000254,0x00000021,0x00050080,0x00000006,0x00000256,0x00000255, - 0x00000154,0x0005008b,0x00000006,0x00000257,0x00000256,0x000000bb,0x00050084,0x00000006, - 0x00000258,0x00000257,0x000000bd,0x00050080,0x00000006,0x00000259,0x00000253,0x00000258, - 0x0003003e,0x000000b6,0x00000259,0x0004003d,0x00000006,0x0000025a,0x000000aa,0x0004003d, - 0x00000006,0x0000025b,0x00000054,0x00050084,0x00000006,0x0000025c,0x0000025b,0x00000021, - 0x00050080,0x00000006,0x0000025d,0x0000025c,0x00000154,0x0005008b,0x00000006,0x0000025f, - 0x0000025d,0x0000025e,0x00050087,0x00000006,0x00000260,0x0000025f,0x000000bb,0x00050084, - 0x00000006,0x00000261,0x00000260,0x000000c9,0x00050080,0x00000006,0x00000262,0x0000025a, - 0x00000261,0x0003003e,0x000000c0,0x00000262,0x0004003d,0x00000006,0x00000263,0x00000054, - 0x00050084,0x00000006,0x00000264,0x00000263,0x00000021,0x00050080,0x00000006,0x00000265, - 0x00000264,0x00000154,0x00050087,0x00000006,0x00000267,0x00000265,0x00000266,0x0003003e, - 0x000000cc,0x00000267,0x0004003d,0x00000006,0x00000268,0x000000c0,0x000500af,0x00000033, - 0x00000269,0x00000268,0x00000055,0x0004003d,0x00000006,0x0000026a,0x000000c0,0x000500b1, - 0x00000033,0x0000026b,0x0000026a,0x00000026,0x000500a7,0x00000033,0x0000026c,0x00000269, - 0x0000026b,0x0004003d,0x00000006,0x0000026d,0x000000b6,0x000500af,0x00000033,0x0000026e, - 0x0000026d,0x00000055,0x000500a7,0x00000033,0x0000026f,0x0000026c,0x0000026e,0x0004003d, - 0x00000006,0x00000270,0x000000b6,0x000500b1,0x00000033,0x00000271,0x00000270,0x00000028, - 0x000500a7,0x00000033,0x00000272,0x0000026f,0x00000271,0x000300f7,0x00000274,0x00000000, - 0x000400fa,0x00000272,0x00000273,0x00000274,0x000200f8,0x00000273,0x0004003d,0x00000006, - 0x00000275,0x00000024,0x0004003d,0x00000006,0x00000276,0x000000cc,0x00050084,0x00000006, - 0x00000278,0x00000276,0x00000277,0x00050080,0x00000006,0x00000279,0x00000275,0x00000278, - 0x0004003d,0x00000006,0x0000027a,0x000000c0,0x00050084,0x00000006,0x0000027b,0x0000027a, - 0x00000028,0x00050080,0x00000006,0x0000027c,0x00000279,0x0000027b,0x0004003d,0x00000006, - 0x0000027d,0x000000b6,0x00050080,0x00000006,0x0000027e,0x0000027c,0x0000027d,0x00060041, - 0x000000ed,0x0000027f,0x000000e2,0x00000055,0x0000027e,0x0004003d,0x00000047,0x00000280, - 0x0000027f,0x00050041,0x000000f0,0x00000281,0x0000005b,0x00000180,0x0003003e,0x00000281, - 0x00000280,0x000200f9,0x00000274,0x000200f8,0x00000274,0x0004003d,0x00000048,0x00000282, - 0x0000005e,0x0004003d,0x00000048,0x00000283,0x0000005b,0x00050094,0x00000047,0x00000284, - 0x00000282,0x00000283,0x00050041,0x000000f0,0x00000285,0x0000004a,0x00000013,0x0004003d, - 0x00000047,0x00000286,0x00000285,0x00050081,0x00000047,0x00000287,0x00000286,0x00000284, - 0x00050041,0x000000f0,0x00000288,0x0000004a,0x00000013,0x0003003e,0x00000288,0x00000287, - 0x0004003d,0x00000048,0x00000289,0x0000006a,0x0004003d,0x00000048,0x0000028a,0x0000005b, - 0x00050094,0x00000047,0x0000028b,0x00000289,0x0000028a,0x00050041,0x000000f0,0x0000028c, - 0x0000004d,0x00000013,0x0004003d,0x00000047,0x0000028d,0x0000028c,0x00050081,0x00000047, - 0x0000028e,0x0000028d,0x0000028b,0x00050041,0x000000f0,0x0000028f,0x0000004d,0x00000013, - 0x0003003e,0x0000028f,0x0000028e,0x0004003d,0x00000048,0x00000290,0x00000071,0x0004003d, - 0x00000048,0x00000291,0x0000005b,0x00050094,0x00000047,0x00000292,0x00000290,0x00000291, - 0x00050041,0x000000f0,0x00000293,0x0000004e,0x00000013,0x0004003d,0x00000047,0x00000294, - 0x00000293,0x00050081,0x00000047,0x00000295,0x00000294,0x00000292,0x00050041,0x000000f0, - 0x00000296,0x0000004e,0x00000013,0x0003003e,0x00000296,0x00000295,0x0004003d,0x00000048, - 0x00000297,0x00000078,0x0004003d,0x00000048,0x00000298,0x0000005b,0x00050094,0x00000047, - 0x00000299,0x00000297,0x00000298,0x00050041,0x000000f0,0x0000029a,0x0000004f,0x00000013, - 0x0004003d,0x00000047,0x0000029b,0x0000029a,0x00050081,0x00000047,0x0000029c,0x0000029b, - 0x00000299,0x00050041,0x000000f0,0x0000029d,0x0000004f,0x00000013,0x0003003e,0x0000029d, - 0x0000029c,0x0004003d,0x00000048,0x0000029e,0x0000007f,0x0004003d,0x00000048,0x0000029f, - 0x0000005b,0x00050094,0x00000047,0x000002a0,0x0000029e,0x0000029f,0x00050041,0x000000f0, - 0x000002a1,0x00000050,0x00000013,0x0004003d,0x00000047,0x000002a2,0x000002a1,0x00050081, - 0x00000047,0x000002a3,0x000002a2,0x000002a0,0x00050041,0x000000f0,0x000002a4,0x00000050, - 0x00000013,0x0003003e,0x000002a4,0x000002a3,0x0004003d,0x00000048,0x000002a5,0x00000086, - 0x0004003d,0x00000048,0x000002a6,0x0000005b,0x00050094,0x00000047,0x000002a7,0x000002a5, - 0x000002a6,0x00050041,0x000000f0,0x000002a8,0x00000051,0x00000013,0x0004003d,0x00000047, - 0x000002a9,0x000002a8,0x00050081,0x00000047,0x000002aa,0x000002a9,0x000002a7,0x00050041, - 0x000000f0,0x000002ab,0x00000051,0x00000013,0x0003003e,0x000002ab,0x000002aa,0x0004003d, - 0x00000048,0x000002ac,0x0000008d,0x0004003d,0x00000048,0x000002ad,0x0000005b,0x00050094, - 0x00000047,0x000002ae,0x000002ac,0x000002ad,0x00050041,0x000000f0,0x000002af,0x00000052, - 0x00000013,0x0004003d,0x00000047,0x000002b0,0x000002af,0x00050081,0x00000047,0x000002b1, - 0x000002b0,0x000002ae,0x00050041,0x000000f0,0x000002b2,0x00000052,0x00000013,0x0003003e, - 0x000002b2,0x000002b1,0x0004003d,0x00000048,0x000002b3,0x00000094,0x0004003d,0x00000048, - 0x000002b4,0x0000005b,0x00050094,0x00000047,0x000002b5,0x000002b3,0x000002b4,0x00050041, - 0x000000f0,0x000002b6,0x00000053,0x00000013,0x0004003d,0x00000047,0x000002b7,0x000002b6, - 0x00050081,0x00000047,0x000002b8,0x000002b7,0x000002b5,0x00050041,0x000000f0,0x000002b9, - 0x00000053,0x00000013,0x0003003e,0x000002b9,0x000002b8,0x0004003d,0x00000006,0x000002ba, - 0x00000020,0x00050080,0x00000006,0x000002bb,0x000002ba,0x00000124,0x0005008b,0x00000006, - 0x000002bc,0x000002bb,0x000000a4,0x0003003e,0x000000a1,0x000002bc,0x0004003d,0x00000006, - 0x000002bd,0x00000020,0x00050080,0x00000006,0x000002be,0x000002bd,0x00000124,0x00050087, - 0x00000006,0x000002bf,0x000002be,0x000000a4,0x0003003e,0x000000a6,0x000002bf,0x0004003d, - 0x00000006,0x000002c0,0x000000a6,0x00050084,0x00000006,0x000002c1,0x000002c0,0x000000ac, - 0x00050082,0x00000006,0x000002c2,0x000002c1,0x000000ae,0x0003003e,0x000000aa,0x000002c2, - 0x0004003d,0x00000006,0x000002c3,0x000000a1,0x00050084,0x00000006,0x000002c4,0x000002c3, - 0x000000b2,0x00050082,0x00000006,0x000002c5,0x000002c4,0x000000b4,0x0003003e,0x000000b0, - 0x000002c5,0x0004003d,0x00000006,0x000002c6,0x000000b0,0x0004003d,0x00000006,0x000002c7, - 0x00000054,0x00050084,0x00000006,0x000002c8,0x000002c7,0x00000021,0x00050080,0x00000006, - 0x000002c9,0x000002c8,0x00000055,0x0005008b,0x00000006,0x000002ca,0x000002c9,0x000000bb, - 0x00050084,0x00000006,0x000002cb,0x000002ca,0x000000bd,0x00050080,0x00000006,0x000002cc, - 0x000002c6,0x000002cb,0x0003003e,0x000000b6,0x000002cc,0x0004003d,0x00000006,0x000002cd, - 0x000000aa,0x0004003d,0x00000006,0x000002ce,0x00000054,0x00050084,0x00000006,0x000002cf, - 0x000002ce,0x00000021,0x00050080,0x00000006,0x000002d0,0x000002cf,0x00000055,0x0005008b, - 0x00000006,0x000002d2,0x000002d0,0x000002d1,0x00050087,0x00000006,0x000002d3,0x000002d2, - 0x000000bb,0x00050084,0x00000006,0x000002d4,0x000002d3,0x000000c9,0x00050080,0x00000006, - 0x000002d5,0x000002cd,0x000002d4,0x0003003e,0x000000c0,0x000002d5,0x0004003d,0x00000006, - 0x000002d6,0x00000054,0x00050084,0x00000006,0x000002d7,0x000002d6,0x00000021,0x00050080, - 0x00000006,0x000002d8,0x000002d7,0x00000055,0x00050087,0x00000006,0x000002da,0x000002d8, - 0x000002d9,0x0003003e,0x000000cc,0x000002da,0x0004003d,0x00000006,0x000002db,0x000000c0, - 0x000500af,0x00000033,0x000002dc,0x000002db,0x00000055,0x0004003d,0x00000006,0x000002dd, - 0x000000c0,0x000500b1,0x00000033,0x000002de,0x000002dd,0x00000026,0x000500a7,0x00000033, - 0x000002df,0x000002dc,0x000002de,0x0004003d,0x00000006,0x000002e0,0x000000b6,0x000500af, - 0x00000033,0x000002e1,0x000002e0,0x00000055,0x000500a7,0x00000033,0x000002e2,0x000002df, - 0x000002e1,0x0004003d,0x00000006,0x000002e3,0x000000b6,0x000500b1,0x00000033,0x000002e4, - 0x000002e3,0x00000028,0x000500a7,0x00000033,0x000002e5,0x000002e2,0x000002e4,0x000300f7, - 0x000002e7,0x00000000,0x000400fa,0x000002e5,0x000002e6,0x000002e7,0x000200f8,0x000002e6, - 0x0004003d,0x00000006,0x000002e8,0x00000024,0x0004003d,0x00000006,0x000002e9,0x000000cc, - 0x00050084,0x00000006,0x000002eb,0x000002e9,0x000002ea,0x00050080,0x00000006,0x000002ec, - 0x000002e8,0x000002eb,0x0004003d,0x00000006,0x000002ed,0x000000c0,0x00050084,0x00000006, - 0x000002ee,0x000002ed,0x00000028,0x00050080,0x00000006,0x000002ef,0x000002ec,0x000002ee, - 0x0004003d,0x00000006,0x000002f0,0x000000b6,0x00050080,0x00000006,0x000002f1,0x000002ef, - 0x000002f0,0x00060041,0x000000ed,0x000002f2,0x000000e2,0x00000055,0x000002f1,0x0004003d, - 0x00000047,0x000002f3,0x000002f2,0x00050041,0x000000f0,0x000002f4,0x0000005c,0x0000000d, - 0x0003003e,0x000002f4,0x000002f3,0x000200f9,0x000002e7,0x000200f8,0x000002e7,0x0004003d, - 0x00000006,0x000002f5,0x000000b0,0x0004003d,0x00000006,0x000002f6,0x00000054,0x00050084, - 0x00000006,0x000002f7,0x000002f6,0x00000021,0x00050080,0x00000006,0x000002f8,0x000002f7, - 0x0000009b,0x0005008b,0x00000006,0x000002f9,0x000002f8,0x000000bb,0x00050084,0x00000006, - 0x000002fa,0x000002f9,0x000000bd,0x00050080,0x00000006,0x000002fb,0x000002f5,0x000002fa, - 0x0003003e,0x000000b6,0x000002fb,0x0004003d,0x00000006,0x000002fc,0x000000aa,0x0004003d, - 0x00000006,0x000002fd,0x00000054,0x00050084,0x00000006,0x000002fe,0x000002fd,0x00000021, - 0x00050080,0x00000006,0x000002ff,0x000002fe,0x0000009b,0x0005008b,0x00000006,0x00000301, - 0x000002ff,0x00000300,0x00050087,0x00000006,0x00000302,0x00000301,0x000000bb,0x00050084, - 0x00000006,0x00000303,0x00000302,0x000000c9,0x00050080,0x00000006,0x00000304,0x000002fc, - 0x00000303,0x0003003e,0x000000c0,0x00000304,0x0004003d,0x00000006,0x00000305,0x00000054, - 0x00050084,0x00000006,0x00000306,0x00000305,0x00000021,0x00050080,0x00000006,0x00000307, - 0x00000306,0x0000009b,0x00050087,0x00000006,0x00000309,0x00000307,0x00000308,0x0003003e, - 0x000000cc,0x00000309,0x0004003d,0x00000006,0x0000030a,0x000000c0,0x000500af,0x00000033, - 0x0000030b,0x0000030a,0x00000055,0x0004003d,0x00000006,0x0000030c,0x000000c0,0x000500b1, - 0x00000033,0x0000030d,0x0000030c,0x00000026,0x000500a7,0x00000033,0x0000030e,0x0000030b, - 0x0000030d,0x0004003d,0x00000006,0x0000030f,0x000000b6,0x000500af,0x00000033,0x00000310, - 0x0000030f,0x00000055,0x000500a7,0x00000033,0x00000311,0x0000030e,0x00000310,0x0004003d, - 0x00000006,0x00000312,0x000000b6,0x000500b1,0x00000033,0x00000313,0x00000312,0x00000028, - 0x000500a7,0x00000033,0x00000314,0x00000311,0x00000313,0x000300f7,0x00000316,0x00000000, - 0x000400fa,0x00000314,0x00000315,0x00000316,0x000200f8,0x00000315,0x0004003d,0x00000006, - 0x00000317,0x00000024,0x0004003d,0x00000006,0x00000318,0x000000cc,0x00050084,0x00000006, - 0x0000031a,0x00000318,0x00000319,0x00050080,0x00000006,0x0000031b,0x00000317,0x0000031a, - 0x0004003d,0x00000006,0x0000031c,0x000000c0,0x00050084,0x00000006,0x0000031d,0x0000031c, - 0x00000028,0x00050080,0x00000006,0x0000031e,0x0000031b,0x0000031d,0x0004003d,0x00000006, - 0x0000031f,0x000000b6,0x00050080,0x00000006,0x00000320,0x0000031e,0x0000031f,0x00060041, - 0x000000ed,0x00000321,0x000000e2,0x00000055,0x00000320,0x0004003d,0x00000047,0x00000322, - 0x00000321,0x00050041,0x000000f0,0x00000323,0x0000005c,0x00000013,0x0003003e,0x00000323, - 0x00000322,0x000200f9,0x00000316,0x000200f8,0x00000316,0x0004003d,0x00000006,0x00000324, - 0x000000b0,0x0004003d,0x00000006,0x00000325,0x00000054,0x00050084,0x00000006,0x00000326, - 0x00000325,0x00000021,0x00050080,0x00000006,0x00000327,0x00000326,0x00000124,0x0005008b, - 0x00000006,0x00000328,0x00000327,0x000000bb,0x00050084,0x00000006,0x00000329,0x00000328, - 0x000000bd,0x00050080,0x00000006,0x0000032a,0x00000324,0x00000329,0x0003003e,0x000000b6, - 0x0000032a,0x0004003d,0x00000006,0x0000032b,0x000000aa,0x0004003d,0x00000006,0x0000032c, - 0x00000054,0x00050084,0x00000006,0x0000032d,0x0000032c,0x00000021,0x00050080,0x00000006, - 0x0000032e,0x0000032d,0x00000124,0x0005008b,0x00000006,0x00000330,0x0000032e,0x0000032f, - 0x00050087,0x00000006,0x00000331,0x00000330,0x000000bb,0x00050084,0x00000006,0x00000332, - 0x00000331,0x000000c9,0x00050080,0x00000006,0x00000333,0x0000032b,0x00000332,0x0003003e, - 0x000000c0,0x00000333,0x0004003d,0x00000006,0x00000334,0x00000054,0x00050084,0x00000006, - 0x00000335,0x00000334,0x00000021,0x00050080,0x00000006,0x00000336,0x00000335,0x00000124, - 0x00050087,0x00000006,0x00000338,0x00000336,0x00000337,0x0003003e,0x000000cc,0x00000338, - 0x0004003d,0x00000006,0x00000339,0x000000c0,0x000500af,0x00000033,0x0000033a,0x00000339, - 0x00000055,0x0004003d,0x00000006,0x0000033b,0x000000c0,0x000500b1,0x00000033,0x0000033c, - 0x0000033b,0x00000026,0x000500a7,0x00000033,0x0000033d,0x0000033a,0x0000033c,0x0004003d, - 0x00000006,0x0000033e,0x000000b6,0x000500af,0x00000033,0x0000033f,0x0000033e,0x00000055, - 0x000500a7,0x00000033,0x00000340,0x0000033d,0x0000033f,0x0004003d,0x00000006,0x00000341, - 0x000000b6,0x000500b1,0x00000033,0x00000342,0x00000341,0x00000028,0x000500a7,0x00000033, - 0x00000343,0x00000340,0x00000342,0x000300f7,0x00000345,0x00000000,0x000400fa,0x00000343, - 0x00000344,0x00000345,0x000200f8,0x00000344,0x0004003d,0x00000006,0x00000346,0x00000024, - 0x0004003d,0x00000006,0x00000347,0x000000cc,0x00050084,0x00000006,0x00000349,0x00000347, - 0x00000348,0x00050080,0x00000006,0x0000034a,0x00000346,0x00000349,0x0004003d,0x00000006, - 0x0000034b,0x000000c0,0x00050084,0x00000006,0x0000034c,0x0000034b,0x00000028,0x00050080, - 0x00000006,0x0000034d,0x0000034a,0x0000034c,0x0004003d,0x00000006,0x0000034e,0x000000b6, - 0x00050080,0x00000006,0x0000034f,0x0000034d,0x0000034e,0x00060041,0x000000ed,0x00000350, - 0x000000e2,0x00000055,0x0000034f,0x0004003d,0x00000047,0x00000351,0x00000350,0x00050041, - 0x000000f0,0x00000352,0x0000005c,0x00000018,0x0003003e,0x00000352,0x00000351,0x000200f9, - 0x00000345,0x000200f8,0x00000345,0x0004003d,0x00000006,0x00000353,0x000000b0,0x0004003d, - 0x00000006,0x00000354,0x00000054,0x00050084,0x00000006,0x00000355,0x00000354,0x00000021, - 0x00050080,0x00000006,0x00000356,0x00000355,0x00000154,0x0005008b,0x00000006,0x00000357, - 0x00000356,0x000000bb,0x00050084,0x00000006,0x00000358,0x00000357,0x000000bd,0x00050080, - 0x00000006,0x00000359,0x00000353,0x00000358,0x0003003e,0x000000b6,0x00000359,0x0004003d, - 0x00000006,0x0000035a,0x000000aa,0x0004003d,0x00000006,0x0000035b,0x00000054,0x00050084, - 0x00000006,0x0000035c,0x0000035b,0x00000021,0x00050080,0x00000006,0x0000035d,0x0000035c, - 0x00000154,0x0005008b,0x00000006,0x0000035f,0x0000035d,0x0000035e,0x00050087,0x00000006, - 0x00000360,0x0000035f,0x000000bb,0x00050084,0x00000006,0x00000361,0x00000360,0x000000c9, - 0x00050080,0x00000006,0x00000362,0x0000035a,0x00000361,0x0003003e,0x000000c0,0x00000362, - 0x0004003d,0x00000006,0x00000363,0x00000054,0x00050084,0x00000006,0x00000364,0x00000363, - 0x00000021,0x00050080,0x00000006,0x00000365,0x00000364,0x00000154,0x00050087,0x00000006, - 0x00000367,0x00000365,0x00000366,0x0003003e,0x000000cc,0x00000367,0x0004003d,0x00000006, - 0x00000368,0x000000c0,0x000500af,0x00000033,0x00000369,0x00000368,0x00000055,0x0004003d, - 0x00000006,0x0000036a,0x000000c0,0x000500b1,0x00000033,0x0000036b,0x0000036a,0x00000026, - 0x000500a7,0x00000033,0x0000036c,0x00000369,0x0000036b,0x0004003d,0x00000006,0x0000036d, - 0x000000b6,0x000500af,0x00000033,0x0000036e,0x0000036d,0x00000055,0x000500a7,0x00000033, - 0x0000036f,0x0000036c,0x0000036e,0x0004003d,0x00000006,0x00000370,0x000000b6,0x000500b1, - 0x00000033,0x00000371,0x00000370,0x00000028,0x000500a7,0x00000033,0x00000372,0x0000036f, - 0x00000371,0x000300f7,0x00000374,0x00000000,0x000400fa,0x00000372,0x00000373,0x00000374, - 0x000200f8,0x00000373,0x0004003d,0x00000006,0x00000375,0x00000024,0x0004003d,0x00000006, - 0x00000376,0x000000cc,0x00050084,0x00000006,0x00000378,0x00000376,0x00000377,0x00050080, - 0x00000006,0x00000379,0x00000375,0x00000378,0x0004003d,0x00000006,0x0000037a,0x000000c0, - 0x00050084,0x00000006,0x0000037b,0x0000037a,0x00000028,0x00050080,0x00000006,0x0000037c, - 0x00000379,0x0000037b,0x0004003d,0x00000006,0x0000037d,0x000000b6,0x00050080,0x00000006, - 0x0000037e,0x0000037c,0x0000037d,0x00060041,0x000000ed,0x0000037f,0x000000e2,0x00000055, - 0x0000037e,0x0004003d,0x00000047,0x00000380,0x0000037f,0x00050041,0x000000f0,0x00000381, - 0x0000005c,0x00000180,0x0003003e,0x00000381,0x00000380,0x000200f9,0x00000374,0x000200f8, - 0x00000374,0x0004003d,0x00000048,0x00000382,0x0000005e,0x0004003d,0x00000048,0x00000383, - 0x0000005c,0x00050094,0x00000047,0x00000384,0x00000382,0x00000383,0x00050041,0x000000f0, - 0x00000385,0x0000004a,0x00000018,0x0004003d,0x00000047,0x00000386,0x00000385,0x00050081, - 0x00000047,0x00000387,0x00000386,0x00000384,0x00050041,0x000000f0,0x00000388,0x0000004a, - 0x00000018,0x0003003e,0x00000388,0x00000387,0x0004003d,0x00000048,0x00000389,0x0000006a, - 0x0004003d,0x00000048,0x0000038a,0x0000005c,0x00050094,0x00000047,0x0000038b,0x00000389, - 0x0000038a,0x00050041,0x000000f0,0x0000038c,0x0000004d,0x00000018,0x0004003d,0x00000047, - 0x0000038d,0x0000038c,0x00050081,0x00000047,0x0000038e,0x0000038d,0x0000038b,0x00050041, - 0x000000f0,0x0000038f,0x0000004d,0x00000018,0x0003003e,0x0000038f,0x0000038e,0x0004003d, - 0x00000048,0x00000390,0x00000071,0x0004003d,0x00000048,0x00000391,0x0000005c,0x00050094, - 0x00000047,0x00000392,0x00000390,0x00000391,0x00050041,0x000000f0,0x00000393,0x0000004e, - 0x00000018,0x0004003d,0x00000047,0x00000394,0x00000393,0x00050081,0x00000047,0x00000395, - 0x00000394,0x00000392,0x00050041,0x000000f0,0x00000396,0x0000004e,0x00000018,0x0003003e, - 0x00000396,0x00000395,0x0004003d,0x00000048,0x00000397,0x00000078,0x0004003d,0x00000048, - 0x00000398,0x0000005c,0x00050094,0x00000047,0x00000399,0x00000397,0x00000398,0x00050041, - 0x000000f0,0x0000039a,0x0000004f,0x00000018,0x0004003d,0x00000047,0x0000039b,0x0000039a, - 0x00050081,0x00000047,0x0000039c,0x0000039b,0x00000399,0x00050041,0x000000f0,0x0000039d, - 0x0000004f,0x00000018,0x0003003e,0x0000039d,0x0000039c,0x0004003d,0x00000048,0x0000039e, - 0x0000007f,0x0004003d,0x00000048,0x0000039f,0x0000005c,0x00050094,0x00000047,0x000003a0, - 0x0000039e,0x0000039f,0x00050041,0x000000f0,0x000003a1,0x00000050,0x00000018,0x0004003d, - 0x00000047,0x000003a2,0x000003a1,0x00050081,0x00000047,0x000003a3,0x000003a2,0x000003a0, - 0x00050041,0x000000f0,0x000003a4,0x00000050,0x00000018,0x0003003e,0x000003a4,0x000003a3, - 0x0004003d,0x00000048,0x000003a5,0x00000086,0x0004003d,0x00000048,0x000003a6,0x0000005c, - 0x00050094,0x00000047,0x000003a7,0x000003a5,0x000003a6,0x00050041,0x000000f0,0x000003a8, - 0x00000051,0x00000018,0x0004003d,0x00000047,0x000003a9,0x000003a8,0x00050081,0x00000047, - 0x000003aa,0x000003a9,0x000003a7,0x00050041,0x000000f0,0x000003ab,0x00000051,0x00000018, - 0x0003003e,0x000003ab,0x000003aa,0x0004003d,0x00000048,0x000003ac,0x0000008d,0x0004003d, - 0x00000048,0x000003ad,0x0000005c,0x00050094,0x00000047,0x000003ae,0x000003ac,0x000003ad, - 0x00050041,0x000000f0,0x000003af,0x00000052,0x00000018,0x0004003d,0x00000047,0x000003b0, - 0x000003af,0x00050081,0x00000047,0x000003b1,0x000003b0,0x000003ae,0x00050041,0x000000f0, - 0x000003b2,0x00000052,0x00000018,0x0003003e,0x000003b2,0x000003b1,0x0004003d,0x00000048, - 0x000003b3,0x00000094,0x0004003d,0x00000048,0x000003b4,0x0000005c,0x00050094,0x00000047, - 0x000003b5,0x000003b3,0x000003b4,0x00050041,0x000000f0,0x000003b6,0x00000053,0x00000018, - 0x0004003d,0x00000047,0x000003b7,0x000003b6,0x00050081,0x00000047,0x000003b8,0x000003b7, - 0x000003b5,0x00050041,0x000000f0,0x000003b9,0x00000053,0x00000018,0x0003003e,0x000003b9, - 0x000003b8,0x0004003d,0x00000006,0x000003ba,0x00000020,0x00050080,0x00000006,0x000003bb, - 0x000003ba,0x00000154,0x0005008b,0x00000006,0x000003bc,0x000003bb,0x000000a4,0x0003003e, - 0x000000a1,0x000003bc,0x0004003d,0x00000006,0x000003bd,0x00000020,0x00050080,0x00000006, - 0x000003be,0x000003bd,0x00000154,0x00050087,0x00000006,0x000003bf,0x000003be,0x000000a4, - 0x0003003e,0x000000a6,0x000003bf,0x0004003d,0x00000006,0x000003c0,0x000000a6,0x00050084, - 0x00000006,0x000003c1,0x000003c0,0x000000ac,0x00050082,0x00000006,0x000003c2,0x000003c1, - 0x000000ae,0x0003003e,0x000000aa,0x000003c2,0x0004003d,0x00000006,0x000003c3,0x000000a1, - 0x00050084,0x00000006,0x000003c4,0x000003c3,0x000000b2,0x00050082,0x00000006,0x000003c5, - 0x000003c4,0x000000b4,0x0003003e,0x000000b0,0x000003c5,0x0004003d,0x00000006,0x000003c6, - 0x000000b0,0x0004003d,0x00000006,0x000003c7,0x00000054,0x00050084,0x00000006,0x000003c8, - 0x000003c7,0x00000021,0x00050080,0x00000006,0x000003c9,0x000003c8,0x00000055,0x0005008b, - 0x00000006,0x000003ca,0x000003c9,0x000000bb,0x00050084,0x00000006,0x000003cb,0x000003ca, - 0x000000bd,0x00050080,0x00000006,0x000003cc,0x000003c6,0x000003cb,0x0003003e,0x000000b6, - 0x000003cc,0x0004003d,0x00000006,0x000003cd,0x000000aa,0x0004003d,0x00000006,0x000003ce, - 0x00000054,0x00050084,0x00000006,0x000003cf,0x000003ce,0x00000021,0x00050080,0x00000006, - 0x000003d0,0x000003cf,0x00000055,0x0005008b,0x00000006,0x000003d2,0x000003d0,0x000003d1, - 0x00050087,0x00000006,0x000003d3,0x000003d2,0x000000bb,0x00050084,0x00000006,0x000003d4, - 0x000003d3,0x000000c9,0x00050080,0x00000006,0x000003d5,0x000003cd,0x000003d4,0x0003003e, - 0x000000c0,0x000003d5,0x0004003d,0x00000006,0x000003d6,0x00000054,0x00050084,0x00000006, - 0x000003d7,0x000003d6,0x00000021,0x00050080,0x00000006,0x000003d8,0x000003d7,0x00000055, - 0x00050087,0x00000006,0x000003da,0x000003d8,0x000003d9,0x0003003e,0x000000cc,0x000003da, - 0x0004003d,0x00000006,0x000003db,0x000000c0,0x000500af,0x00000033,0x000003dc,0x000003db, - 0x00000055,0x0004003d,0x00000006,0x000003dd,0x000000c0,0x000500b1,0x00000033,0x000003de, - 0x000003dd,0x00000026,0x000500a7,0x00000033,0x000003df,0x000003dc,0x000003de,0x0004003d, - 0x00000006,0x000003e0,0x000000b6,0x000500af,0x00000033,0x000003e1,0x000003e0,0x00000055, - 0x000500a7,0x00000033,0x000003e2,0x000003df,0x000003e1,0x0004003d,0x00000006,0x000003e3, - 0x000000b6,0x000500b1,0x00000033,0x000003e4,0x000003e3,0x00000028,0x000500a7,0x00000033, - 0x000003e5,0x000003e2,0x000003e4,0x000300f7,0x000003e7,0x00000000,0x000400fa,0x000003e5, - 0x000003e6,0x000003e7,0x000200f8,0x000003e6,0x0004003d,0x00000006,0x000003e8,0x00000024, - 0x0004003d,0x00000006,0x000003e9,0x000000cc,0x00050084,0x00000006,0x000003eb,0x000003e9, - 0x000003ea,0x00050080,0x00000006,0x000003ec,0x000003e8,0x000003eb,0x0004003d,0x00000006, - 0x000003ed,0x000000c0,0x00050084,0x00000006,0x000003ee,0x000003ed,0x00000028,0x00050080, - 0x00000006,0x000003ef,0x000003ec,0x000003ee,0x0004003d,0x00000006,0x000003f0,0x000000b6, - 0x00050080,0x00000006,0x000003f1,0x000003ef,0x000003f0,0x00060041,0x000000ed,0x000003f2, - 0x000000e2,0x00000055,0x000003f1,0x0004003d,0x00000047,0x000003f3,0x000003f2,0x00050041, - 0x000000f0,0x000003f4,0x0000005d,0x0000000d,0x0003003e,0x000003f4,0x000003f3,0x000200f9, - 0x000003e7,0x000200f8,0x000003e7,0x0004003d,0x00000006,0x000003f5,0x000000b0,0x0004003d, - 0x00000006,0x000003f6,0x00000054,0x00050084,0x00000006,0x000003f7,0x000003f6,0x00000021, - 0x00050080,0x00000006,0x000003f8,0x000003f7,0x0000009b,0x0005008b,0x00000006,0x000003f9, - 0x000003f8,0x000000bb,0x00050084,0x00000006,0x000003fa,0x000003f9,0x000000bd,0x00050080, - 0x00000006,0x000003fb,0x000003f5,0x000003fa,0x0003003e,0x000000b6,0x000003fb,0x0004003d, - 0x00000006,0x000003fc,0x000000aa,0x0004003d,0x00000006,0x000003fd,0x00000054,0x00050084, - 0x00000006,0x000003fe,0x000003fd,0x00000021,0x00050080,0x00000006,0x000003ff,0x000003fe, - 0x0000009b,0x0005008b,0x00000006,0x00000401,0x000003ff,0x00000400,0x00050087,0x00000006, - 0x00000402,0x00000401,0x000000bb,0x00050084,0x00000006,0x00000403,0x00000402,0x000000c9, - 0x00050080,0x00000006,0x00000404,0x000003fc,0x00000403,0x0003003e,0x000000c0,0x00000404, - 0x0004003d,0x00000006,0x00000405,0x00000054,0x00050084,0x00000006,0x00000406,0x00000405, - 0x00000021,0x00050080,0x00000006,0x00000407,0x00000406,0x0000009b,0x00050087,0x00000006, - 0x00000409,0x00000407,0x00000408,0x0003003e,0x000000cc,0x00000409,0x0004003d,0x00000006, - 0x0000040a,0x000000c0,0x000500af,0x00000033,0x0000040b,0x0000040a,0x00000055,0x0004003d, - 0x00000006,0x0000040c,0x000000c0,0x000500b1,0x00000033,0x0000040d,0x0000040c,0x00000026, - 0x000500a7,0x00000033,0x0000040e,0x0000040b,0x0000040d,0x0004003d,0x00000006,0x0000040f, - 0x000000b6,0x000500af,0x00000033,0x00000410,0x0000040f,0x00000055,0x000500a7,0x00000033, - 0x00000411,0x0000040e,0x00000410,0x0004003d,0x00000006,0x00000412,0x000000b6,0x000500b1, - 0x00000033,0x00000413,0x00000412,0x00000028,0x000500a7,0x00000033,0x00000414,0x00000411, - 0x00000413,0x000300f7,0x00000416,0x00000000,0x000400fa,0x00000414,0x00000415,0x00000416, - 0x000200f8,0x00000415,0x0004003d,0x00000006,0x00000417,0x00000024,0x0004003d,0x00000006, - 0x00000418,0x000000cc,0x00050084,0x00000006,0x0000041a,0x00000418,0x00000419,0x00050080, - 0x00000006,0x0000041b,0x00000417,0x0000041a,0x0004003d,0x00000006,0x0000041c,0x000000c0, - 0x00050084,0x00000006,0x0000041d,0x0000041c,0x00000028,0x00050080,0x00000006,0x0000041e, - 0x0000041b,0x0000041d,0x0004003d,0x00000006,0x0000041f,0x000000b6,0x00050080,0x00000006, - 0x00000420,0x0000041e,0x0000041f,0x00060041,0x000000ed,0x00000421,0x000000e2,0x00000055, - 0x00000420,0x0004003d,0x00000047,0x00000422,0x00000421,0x00050041,0x000000f0,0x00000423, - 0x0000005d,0x00000013,0x0003003e,0x00000423,0x00000422,0x000200f9,0x00000416,0x000200f8, - 0x00000416,0x0004003d,0x00000006,0x00000424,0x000000b0,0x0004003d,0x00000006,0x00000425, - 0x00000054,0x00050084,0x00000006,0x00000426,0x00000425,0x00000021,0x00050080,0x00000006, - 0x00000427,0x00000426,0x00000124,0x0005008b,0x00000006,0x00000428,0x00000427,0x000000bb, - 0x00050084,0x00000006,0x00000429,0x00000428,0x000000bd,0x00050080,0x00000006,0x0000042a, - 0x00000424,0x00000429,0x0003003e,0x000000b6,0x0000042a,0x0004003d,0x00000006,0x0000042b, - 0x000000aa,0x0004003d,0x00000006,0x0000042c,0x00000054,0x00050084,0x00000006,0x0000042d, - 0x0000042c,0x00000021,0x00050080,0x00000006,0x0000042e,0x0000042d,0x00000124,0x0005008b, - 0x00000006,0x00000430,0x0000042e,0x0000042f,0x00050087,0x00000006,0x00000431,0x00000430, - 0x000000bb,0x00050084,0x00000006,0x00000432,0x00000431,0x000000c9,0x00050080,0x00000006, - 0x00000433,0x0000042b,0x00000432,0x0003003e,0x000000c0,0x00000433,0x0004003d,0x00000006, - 0x00000434,0x00000054,0x00050084,0x00000006,0x00000435,0x00000434,0x00000021,0x00050080, - 0x00000006,0x00000436,0x00000435,0x00000124,0x00050087,0x00000006,0x00000438,0x00000436, - 0x00000437,0x0003003e,0x000000cc,0x00000438,0x0004003d,0x00000006,0x00000439,0x000000c0, - 0x000500af,0x00000033,0x0000043a,0x00000439,0x00000055,0x0004003d,0x00000006,0x0000043b, - 0x000000c0,0x000500b1,0x00000033,0x0000043c,0x0000043b,0x00000026,0x000500a7,0x00000033, - 0x0000043d,0x0000043a,0x0000043c,0x0004003d,0x00000006,0x0000043e,0x000000b6,0x000500af, - 0x00000033,0x0000043f,0x0000043e,0x00000055,0x000500a7,0x00000033,0x00000440,0x0000043d, - 0x0000043f,0x0004003d,0x00000006,0x00000441,0x000000b6,0x000500b1,0x00000033,0x00000442, - 0x00000441,0x00000028,0x000500a7,0x00000033,0x00000443,0x00000440,0x00000442,0x000300f7, - 0x00000445,0x00000000,0x000400fa,0x00000443,0x00000444,0x00000445,0x000200f8,0x00000444, - 0x0004003d,0x00000006,0x00000446,0x00000024,0x0004003d,0x00000006,0x00000447,0x000000cc, - 0x00050084,0x00000006,0x00000449,0x00000447,0x00000448,0x00050080,0x00000006,0x0000044a, - 0x00000446,0x00000449,0x0004003d,0x00000006,0x0000044b,0x000000c0,0x00050084,0x00000006, - 0x0000044c,0x0000044b,0x00000028,0x00050080,0x00000006,0x0000044d,0x0000044a,0x0000044c, - 0x0004003d,0x00000006,0x0000044e,0x000000b6,0x00050080,0x00000006,0x0000044f,0x0000044d, - 0x0000044e,0x00060041,0x000000ed,0x00000450,0x000000e2,0x00000055,0x0000044f,0x0004003d, - 0x00000047,0x00000451,0x00000450,0x00050041,0x000000f0,0x00000452,0x0000005d,0x00000018, - 0x0003003e,0x00000452,0x00000451,0x000200f9,0x00000445,0x000200f8,0x00000445,0x0004003d, - 0x00000006,0x00000453,0x000000b0,0x0004003d,0x00000006,0x00000454,0x00000054,0x00050084, - 0x00000006,0x00000455,0x00000454,0x00000021,0x00050080,0x00000006,0x00000456,0x00000455, - 0x00000154,0x0005008b,0x00000006,0x00000457,0x00000456,0x000000bb,0x00050084,0x00000006, - 0x00000458,0x00000457,0x000000bd,0x00050080,0x00000006,0x00000459,0x00000453,0x00000458, - 0x0003003e,0x000000b6,0x00000459,0x0004003d,0x00000006,0x0000045a,0x000000aa,0x0004003d, - 0x00000006,0x0000045b,0x00000054,0x00050084,0x00000006,0x0000045c,0x0000045b,0x00000021, - 0x00050080,0x00000006,0x0000045d,0x0000045c,0x00000154,0x0005008b,0x00000006,0x0000045f, - 0x0000045d,0x0000045e,0x00050087,0x00000006,0x00000460,0x0000045f,0x000000bb,0x00050084, - 0x00000006,0x00000461,0x00000460,0x000000c9,0x00050080,0x00000006,0x00000462,0x0000045a, - 0x00000461,0x0003003e,0x000000c0,0x00000462,0x0004003d,0x00000006,0x00000463,0x00000054, - 0x00050084,0x00000006,0x00000464,0x00000463,0x00000021,0x00050080,0x00000006,0x00000465, - 0x00000464,0x00000154,0x00050087,0x00000006,0x00000467,0x00000465,0x00000466,0x0003003e, - 0x000000cc,0x00000467,0x0004003d,0x00000006,0x00000468,0x000000c0,0x000500af,0x00000033, - 0x00000469,0x00000468,0x00000055,0x0004003d,0x00000006,0x0000046a,0x000000c0,0x000500b1, - 0x00000033,0x0000046b,0x0000046a,0x00000026,0x000500a7,0x00000033,0x0000046c,0x00000469, - 0x0000046b,0x0004003d,0x00000006,0x0000046d,0x000000b6,0x000500af,0x00000033,0x0000046e, - 0x0000046d,0x00000055,0x000500a7,0x00000033,0x0000046f,0x0000046c,0x0000046e,0x0004003d, - 0x00000006,0x00000470,0x000000b6,0x000500b1,0x00000033,0x00000471,0x00000470,0x00000028, - 0x000500a7,0x00000033,0x00000472,0x0000046f,0x00000471,0x000300f7,0x00000474,0x00000000, - 0x000400fa,0x00000472,0x00000473,0x00000474,0x000200f8,0x00000473,0x0004003d,0x00000006, - 0x00000475,0x00000024,0x0004003d,0x00000006,0x00000476,0x000000cc,0x00050084,0x00000006, - 0x00000478,0x00000476,0x00000477,0x00050080,0x00000006,0x00000479,0x00000475,0x00000478, - 0x0004003d,0x00000006,0x0000047a,0x000000c0,0x00050084,0x00000006,0x0000047b,0x0000047a, - 0x00000028,0x00050080,0x00000006,0x0000047c,0x00000479,0x0000047b,0x0004003d,0x00000006, - 0x0000047d,0x000000b6,0x00050080,0x00000006,0x0000047e,0x0000047c,0x0000047d,0x00060041, - 0x000000ed,0x0000047f,0x000000e2,0x00000055,0x0000047e,0x0004003d,0x00000047,0x00000480, - 0x0000047f,0x00050041,0x000000f0,0x00000481,0x0000005d,0x00000180,0x0003003e,0x00000481, - 0x00000480,0x000200f9,0x00000474,0x000200f8,0x00000474,0x0004003d,0x00000048,0x00000482, - 0x0000005e,0x0004003d,0x00000048,0x00000483,0x0000005d,0x00050094,0x00000047,0x00000484, - 0x00000482,0x00000483,0x00050041,0x000000f0,0x00000485,0x0000004a,0x00000180,0x0004003d, - 0x00000047,0x00000486,0x00000485,0x00050081,0x00000047,0x00000487,0x00000486,0x00000484, - 0x00050041,0x000000f0,0x00000488,0x0000004a,0x00000180,0x0003003e,0x00000488,0x00000487, - 0x0004003d,0x00000048,0x00000489,0x0000006a,0x0004003d,0x00000048,0x0000048a,0x0000005d, - 0x00050094,0x00000047,0x0000048b,0x00000489,0x0000048a,0x00050041,0x000000f0,0x0000048c, - 0x0000004d,0x00000180,0x0004003d,0x00000047,0x0000048d,0x0000048c,0x00050081,0x00000047, - 0x0000048e,0x0000048d,0x0000048b,0x00050041,0x000000f0,0x0000048f,0x0000004d,0x00000180, - 0x0003003e,0x0000048f,0x0000048e,0x0004003d,0x00000048,0x00000490,0x00000071,0x0004003d, - 0x00000048,0x00000491,0x0000005d,0x00050094,0x00000047,0x00000492,0x00000490,0x00000491, - 0x00050041,0x000000f0,0x00000493,0x0000004e,0x00000180,0x0004003d,0x00000047,0x00000494, - 0x00000493,0x00050081,0x00000047,0x00000495,0x00000494,0x00000492,0x00050041,0x000000f0, - 0x00000496,0x0000004e,0x00000180,0x0003003e,0x00000496,0x00000495,0x0004003d,0x00000048, - 0x00000497,0x00000078,0x0004003d,0x00000048,0x00000498,0x0000005d,0x00050094,0x00000047, - 0x00000499,0x00000497,0x00000498,0x00050041,0x000000f0,0x0000049a,0x0000004f,0x00000180, - 0x0004003d,0x00000047,0x0000049b,0x0000049a,0x00050081,0x00000047,0x0000049c,0x0000049b, - 0x00000499,0x00050041,0x000000f0,0x0000049d,0x0000004f,0x00000180,0x0003003e,0x0000049d, - 0x0000049c,0x0004003d,0x00000048,0x0000049e,0x0000007f,0x0004003d,0x00000048,0x0000049f, - 0x0000005d,0x00050094,0x00000047,0x000004a0,0x0000049e,0x0000049f,0x00050041,0x000000f0, - 0x000004a1,0x00000050,0x00000180,0x0004003d,0x00000047,0x000004a2,0x000004a1,0x00050081, - 0x00000047,0x000004a3,0x000004a2,0x000004a0,0x00050041,0x000000f0,0x000004a4,0x00000050, - 0x00000180,0x0003003e,0x000004a4,0x000004a3,0x0004003d,0x00000048,0x000004a5,0x00000086, - 0x0004003d,0x00000048,0x000004a6,0x0000005d,0x00050094,0x00000047,0x000004a7,0x000004a5, - 0x000004a6,0x00050041,0x000000f0,0x000004a8,0x00000051,0x00000180,0x0004003d,0x00000047, - 0x000004a9,0x000004a8,0x00050081,0x00000047,0x000004aa,0x000004a9,0x000004a7,0x00050041, - 0x000000f0,0x000004ab,0x00000051,0x00000180,0x0003003e,0x000004ab,0x000004aa,0x0004003d, - 0x00000048,0x000004ac,0x0000008d,0x0004003d,0x00000048,0x000004ad,0x0000005d,0x00050094, - 0x00000047,0x000004ae,0x000004ac,0x000004ad,0x00050041,0x000000f0,0x000004af,0x00000052, - 0x00000180,0x0004003d,0x00000047,0x000004b0,0x000004af,0x00050081,0x00000047,0x000004b1, - 0x000004b0,0x000004ae,0x00050041,0x000000f0,0x000004b2,0x00000052,0x00000180,0x0003003e, - 0x000004b2,0x000004b1,0x0004003d,0x00000048,0x000004b3,0x00000094,0x0004003d,0x00000048, - 0x000004b4,0x0000005d,0x00050094,0x00000047,0x000004b5,0x000004b3,0x000004b4,0x00050041, - 0x000000f0,0x000004b6,0x00000053,0x00000180,0x0004003d,0x00000047,0x000004b7,0x000004b6, - 0x00050081,0x00000047,0x000004b8,0x000004b7,0x000004b5,0x00050041,0x000000f0,0x000004b9, - 0x00000053,0x00000180,0x0003003e,0x000004b9,0x000004b8,0x0004003d,0x00000006,0x000004ba, - 0x00000054,0x00050080,0x00000006,0x000004bb,0x000004ba,0x0000009b,0x0003003e,0x00000054, - 0x000004bb,0x000200f9,0x00000059,0x000200f8,0x00000059,0x0004003d,0x00000006,0x000004bc, - 0x00000054,0x0004003d,0x00000006,0x000004bd,0x0000003e,0x000500b1,0x00000033,0x000004be, - 0x000004bc,0x000004bd,0x000400fa,0x000004be,0x00000056,0x00000058,0x000200f8,0x00000058, - 0x0004003d,0x00000006,0x000004c3,0x0000002c,0x0004003d,0x00000006,0x000004c4,0x0000001c, - 0x00050080,0x00000006,0x000004c5,0x000004c4,0x00000055,0x00050084,0x00000006,0x000004c6, - 0x000004c5,0x0000002e,0x00050087,0x00000006,0x000004c7,0x000004c6,0x00000021,0x00050080, - 0x00000006,0x000004c8,0x000004c3,0x000004c7,0x0004003d,0x00000006,0x000004c9,0x00000012, - 0x00050080,0x00000006,0x000004ca,0x000004c8,0x000004c9,0x0004003d,0x00000048,0x000004cb, - 0x0000004a,0x00060041,0x00000064,0x000004cc,0x000004c2,0x00000055,0x000004ca,0x0003003e, - 0x000004cc,0x000004cb,0x0004003d,0x00000006,0x000004cd,0x0000002c,0x0004003d,0x00000006, - 0x000004ce,0x0000001c,0x00050080,0x00000006,0x000004cf,0x000004ce,0x0000009b,0x00050084, - 0x00000006,0x000004d0,0x000004cf,0x0000002e,0x00050087,0x00000006,0x000004d1,0x000004d0, - 0x00000021,0x00050080,0x00000006,0x000004d2,0x000004cd,0x000004d1,0x0004003d,0x00000006, - 0x000004d3,0x00000012,0x00050080,0x00000006,0x000004d4,0x000004d2,0x000004d3,0x0004003d, - 0x00000048,0x000004d5,0x0000004d,0x00060041,0x00000064,0x000004d6,0x000004c2,0x00000055, - 0x000004d4,0x0003003e,0x000004d6,0x000004d5,0x0004003d,0x00000006,0x000004d7,0x0000002c, - 0x0004003d,0x00000006,0x000004d8,0x0000001c,0x00050080,0x00000006,0x000004d9,0x000004d8, - 0x00000124,0x00050084,0x00000006,0x000004da,0x000004d9,0x0000002e,0x00050087,0x00000006, - 0x000004db,0x000004da,0x00000021,0x00050080,0x00000006,0x000004dc,0x000004d7,0x000004db, - 0x0004003d,0x00000006,0x000004dd,0x00000012,0x00050080,0x00000006,0x000004de,0x000004dc, - 0x000004dd,0x0004003d,0x00000048,0x000004df,0x0000004e,0x00060041,0x00000064,0x000004e0, - 0x000004c2,0x00000055,0x000004de,0x0003003e,0x000004e0,0x000004df,0x0004003d,0x00000006, - 0x000004e1,0x0000002c,0x0004003d,0x00000006,0x000004e2,0x0000001c,0x00050080,0x00000006, - 0x000004e3,0x000004e2,0x00000154,0x00050084,0x00000006,0x000004e4,0x000004e3,0x0000002e, - 0x00050087,0x00000006,0x000004e5,0x000004e4,0x00000021,0x00050080,0x00000006,0x000004e6, - 0x000004e1,0x000004e5,0x0004003d,0x00000006,0x000004e7,0x00000012,0x00050080,0x00000006, - 0x000004e8,0x000004e6,0x000004e7,0x0004003d,0x00000048,0x000004e9,0x0000004f,0x00060041, - 0x00000064,0x000004ea,0x000004c2,0x00000055,0x000004e8,0x0003003e,0x000004ea,0x000004e9, - 0x0004003d,0x00000006,0x000004eb,0x0000002c,0x0004003d,0x00000006,0x000004ec,0x0000001c, - 0x00050080,0x00000006,0x000004ed,0x000004ec,0x00000021,0x00050084,0x00000006,0x000004ee, - 0x000004ed,0x0000002e,0x00050087,0x00000006,0x000004ef,0x000004ee,0x00000021,0x00050080, - 0x00000006,0x000004f0,0x000004eb,0x000004ef,0x0004003d,0x00000006,0x000004f1,0x00000012, - 0x00050080,0x00000006,0x000004f2,0x000004f0,0x000004f1,0x0004003d,0x00000048,0x000004f3, - 0x00000050,0x00060041,0x00000064,0x000004f4,0x000004c2,0x00000055,0x000004f2,0x0003003e, - 0x000004f4,0x000004f3,0x0004003d,0x00000006,0x000004f5,0x0000002c,0x0004003d,0x00000006, - 0x000004f6,0x0000001c,0x00050080,0x00000006,0x000004f8,0x000004f6,0x000004f7,0x00050084, - 0x00000006,0x000004f9,0x000004f8,0x0000002e,0x00050087,0x00000006,0x000004fa,0x000004f9, - 0x00000021,0x00050080,0x00000006,0x000004fb,0x000004f5,0x000004fa,0x0004003d,0x00000006, - 0x000004fc,0x00000012,0x00050080,0x00000006,0x000004fd,0x000004fb,0x000004fc,0x0004003d, - 0x00000048,0x000004fe,0x00000051,0x00060041,0x00000064,0x000004ff,0x000004c2,0x00000055, - 0x000004fd,0x0003003e,0x000004ff,0x000004fe,0x0004003d,0x00000006,0x00000500,0x0000002c, - 0x0004003d,0x00000006,0x00000501,0x0000001c,0x00050080,0x00000006,0x00000503,0x00000501, - 0x00000502,0x00050084,0x00000006,0x00000504,0x00000503,0x0000002e,0x00050087,0x00000006, - 0x00000505,0x00000504,0x00000021,0x00050080,0x00000006,0x00000506,0x00000500,0x00000505, - 0x0004003d,0x00000006,0x00000507,0x00000012,0x00050080,0x00000006,0x00000508,0x00000506, - 0x00000507,0x0004003d,0x00000048,0x00000509,0x00000052,0x00060041,0x00000064,0x0000050a, - 0x000004c2,0x00000055,0x00000508,0x0003003e,0x0000050a,0x00000509,0x0004003d,0x00000006, - 0x0000050b,0x0000002c,0x0004003d,0x00000006,0x0000050c,0x0000001c,0x00050080,0x00000006, - 0x0000050e,0x0000050c,0x0000050d,0x00050084,0x00000006,0x0000050f,0x0000050e,0x0000002e, - 0x00050087,0x00000006,0x00000510,0x0000050f,0x00000021,0x00050080,0x00000006,0x00000511, - 0x0000050b,0x00000510,0x0004003d,0x00000006,0x00000512,0x00000012,0x00050080,0x00000006, - 0x00000513,0x00000511,0x00000512,0x0004003d,0x00000048,0x00000514,0x00000053,0x00060041, - 0x00000064,0x00000515,0x000004c2,0x00000055,0x00000513,0x0003003e,0x00000515,0x00000514, - 0x000200f9,0x0000003d,0x000200f8,0x0000003d,0x000100fd,0x00010038 -}; - -}}} // namespace cv::dnn::vkcom diff --git a/modules/dnn/src/vkcom/shader/conv48_spv.cpp b/modules/dnn/src/vkcom/shader/conv48_spv.cpp deleted file mode 100644 index 96924f982b..0000000000 --- a/modules/dnn/src/vkcom/shader/conv48_spv.cpp +++ /dev/null @@ -1,948 +0,0 @@ -// This file is part of OpenCV project. -// It is subject to the license terms in the LICENSE file found in the top-level directory -// of this distribution and at http://opencv.org/license.html. -// -// Copyright (C) 2018, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. - -#include "../../precomp.hpp" - -namespace cv { namespace dnn { namespace vkcom { - -extern const unsigned int conv48_spv[7458] = { - 0x07230203,0x00010000,0x00080001,0x00000551,0x00000000,0x00020011,0x00000001,0x0006000b, - 0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001, - 0x0006000f,0x00000005,0x00000004,0x6e69616d,0x00000000,0x0000000c,0x00060010,0x00000004, - 0x00000011,0x00000001,0x00000001,0x00000001,0x00030003,0x00000002,0x000001c2,0x00040005, - 0x00000004,0x6e69616d,0x00000000,0x00030005,0x00000008,0x00007867,0x00080005,0x0000000c, - 0x475f6c67,0x61626f6c,0x766e496c,0x7461636f,0x496e6f69,0x00000044,0x00030005,0x00000012, - 0x00007967,0x00030005,0x00000017,0x00007a67,0x00040005,0x0000001c,0x5f74756f,0x00000078, - 0x00040005,0x00000020,0x5f74756f,0x00000079,0x00070005,0x00000024,0x75706e69,0x61625f74, - 0x5f686374,0x7366666f,0x00007465,0x00040005,0x00000026,0x485f4e49,0x00000000,0x00040005, - 0x00000028,0x575f4e49,0x00000000,0x00050005,0x0000002a,0x4e414843,0x534c454e,0x00000000, - 0x00070005,0x0000002c,0x7074756f,0x625f7475,0x68637461,0x66666f5f,0x00746573,0x00030005, - 0x0000002e,0x0000004d,0x00030005,0x00000030,0x0000004e,0x00040005,0x0000003e,0x74646977, - 0x00003068,0x00030005,0x0000003f,0x0000004b,0x00040005,0x00000041,0x74646977,0x00003168, - 0x00070005,0x00000043,0x31637273,0x6165725f,0x6f5f3064,0x65736666,0x00000074,0x00040005, - 0x0000004a,0x30746f64,0x00000000,0x00040005,0x0000004d,0x31746f64,0x00000000,0x00040005, - 0x0000004e,0x32746f64,0x00000000,0x00040005,0x0000004f,0x33746f64,0x00000000,0x00040005, - 0x00000050,0x34746f64,0x00000000,0x00040005,0x00000051,0x35746f64,0x00000000,0x00040005, - 0x00000052,0x36746f64,0x00000000,0x00040005,0x00000053,0x37746f64,0x00000000,0x00030005, - 0x00000054,0x00000069,0x00030005,0x0000005a,0x00003061,0x00030005,0x0000005b,0x00003161, - 0x00030005,0x0000005c,0x00003261,0x00030005,0x0000005d,0x00003361,0x00040005,0x0000005e, - 0x776f7262,0x00000030,0x00040005,0x00000060,0x75706e49,0x00003374,0x00050006,0x00000060, - 0x00000000,0x61746164,0x00000000,0x00040005,0x00000062,0x31637273,0x00000000,0x00040005, - 0x0000006a,0x776f7262,0x00000031,0x00040005,0x00000071,0x776f7262,0x00000032,0x00040005, - 0x00000078,0x776f7262,0x00000033,0x00040005,0x0000007f,0x776f7262,0x00000034,0x00040005, - 0x00000086,0x776f7262,0x00000035,0x00040005,0x0000008d,0x776f7262,0x00000036,0x00040005, - 0x00000094,0x776f7262,0x00000037,0x00040005,0x000000a1,0x5f747364,0x00000078,0x00040005, - 0x000000a4,0x5f54554f,0x00000057,0x00040005,0x000000a6,0x5f747364,0x00000079,0x00040005, - 0x000000aa,0x5f67726f,0x00000079,0x00050005,0x000000ac,0x49525453,0x485f4544,0x00000000, - 0x00040005,0x000000ae,0x5f444150,0x00000048,0x00040005,0x000000b0,0x5f67726f,0x00000078, - 0x00050005,0x000000b2,0x49525453,0x575f4544,0x00000000,0x00040005,0x000000b4,0x5f444150, - 0x00000057,0x00040005,0x000000b6,0x30637273,0x0000785f,0x00050005,0x000000bb,0x544c4946, - 0x575f5245,0x00000000,0x00050005,0x000000bd,0x414c4944,0x4e4f4954,0x0000575f,0x00040005, - 0x000000c0,0x30637273,0x0000795f,0x00050005,0x000000c5,0x544c4946,0x485f5245,0x00000000, - 0x00050005,0x000000c9,0x414c4944,0x4e4f4954,0x0000485f,0x00040005,0x000000cc,0x30637273, - 0x00007a5f,0x00040005,0x000000e0,0x75706e49,0x00003074,0x00050006,0x000000e0,0x00000000, - 0x61746164,0x00000000,0x00040005,0x000000e2,0x30637273,0x00000000,0x00050005,0x000004bf, - 0x73616962,0x6c61765f,0x00000000,0x00040005,0x000004c1,0x75706e49,0x00003174,0x00050006, - 0x000004c1,0x00000000,0x61746164,0x00000000,0x00040005,0x000004c3,0x73616962,0x00000000, - 0x00040005,0x000004f2,0x7074754f,0x00007475,0x00050006,0x000004f2,0x00000000,0x61746164, - 0x00000000,0x00040005,0x000004f4,0x3074756f,0x00000000,0x00050005,0x00000548,0x41434f4c, - 0x5a535f4c,0x0000585f,0x00050005,0x00000549,0x41434f4c,0x5a535f4c,0x0000595f,0x00050005, - 0x0000054a,0x41434f4c,0x5a535f4c,0x00005a5f,0x00040005,0x0000054b,0x43544142,0x00000048, - 0x00040005,0x0000054c,0x4c494154,0x00004d5f,0x00040047,0x0000000c,0x0000000b,0x0000001c, - 0x00040047,0x00000026,0x00000001,0x00000003,0x00040047,0x00000028,0x00000001,0x00000004, - 0x00040047,0x0000002a,0x00000001,0x0000000c,0x00040047,0x0000002e,0x00000001,0x0000000e, - 0x00040047,0x00000030,0x00000001,0x00000010,0x00040047,0x0000003f,0x00000001,0x0000000f, - 0x00040047,0x0000005f,0x00000006,0x00000010,0x00040048,0x00000060,0x00000000,0x00000018, - 0x00050048,0x00000060,0x00000000,0x00000023,0x00000000,0x00030047,0x00000060,0x00000003, - 0x00040047,0x00000062,0x00000022,0x00000000,0x00040047,0x00000062,0x00000021,0x00000002, - 0x00040047,0x000000a4,0x00000001,0x00000005,0x00040047,0x000000ac,0x00000001,0x00000006, - 0x00040047,0x000000ae,0x00000001,0x00000008,0x00040047,0x000000b2,0x00000001,0x00000007, - 0x00040047,0x000000b4,0x00000001,0x00000009,0x00040047,0x000000bb,0x00000001,0x0000000b, - 0x00040047,0x000000bd,0x00000001,0x00000013,0x00040047,0x000000c5,0x00000001,0x0000000a, - 0x00040047,0x000000c9,0x00000001,0x00000012,0x00040047,0x000000df,0x00000006,0x00000004, - 0x00040048,0x000000e0,0x00000000,0x00000018,0x00050048,0x000000e0,0x00000000,0x00000023, - 0x00000000,0x00030047,0x000000e0,0x00000003,0x00040047,0x000000e2,0x00000022,0x00000000, - 0x00040047,0x000000e2,0x00000021,0x00000000,0x00040047,0x000004c0,0x00000006,0x00000010, - 0x00040048,0x000004c1,0x00000000,0x00000018,0x00050048,0x000004c1,0x00000000,0x00000023, - 0x00000000,0x00030047,0x000004c1,0x00000003,0x00040047,0x000004c3,0x00000022,0x00000000, - 0x00040047,0x000004c3,0x00000021,0x00000001,0x00040047,0x000004f1,0x00000006,0x00000010, - 0x00040048,0x000004f2,0x00000000,0x00000019,0x00050048,0x000004f2,0x00000000,0x00000023, - 0x00000000,0x00030047,0x000004f2,0x00000003,0x00040047,0x000004f4,0x00000022,0x00000000, - 0x00040047,0x000004f4,0x00000021,0x00000003,0x00040047,0x00000548,0x00000001,0x00000000, - 0x00040047,0x00000549,0x00000001,0x00000001,0x00040047,0x0000054a,0x00000001,0x00000002, - 0x00040047,0x0000054b,0x00000001,0x0000000d,0x00040047,0x0000054c,0x00000001,0x00000011, - 0x00040047,0x0000054d,0x00000001,0x00000000,0x00040047,0x0000054e,0x00000001,0x00000001, - 0x00040047,0x0000054f,0x00000001,0x00000002,0x00040047,0x00000550,0x0000000b,0x00000019, - 0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,0x00040015,0x00000006,0x00000020, - 0x00000001,0x00040020,0x00000007,0x00000007,0x00000006,0x00040015,0x00000009,0x00000020, - 0x00000000,0x00040017,0x0000000a,0x00000009,0x00000003,0x00040020,0x0000000b,0x00000001, - 0x0000000a,0x0004003b,0x0000000b,0x0000000c,0x00000001,0x0004002b,0x00000009,0x0000000d, - 0x00000000,0x00040020,0x0000000e,0x00000001,0x00000009,0x0004002b,0x00000009,0x00000013, - 0x00000001,0x0004002b,0x00000009,0x00000018,0x00000002,0x0004002b,0x00000006,0x0000001d, - 0x00000008,0x0004002b,0x00000006,0x00000021,0x00000004,0x00040032,0x00000006,0x00000026, - 0x00000000,0x00040032,0x00000006,0x00000028,0x00000000,0x00040032,0x00000006,0x0000002a, - 0x00000000,0x00040032,0x00000006,0x0000002e,0x00000000,0x00040032,0x00000006,0x00000030, - 0x00000000,0x00020014,0x00000033,0x00060034,0x00000006,0x00000039,0x00000087,0x0000002e, - 0x00000021,0x00040032,0x00000006,0x0000003f,0x00000000,0x00060034,0x00000006,0x00000040, - 0x00000087,0x0000003f,0x00000021,0x00060034,0x00000006,0x00000042,0x00000087,0x00000030, - 0x00000021,0x00030016,0x00000047,0x00000020,0x00040017,0x00000048,0x00000047,0x00000004, - 0x00040020,0x00000049,0x00000007,0x00000048,0x0004002b,0x00000047,0x0000004b,0x00000000, - 0x0007002c,0x00000048,0x0000004c,0x0000004b,0x0000004b,0x0000004b,0x0000004b,0x0004002b, - 0x00000006,0x00000055,0x00000000,0x0003001d,0x0000005f,0x00000048,0x0003001e,0x00000060, - 0x0000005f,0x00040020,0x00000061,0x00000002,0x00000060,0x0004003b,0x00000061,0x00000062, - 0x00000002,0x00040020,0x00000064,0x00000002,0x00000048,0x0004002b,0x00000006,0x0000009b, - 0x00000001,0x00040032,0x00000006,0x000000a4,0x00000000,0x00040032,0x00000006,0x000000ac, - 0x00000000,0x00040032,0x00000006,0x000000ae,0x00000000,0x00040032,0x00000006,0x000000b2, - 0x00000000,0x00040032,0x00000006,0x000000b4,0x00000000,0x00040032,0x00000006,0x000000bb, - 0x00000000,0x00040032,0x00000006,0x000000bd,0x00000000,0x00040032,0x00000006,0x000000c5, - 0x00000000,0x00060034,0x00000006,0x000000c6,0x00000084,0x000000c5,0x000000bb,0x00040032, - 0x00000006,0x000000c9,0x00000000,0x00060034,0x00000006,0x000000d0,0x00000084,0x000000c5, - 0x000000bb,0x0003001d,0x000000df,0x00000047,0x0003001e,0x000000e0,0x000000df,0x00040020, - 0x000000e1,0x00000002,0x000000e0,0x0004003b,0x000000e1,0x000000e2,0x00000002,0x00060034, - 0x00000006,0x000000e5,0x00000084,0x00000026,0x00000028,0x00040020,0x000000ed,0x00000002, - 0x00000047,0x00040020,0x000000f0,0x00000007,0x00000047,0x00060034,0x00000006,0x000000fd, - 0x00000084,0x000000c5,0x000000bb,0x00060034,0x00000006,0x00000105,0x00000084,0x000000c5, - 0x000000bb,0x00060034,0x00000006,0x00000116,0x00000084,0x00000026,0x00000028,0x0004002b, - 0x00000006,0x00000124,0x00000002,0x00060034,0x00000006,0x0000012d,0x00000084,0x000000c5, - 0x000000bb,0x00060034,0x00000006,0x00000135,0x00000084,0x000000c5,0x000000bb,0x00060034, - 0x00000006,0x00000146,0x00000084,0x00000026,0x00000028,0x0004002b,0x00000006,0x00000154, - 0x00000003,0x00060034,0x00000006,0x0000015d,0x00000084,0x000000c5,0x000000bb,0x00060034, - 0x00000006,0x00000165,0x00000084,0x000000c5,0x000000bb,0x00060034,0x00000006,0x00000176, - 0x00000084,0x00000026,0x00000028,0x0004002b,0x00000009,0x00000180,0x00000003,0x00060034, - 0x00000006,0x000001d1,0x00000084,0x000000c5,0x000000bb,0x00060034,0x00000006,0x000001d9, - 0x00000084,0x000000c5,0x000000bb,0x00060034,0x00000006,0x000001ea,0x00000084,0x00000026, - 0x00000028,0x00060034,0x00000006,0x00000200,0x00000084,0x000000c5,0x000000bb,0x00060034, - 0x00000006,0x00000208,0x00000084,0x000000c5,0x000000bb,0x00060034,0x00000006,0x00000219, - 0x00000084,0x00000026,0x00000028,0x00060034,0x00000006,0x0000022f,0x00000084,0x000000c5, - 0x000000bb,0x00060034,0x00000006,0x00000237,0x00000084,0x000000c5,0x000000bb,0x00060034, - 0x00000006,0x00000248,0x00000084,0x00000026,0x00000028,0x00060034,0x00000006,0x0000025e, - 0x00000084,0x000000c5,0x000000bb,0x00060034,0x00000006,0x00000266,0x00000084,0x000000c5, - 0x000000bb,0x00060034,0x00000006,0x00000277,0x00000084,0x00000026,0x00000028,0x00060034, - 0x00000006,0x000002d1,0x00000084,0x000000c5,0x000000bb,0x00060034,0x00000006,0x000002d9, - 0x00000084,0x000000c5,0x000000bb,0x00060034,0x00000006,0x000002ea,0x00000084,0x00000026, - 0x00000028,0x00060034,0x00000006,0x00000300,0x00000084,0x000000c5,0x000000bb,0x00060034, - 0x00000006,0x00000308,0x00000084,0x000000c5,0x000000bb,0x00060034,0x00000006,0x00000319, - 0x00000084,0x00000026,0x00000028,0x00060034,0x00000006,0x0000032f,0x00000084,0x000000c5, - 0x000000bb,0x00060034,0x00000006,0x00000337,0x00000084,0x000000c5,0x000000bb,0x00060034, - 0x00000006,0x00000348,0x00000084,0x00000026,0x00000028,0x00060034,0x00000006,0x0000035e, - 0x00000084,0x000000c5,0x000000bb,0x00060034,0x00000006,0x00000366,0x00000084,0x000000c5, - 0x000000bb,0x00060034,0x00000006,0x00000377,0x00000084,0x00000026,0x00000028,0x00060034, - 0x00000006,0x000003d1,0x00000084,0x000000c5,0x000000bb,0x00060034,0x00000006,0x000003d9, - 0x00000084,0x000000c5,0x000000bb,0x00060034,0x00000006,0x000003ea,0x00000084,0x00000026, - 0x00000028,0x00060034,0x00000006,0x00000400,0x00000084,0x000000c5,0x000000bb,0x00060034, - 0x00000006,0x00000408,0x00000084,0x000000c5,0x000000bb,0x00060034,0x00000006,0x00000419, - 0x00000084,0x00000026,0x00000028,0x00060034,0x00000006,0x0000042f,0x00000084,0x000000c5, - 0x000000bb,0x00060034,0x00000006,0x00000437,0x00000084,0x000000c5,0x000000bb,0x00060034, - 0x00000006,0x00000448,0x00000084,0x00000026,0x00000028,0x00060034,0x00000006,0x0000045e, - 0x00000084,0x000000c5,0x000000bb,0x00060034,0x00000006,0x00000466,0x00000084,0x000000c5, - 0x000000bb,0x00060034,0x00000006,0x00000477,0x00000084,0x00000026,0x00000028,0x0003001d, - 0x000004c0,0x00000048,0x0003001e,0x000004c1,0x000004c0,0x00040020,0x000004c2,0x00000002, - 0x000004c1,0x0004003b,0x000004c2,0x000004c3,0x00000002,0x0003001d,0x000004f1,0x00000048, - 0x0003001e,0x000004f2,0x000004f1,0x00040020,0x000004f3,0x00000002,0x000004f2,0x0004003b, - 0x000004f3,0x000004f4,0x00000002,0x0004002b,0x00000006,0x00000529,0x00000005,0x0004002b, - 0x00000006,0x00000534,0x00000006,0x0004002b,0x00000006,0x0000053f,0x00000007,0x00040032, - 0x00000006,0x00000548,0x00000000,0x00040032,0x00000006,0x00000549,0x00000000,0x00040032, - 0x00000006,0x0000054a,0x00000000,0x00040032,0x00000006,0x0000054b,0x00000000,0x00040032, - 0x00000006,0x0000054c,0x00000000,0x00040032,0x00000009,0x0000054d,0x00000001,0x00040032, - 0x00000009,0x0000054e,0x00000001,0x00040032,0x00000009,0x0000054f,0x00000001,0x00060033, - 0x0000000a,0x00000550,0x0000054d,0x0000054e,0x0000054f,0x00050036,0x00000002,0x00000004, - 0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000007,0x00000008,0x00000007, - 0x0004003b,0x00000007,0x00000012,0x00000007,0x0004003b,0x00000007,0x00000017,0x00000007, - 0x0004003b,0x00000007,0x0000001c,0x00000007,0x0004003b,0x00000007,0x00000020,0x00000007, - 0x0004003b,0x00000007,0x00000024,0x00000007,0x0004003b,0x00000007,0x0000002c,0x00000007, - 0x0004003b,0x00000007,0x0000003e,0x00000007,0x0004003b,0x00000007,0x00000041,0x00000007, - 0x0004003b,0x00000007,0x00000043,0x00000007,0x0004003b,0x00000049,0x0000004a,0x00000007, - 0x0004003b,0x00000049,0x0000004d,0x00000007,0x0004003b,0x00000049,0x0000004e,0x00000007, - 0x0004003b,0x00000049,0x0000004f,0x00000007,0x0004003b,0x00000049,0x00000050,0x00000007, - 0x0004003b,0x00000049,0x00000051,0x00000007,0x0004003b,0x00000049,0x00000052,0x00000007, - 0x0004003b,0x00000049,0x00000053,0x00000007,0x0004003b,0x00000007,0x00000054,0x00000007, - 0x0004003b,0x00000049,0x0000005a,0x00000007,0x0004003b,0x00000049,0x0000005b,0x00000007, - 0x0004003b,0x00000049,0x0000005c,0x00000007,0x0004003b,0x00000049,0x0000005d,0x00000007, - 0x0004003b,0x00000049,0x0000005e,0x00000007,0x0004003b,0x00000049,0x0000006a,0x00000007, - 0x0004003b,0x00000049,0x00000071,0x00000007,0x0004003b,0x00000049,0x00000078,0x00000007, - 0x0004003b,0x00000049,0x0000007f,0x00000007,0x0004003b,0x00000049,0x00000086,0x00000007, - 0x0004003b,0x00000049,0x0000008d,0x00000007,0x0004003b,0x00000049,0x00000094,0x00000007, - 0x0004003b,0x00000007,0x000000a1,0x00000007,0x0004003b,0x00000007,0x000000a6,0x00000007, - 0x0004003b,0x00000007,0x000000aa,0x00000007,0x0004003b,0x00000007,0x000000b0,0x00000007, - 0x0004003b,0x00000007,0x000000b6,0x00000007,0x0004003b,0x00000007,0x000000c0,0x00000007, - 0x0004003b,0x00000007,0x000000cc,0x00000007,0x0004003b,0x00000049,0x000004bf,0x00000007, - 0x00050041,0x0000000e,0x0000000f,0x0000000c,0x0000000d,0x0004003d,0x00000009,0x00000010, - 0x0000000f,0x0004007c,0x00000006,0x00000011,0x00000010,0x0003003e,0x00000008,0x00000011, - 0x00050041,0x0000000e,0x00000014,0x0000000c,0x00000013,0x0004003d,0x00000009,0x00000015, - 0x00000014,0x0004007c,0x00000006,0x00000016,0x00000015,0x0003003e,0x00000012,0x00000016, - 0x00050041,0x0000000e,0x00000019,0x0000000c,0x00000018,0x0004003d,0x00000009,0x0000001a, - 0x00000019,0x0004007c,0x00000006,0x0000001b,0x0000001a,0x0003003e,0x00000017,0x0000001b, - 0x0004003d,0x00000006,0x0000001e,0x00000008,0x00050084,0x00000006,0x0000001f,0x0000001d, - 0x0000001e,0x0003003e,0x0000001c,0x0000001f,0x0004003d,0x00000006,0x00000022,0x00000012, - 0x00050084,0x00000006,0x00000023,0x00000021,0x00000022,0x0003003e,0x00000020,0x00000023, - 0x0004003d,0x00000006,0x00000025,0x00000017,0x00050084,0x00000006,0x00000027,0x00000025, - 0x00000026,0x00050084,0x00000006,0x00000029,0x00000027,0x00000028,0x00050084,0x00000006, - 0x0000002b,0x00000029,0x0000002a,0x0003003e,0x00000024,0x0000002b,0x0004003d,0x00000006, - 0x0000002d,0x00000017,0x00050084,0x00000006,0x0000002f,0x0000002d,0x0000002e,0x00050084, - 0x00000006,0x00000031,0x0000002f,0x00000030,0x00050087,0x00000006,0x00000032,0x00000031, - 0x00000021,0x0003003e,0x0000002c,0x00000032,0x0004003d,0x00000006,0x00000034,0x0000001c, - 0x000500b1,0x00000033,0x00000035,0x00000034,0x00000030,0x000300f7,0x00000037,0x00000000, - 0x000400fa,0x00000035,0x00000036,0x00000037,0x000200f8,0x00000036,0x0004003d,0x00000006, - 0x00000038,0x00000012,0x000500b1,0x00000033,0x0000003a,0x00000038,0x00000039,0x000200f9, - 0x00000037,0x000200f8,0x00000037,0x000700f5,0x00000033,0x0000003b,0x00000035,0x00000005, - 0x0000003a,0x00000036,0x000300f7,0x0000003d,0x00000000,0x000400fa,0x0000003b,0x0000003c, - 0x0000003d,0x000200f8,0x0000003c,0x0003003e,0x0000003e,0x00000040,0x0003003e,0x00000041, - 0x00000042,0x0004003d,0x00000006,0x00000044,0x0000001c,0x0004003d,0x00000006,0x00000045, - 0x0000003e,0x00050084,0x00000006,0x00000046,0x00000044,0x00000045,0x0003003e,0x00000043, - 0x00000046,0x0003003e,0x0000004a,0x0000004c,0x0003003e,0x0000004d,0x0000004c,0x0003003e, - 0x0000004e,0x0000004c,0x0003003e,0x0000004f,0x0000004c,0x0003003e,0x00000050,0x0000004c, - 0x0003003e,0x00000051,0x0000004c,0x0003003e,0x00000052,0x0000004c,0x0003003e,0x00000053, - 0x0000004c,0x0003003e,0x00000054,0x00000055,0x000200f9,0x00000056,0x000200f8,0x00000056, - 0x000400f6,0x00000058,0x00000059,0x00000000,0x000200f9,0x00000057,0x000200f8,0x00000057, - 0x0003003e,0x0000005a,0x0000004c,0x0003003e,0x0000005b,0x0000004c,0x0003003e,0x0000005c, - 0x0000004c,0x0003003e,0x0000005d,0x0000004c,0x0004003d,0x00000006,0x00000063,0x00000043, - 0x00060041,0x00000064,0x00000065,0x00000062,0x00000055,0x00000063,0x0004003d,0x00000048, - 0x00000066,0x00000065,0x0003003e,0x0000005e,0x00000066,0x0004003d,0x00000006,0x00000067, - 0x0000003e,0x0004003d,0x00000006,0x00000068,0x00000043,0x00050080,0x00000006,0x00000069, - 0x00000068,0x00000067,0x0003003e,0x00000043,0x00000069,0x0004003d,0x00000006,0x0000006b, - 0x00000043,0x00060041,0x00000064,0x0000006c,0x00000062,0x00000055,0x0000006b,0x0004003d, - 0x00000048,0x0000006d,0x0000006c,0x0003003e,0x0000006a,0x0000006d,0x0004003d,0x00000006, - 0x0000006e,0x0000003e,0x0004003d,0x00000006,0x0000006f,0x00000043,0x00050080,0x00000006, - 0x00000070,0x0000006f,0x0000006e,0x0003003e,0x00000043,0x00000070,0x0004003d,0x00000006, - 0x00000072,0x00000043,0x00060041,0x00000064,0x00000073,0x00000062,0x00000055,0x00000072, - 0x0004003d,0x00000048,0x00000074,0x00000073,0x0003003e,0x00000071,0x00000074,0x0004003d, - 0x00000006,0x00000075,0x0000003e,0x0004003d,0x00000006,0x00000076,0x00000043,0x00050080, - 0x00000006,0x00000077,0x00000076,0x00000075,0x0003003e,0x00000043,0x00000077,0x0004003d, - 0x00000006,0x00000079,0x00000043,0x00060041,0x00000064,0x0000007a,0x00000062,0x00000055, - 0x00000079,0x0004003d,0x00000048,0x0000007b,0x0000007a,0x0003003e,0x00000078,0x0000007b, - 0x0004003d,0x00000006,0x0000007c,0x0000003e,0x0004003d,0x00000006,0x0000007d,0x00000043, - 0x00050080,0x00000006,0x0000007e,0x0000007d,0x0000007c,0x0003003e,0x00000043,0x0000007e, - 0x0004003d,0x00000006,0x00000080,0x00000043,0x00060041,0x00000064,0x00000081,0x00000062, - 0x00000055,0x00000080,0x0004003d,0x00000048,0x00000082,0x00000081,0x0003003e,0x0000007f, - 0x00000082,0x0004003d,0x00000006,0x00000083,0x0000003e,0x0004003d,0x00000006,0x00000084, - 0x00000043,0x00050080,0x00000006,0x00000085,0x00000084,0x00000083,0x0003003e,0x00000043, - 0x00000085,0x0004003d,0x00000006,0x00000087,0x00000043,0x00060041,0x00000064,0x00000088, - 0x00000062,0x00000055,0x00000087,0x0004003d,0x00000048,0x00000089,0x00000088,0x0003003e, - 0x00000086,0x00000089,0x0004003d,0x00000006,0x0000008a,0x0000003e,0x0004003d,0x00000006, - 0x0000008b,0x00000043,0x00050080,0x00000006,0x0000008c,0x0000008b,0x0000008a,0x0003003e, - 0x00000043,0x0000008c,0x0004003d,0x00000006,0x0000008e,0x00000043,0x00060041,0x00000064, - 0x0000008f,0x00000062,0x00000055,0x0000008e,0x0004003d,0x00000048,0x00000090,0x0000008f, - 0x0003003e,0x0000008d,0x00000090,0x0004003d,0x00000006,0x00000091,0x0000003e,0x0004003d, - 0x00000006,0x00000092,0x00000043,0x00050080,0x00000006,0x00000093,0x00000092,0x00000091, - 0x0003003e,0x00000043,0x00000093,0x0004003d,0x00000006,0x00000095,0x00000043,0x00060041, - 0x00000064,0x00000096,0x00000062,0x00000055,0x00000095,0x0004003d,0x00000048,0x00000097, - 0x00000096,0x0003003e,0x00000094,0x00000097,0x0004003d,0x00000006,0x00000098,0x0000003e, - 0x0004003d,0x00000006,0x00000099,0x00000043,0x00050080,0x00000006,0x0000009a,0x00000099, - 0x00000098,0x0003003e,0x00000043,0x0000009a,0x0004003d,0x00000006,0x0000009c,0x0000003e, - 0x00050084,0x00000006,0x0000009d,0x0000001d,0x0000009c,0x00050082,0x00000006,0x0000009e, - 0x0000009b,0x0000009d,0x0004003d,0x00000006,0x0000009f,0x00000043,0x00050080,0x00000006, - 0x000000a0,0x0000009f,0x0000009e,0x0003003e,0x00000043,0x000000a0,0x0004003d,0x00000006, - 0x000000a2,0x00000020,0x00050080,0x00000006,0x000000a3,0x000000a2,0x00000055,0x0005008b, - 0x00000006,0x000000a5,0x000000a3,0x000000a4,0x0003003e,0x000000a1,0x000000a5,0x0004003d, - 0x00000006,0x000000a7,0x00000020,0x00050080,0x00000006,0x000000a8,0x000000a7,0x00000055, - 0x00050087,0x00000006,0x000000a9,0x000000a8,0x000000a4,0x0003003e,0x000000a6,0x000000a9, - 0x0004003d,0x00000006,0x000000ab,0x000000a6,0x00050084,0x00000006,0x000000ad,0x000000ab, - 0x000000ac,0x00050082,0x00000006,0x000000af,0x000000ad,0x000000ae,0x0003003e,0x000000aa, - 0x000000af,0x0004003d,0x00000006,0x000000b1,0x000000a1,0x00050084,0x00000006,0x000000b3, - 0x000000b1,0x000000b2,0x00050082,0x00000006,0x000000b5,0x000000b3,0x000000b4,0x0003003e, - 0x000000b0,0x000000b5,0x0004003d,0x00000006,0x000000b7,0x000000b0,0x0004003d,0x00000006, - 0x000000b8,0x00000054,0x00050084,0x00000006,0x000000b9,0x000000b8,0x00000021,0x00050080, - 0x00000006,0x000000ba,0x000000b9,0x00000055,0x0005008b,0x00000006,0x000000bc,0x000000ba, - 0x000000bb,0x00050084,0x00000006,0x000000be,0x000000bc,0x000000bd,0x00050080,0x00000006, - 0x000000bf,0x000000b7,0x000000be,0x0003003e,0x000000b6,0x000000bf,0x0004003d,0x00000006, - 0x000000c1,0x000000aa,0x0004003d,0x00000006,0x000000c2,0x00000054,0x00050084,0x00000006, - 0x000000c3,0x000000c2,0x00000021,0x00050080,0x00000006,0x000000c4,0x000000c3,0x00000055, - 0x0005008b,0x00000006,0x000000c7,0x000000c4,0x000000c6,0x00050087,0x00000006,0x000000c8, - 0x000000c7,0x000000bb,0x00050084,0x00000006,0x000000ca,0x000000c8,0x000000c9,0x00050080, - 0x00000006,0x000000cb,0x000000c1,0x000000ca,0x0003003e,0x000000c0,0x000000cb,0x0004003d, - 0x00000006,0x000000cd,0x00000054,0x00050084,0x00000006,0x000000ce,0x000000cd,0x00000021, - 0x00050080,0x00000006,0x000000cf,0x000000ce,0x00000055,0x00050087,0x00000006,0x000000d1, - 0x000000cf,0x000000d0,0x0003003e,0x000000cc,0x000000d1,0x0004003d,0x00000006,0x000000d2, - 0x000000c0,0x000500af,0x00000033,0x000000d3,0x000000d2,0x00000055,0x0004003d,0x00000006, - 0x000000d4,0x000000c0,0x000500b1,0x00000033,0x000000d5,0x000000d4,0x00000026,0x000500a7, - 0x00000033,0x000000d6,0x000000d3,0x000000d5,0x0004003d,0x00000006,0x000000d7,0x000000b6, - 0x000500af,0x00000033,0x000000d8,0x000000d7,0x00000055,0x000500a7,0x00000033,0x000000d9, - 0x000000d6,0x000000d8,0x0004003d,0x00000006,0x000000da,0x000000b6,0x000500b1,0x00000033, - 0x000000db,0x000000da,0x00000028,0x000500a7,0x00000033,0x000000dc,0x000000d9,0x000000db, - 0x000300f7,0x000000de,0x00000000,0x000400fa,0x000000dc,0x000000dd,0x000000de,0x000200f8, - 0x000000dd,0x0004003d,0x00000006,0x000000e3,0x00000024,0x0004003d,0x00000006,0x000000e4, - 0x000000cc,0x00050084,0x00000006,0x000000e6,0x000000e4,0x000000e5,0x00050080,0x00000006, - 0x000000e7,0x000000e3,0x000000e6,0x0004003d,0x00000006,0x000000e8,0x000000c0,0x00050084, - 0x00000006,0x000000e9,0x000000e8,0x00000028,0x00050080,0x00000006,0x000000ea,0x000000e7, - 0x000000e9,0x0004003d,0x00000006,0x000000eb,0x000000b6,0x00050080,0x00000006,0x000000ec, - 0x000000ea,0x000000eb,0x00060041,0x000000ed,0x000000ee,0x000000e2,0x00000055,0x000000ec, - 0x0004003d,0x00000047,0x000000ef,0x000000ee,0x00050041,0x000000f0,0x000000f1,0x0000005a, - 0x0000000d,0x0003003e,0x000000f1,0x000000ef,0x000200f9,0x000000de,0x000200f8,0x000000de, - 0x0004003d,0x00000006,0x000000f2,0x000000b0,0x0004003d,0x00000006,0x000000f3,0x00000054, - 0x00050084,0x00000006,0x000000f4,0x000000f3,0x00000021,0x00050080,0x00000006,0x000000f5, - 0x000000f4,0x0000009b,0x0005008b,0x00000006,0x000000f6,0x000000f5,0x000000bb,0x00050084, - 0x00000006,0x000000f7,0x000000f6,0x000000bd,0x00050080,0x00000006,0x000000f8,0x000000f2, - 0x000000f7,0x0003003e,0x000000b6,0x000000f8,0x0004003d,0x00000006,0x000000f9,0x000000aa, - 0x0004003d,0x00000006,0x000000fa,0x00000054,0x00050084,0x00000006,0x000000fb,0x000000fa, - 0x00000021,0x00050080,0x00000006,0x000000fc,0x000000fb,0x0000009b,0x0005008b,0x00000006, - 0x000000fe,0x000000fc,0x000000fd,0x00050087,0x00000006,0x000000ff,0x000000fe,0x000000bb, - 0x00050084,0x00000006,0x00000100,0x000000ff,0x000000c9,0x00050080,0x00000006,0x00000101, - 0x000000f9,0x00000100,0x0003003e,0x000000c0,0x00000101,0x0004003d,0x00000006,0x00000102, - 0x00000054,0x00050084,0x00000006,0x00000103,0x00000102,0x00000021,0x00050080,0x00000006, - 0x00000104,0x00000103,0x0000009b,0x00050087,0x00000006,0x00000106,0x00000104,0x00000105, - 0x0003003e,0x000000cc,0x00000106,0x0004003d,0x00000006,0x00000107,0x000000c0,0x000500af, - 0x00000033,0x00000108,0x00000107,0x00000055,0x0004003d,0x00000006,0x00000109,0x000000c0, - 0x000500b1,0x00000033,0x0000010a,0x00000109,0x00000026,0x000500a7,0x00000033,0x0000010b, - 0x00000108,0x0000010a,0x0004003d,0x00000006,0x0000010c,0x000000b6,0x000500af,0x00000033, - 0x0000010d,0x0000010c,0x00000055,0x000500a7,0x00000033,0x0000010e,0x0000010b,0x0000010d, - 0x0004003d,0x00000006,0x0000010f,0x000000b6,0x000500b1,0x00000033,0x00000110,0x0000010f, - 0x00000028,0x000500a7,0x00000033,0x00000111,0x0000010e,0x00000110,0x000300f7,0x00000113, - 0x00000000,0x000400fa,0x00000111,0x00000112,0x00000113,0x000200f8,0x00000112,0x0004003d, - 0x00000006,0x00000114,0x00000024,0x0004003d,0x00000006,0x00000115,0x000000cc,0x00050084, - 0x00000006,0x00000117,0x00000115,0x00000116,0x00050080,0x00000006,0x00000118,0x00000114, - 0x00000117,0x0004003d,0x00000006,0x00000119,0x000000c0,0x00050084,0x00000006,0x0000011a, - 0x00000119,0x00000028,0x00050080,0x00000006,0x0000011b,0x00000118,0x0000011a,0x0004003d, - 0x00000006,0x0000011c,0x000000b6,0x00050080,0x00000006,0x0000011d,0x0000011b,0x0000011c, - 0x00060041,0x000000ed,0x0000011e,0x000000e2,0x00000055,0x0000011d,0x0004003d,0x00000047, - 0x0000011f,0x0000011e,0x00050041,0x000000f0,0x00000120,0x0000005a,0x00000013,0x0003003e, - 0x00000120,0x0000011f,0x000200f9,0x00000113,0x000200f8,0x00000113,0x0004003d,0x00000006, - 0x00000121,0x000000b0,0x0004003d,0x00000006,0x00000122,0x00000054,0x00050084,0x00000006, - 0x00000123,0x00000122,0x00000021,0x00050080,0x00000006,0x00000125,0x00000123,0x00000124, - 0x0005008b,0x00000006,0x00000126,0x00000125,0x000000bb,0x00050084,0x00000006,0x00000127, - 0x00000126,0x000000bd,0x00050080,0x00000006,0x00000128,0x00000121,0x00000127,0x0003003e, - 0x000000b6,0x00000128,0x0004003d,0x00000006,0x00000129,0x000000aa,0x0004003d,0x00000006, - 0x0000012a,0x00000054,0x00050084,0x00000006,0x0000012b,0x0000012a,0x00000021,0x00050080, - 0x00000006,0x0000012c,0x0000012b,0x00000124,0x0005008b,0x00000006,0x0000012e,0x0000012c, - 0x0000012d,0x00050087,0x00000006,0x0000012f,0x0000012e,0x000000bb,0x00050084,0x00000006, - 0x00000130,0x0000012f,0x000000c9,0x00050080,0x00000006,0x00000131,0x00000129,0x00000130, - 0x0003003e,0x000000c0,0x00000131,0x0004003d,0x00000006,0x00000132,0x00000054,0x00050084, - 0x00000006,0x00000133,0x00000132,0x00000021,0x00050080,0x00000006,0x00000134,0x00000133, - 0x00000124,0x00050087,0x00000006,0x00000136,0x00000134,0x00000135,0x0003003e,0x000000cc, - 0x00000136,0x0004003d,0x00000006,0x00000137,0x000000c0,0x000500af,0x00000033,0x00000138, - 0x00000137,0x00000055,0x0004003d,0x00000006,0x00000139,0x000000c0,0x000500b1,0x00000033, - 0x0000013a,0x00000139,0x00000026,0x000500a7,0x00000033,0x0000013b,0x00000138,0x0000013a, - 0x0004003d,0x00000006,0x0000013c,0x000000b6,0x000500af,0x00000033,0x0000013d,0x0000013c, - 0x00000055,0x000500a7,0x00000033,0x0000013e,0x0000013b,0x0000013d,0x0004003d,0x00000006, - 0x0000013f,0x000000b6,0x000500b1,0x00000033,0x00000140,0x0000013f,0x00000028,0x000500a7, - 0x00000033,0x00000141,0x0000013e,0x00000140,0x000300f7,0x00000143,0x00000000,0x000400fa, - 0x00000141,0x00000142,0x00000143,0x000200f8,0x00000142,0x0004003d,0x00000006,0x00000144, - 0x00000024,0x0004003d,0x00000006,0x00000145,0x000000cc,0x00050084,0x00000006,0x00000147, - 0x00000145,0x00000146,0x00050080,0x00000006,0x00000148,0x00000144,0x00000147,0x0004003d, - 0x00000006,0x00000149,0x000000c0,0x00050084,0x00000006,0x0000014a,0x00000149,0x00000028, - 0x00050080,0x00000006,0x0000014b,0x00000148,0x0000014a,0x0004003d,0x00000006,0x0000014c, - 0x000000b6,0x00050080,0x00000006,0x0000014d,0x0000014b,0x0000014c,0x00060041,0x000000ed, - 0x0000014e,0x000000e2,0x00000055,0x0000014d,0x0004003d,0x00000047,0x0000014f,0x0000014e, - 0x00050041,0x000000f0,0x00000150,0x0000005a,0x00000018,0x0003003e,0x00000150,0x0000014f, - 0x000200f9,0x00000143,0x000200f8,0x00000143,0x0004003d,0x00000006,0x00000151,0x000000b0, - 0x0004003d,0x00000006,0x00000152,0x00000054,0x00050084,0x00000006,0x00000153,0x00000152, - 0x00000021,0x00050080,0x00000006,0x00000155,0x00000153,0x00000154,0x0005008b,0x00000006, - 0x00000156,0x00000155,0x000000bb,0x00050084,0x00000006,0x00000157,0x00000156,0x000000bd, - 0x00050080,0x00000006,0x00000158,0x00000151,0x00000157,0x0003003e,0x000000b6,0x00000158, - 0x0004003d,0x00000006,0x00000159,0x000000aa,0x0004003d,0x00000006,0x0000015a,0x00000054, - 0x00050084,0x00000006,0x0000015b,0x0000015a,0x00000021,0x00050080,0x00000006,0x0000015c, - 0x0000015b,0x00000154,0x0005008b,0x00000006,0x0000015e,0x0000015c,0x0000015d,0x00050087, - 0x00000006,0x0000015f,0x0000015e,0x000000bb,0x00050084,0x00000006,0x00000160,0x0000015f, - 0x000000c9,0x00050080,0x00000006,0x00000161,0x00000159,0x00000160,0x0003003e,0x000000c0, - 0x00000161,0x0004003d,0x00000006,0x00000162,0x00000054,0x00050084,0x00000006,0x00000163, - 0x00000162,0x00000021,0x00050080,0x00000006,0x00000164,0x00000163,0x00000154,0x00050087, - 0x00000006,0x00000166,0x00000164,0x00000165,0x0003003e,0x000000cc,0x00000166,0x0004003d, - 0x00000006,0x00000167,0x000000c0,0x000500af,0x00000033,0x00000168,0x00000167,0x00000055, - 0x0004003d,0x00000006,0x00000169,0x000000c0,0x000500b1,0x00000033,0x0000016a,0x00000169, - 0x00000026,0x000500a7,0x00000033,0x0000016b,0x00000168,0x0000016a,0x0004003d,0x00000006, - 0x0000016c,0x000000b6,0x000500af,0x00000033,0x0000016d,0x0000016c,0x00000055,0x000500a7, - 0x00000033,0x0000016e,0x0000016b,0x0000016d,0x0004003d,0x00000006,0x0000016f,0x000000b6, - 0x000500b1,0x00000033,0x00000170,0x0000016f,0x00000028,0x000500a7,0x00000033,0x00000171, - 0x0000016e,0x00000170,0x000300f7,0x00000173,0x00000000,0x000400fa,0x00000171,0x00000172, - 0x00000173,0x000200f8,0x00000172,0x0004003d,0x00000006,0x00000174,0x00000024,0x0004003d, - 0x00000006,0x00000175,0x000000cc,0x00050084,0x00000006,0x00000177,0x00000175,0x00000176, - 0x00050080,0x00000006,0x00000178,0x00000174,0x00000177,0x0004003d,0x00000006,0x00000179, - 0x000000c0,0x00050084,0x00000006,0x0000017a,0x00000179,0x00000028,0x00050080,0x00000006, - 0x0000017b,0x00000178,0x0000017a,0x0004003d,0x00000006,0x0000017c,0x000000b6,0x00050080, - 0x00000006,0x0000017d,0x0000017b,0x0000017c,0x00060041,0x000000ed,0x0000017e,0x000000e2, - 0x00000055,0x0000017d,0x0004003d,0x00000047,0x0000017f,0x0000017e,0x00050041,0x000000f0, - 0x00000181,0x0000005a,0x00000180,0x0003003e,0x00000181,0x0000017f,0x000200f9,0x00000173, - 0x000200f8,0x00000173,0x0004003d,0x00000048,0x00000182,0x0000005e,0x0004003d,0x00000048, - 0x00000183,0x0000005a,0x00050094,0x00000047,0x00000184,0x00000182,0x00000183,0x00050041, - 0x000000f0,0x00000185,0x0000004a,0x0000000d,0x0004003d,0x00000047,0x00000186,0x00000185, - 0x00050081,0x00000047,0x00000187,0x00000186,0x00000184,0x00050041,0x000000f0,0x00000188, - 0x0000004a,0x0000000d,0x0003003e,0x00000188,0x00000187,0x0004003d,0x00000048,0x00000189, - 0x0000006a,0x0004003d,0x00000048,0x0000018a,0x0000005a,0x00050094,0x00000047,0x0000018b, - 0x00000189,0x0000018a,0x00050041,0x000000f0,0x0000018c,0x0000004d,0x0000000d,0x0004003d, - 0x00000047,0x0000018d,0x0000018c,0x00050081,0x00000047,0x0000018e,0x0000018d,0x0000018b, - 0x00050041,0x000000f0,0x0000018f,0x0000004d,0x0000000d,0x0003003e,0x0000018f,0x0000018e, - 0x0004003d,0x00000048,0x00000190,0x00000071,0x0004003d,0x00000048,0x00000191,0x0000005a, - 0x00050094,0x00000047,0x00000192,0x00000190,0x00000191,0x00050041,0x000000f0,0x00000193, - 0x0000004e,0x0000000d,0x0004003d,0x00000047,0x00000194,0x00000193,0x00050081,0x00000047, - 0x00000195,0x00000194,0x00000192,0x00050041,0x000000f0,0x00000196,0x0000004e,0x0000000d, - 0x0003003e,0x00000196,0x00000195,0x0004003d,0x00000048,0x00000197,0x00000078,0x0004003d, - 0x00000048,0x00000198,0x0000005a,0x00050094,0x00000047,0x00000199,0x00000197,0x00000198, - 0x00050041,0x000000f0,0x0000019a,0x0000004f,0x0000000d,0x0004003d,0x00000047,0x0000019b, - 0x0000019a,0x00050081,0x00000047,0x0000019c,0x0000019b,0x00000199,0x00050041,0x000000f0, - 0x0000019d,0x0000004f,0x0000000d,0x0003003e,0x0000019d,0x0000019c,0x0004003d,0x00000048, - 0x0000019e,0x0000007f,0x0004003d,0x00000048,0x0000019f,0x0000005a,0x00050094,0x00000047, - 0x000001a0,0x0000019e,0x0000019f,0x00050041,0x000000f0,0x000001a1,0x00000050,0x0000000d, - 0x0004003d,0x00000047,0x000001a2,0x000001a1,0x00050081,0x00000047,0x000001a3,0x000001a2, - 0x000001a0,0x00050041,0x000000f0,0x000001a4,0x00000050,0x0000000d,0x0003003e,0x000001a4, - 0x000001a3,0x0004003d,0x00000048,0x000001a5,0x00000086,0x0004003d,0x00000048,0x000001a6, - 0x0000005a,0x00050094,0x00000047,0x000001a7,0x000001a5,0x000001a6,0x00050041,0x000000f0, - 0x000001a8,0x00000051,0x0000000d,0x0004003d,0x00000047,0x000001a9,0x000001a8,0x00050081, - 0x00000047,0x000001aa,0x000001a9,0x000001a7,0x00050041,0x000000f0,0x000001ab,0x00000051, - 0x0000000d,0x0003003e,0x000001ab,0x000001aa,0x0004003d,0x00000048,0x000001ac,0x0000008d, - 0x0004003d,0x00000048,0x000001ad,0x0000005a,0x00050094,0x00000047,0x000001ae,0x000001ac, - 0x000001ad,0x00050041,0x000000f0,0x000001af,0x00000052,0x0000000d,0x0004003d,0x00000047, - 0x000001b0,0x000001af,0x00050081,0x00000047,0x000001b1,0x000001b0,0x000001ae,0x00050041, - 0x000000f0,0x000001b2,0x00000052,0x0000000d,0x0003003e,0x000001b2,0x000001b1,0x0004003d, - 0x00000048,0x000001b3,0x00000094,0x0004003d,0x00000048,0x000001b4,0x0000005a,0x00050094, - 0x00000047,0x000001b5,0x000001b3,0x000001b4,0x00050041,0x000000f0,0x000001b6,0x00000053, - 0x0000000d,0x0004003d,0x00000047,0x000001b7,0x000001b6,0x00050081,0x00000047,0x000001b8, - 0x000001b7,0x000001b5,0x00050041,0x000000f0,0x000001b9,0x00000053,0x0000000d,0x0003003e, - 0x000001b9,0x000001b8,0x0004003d,0x00000006,0x000001ba,0x00000020,0x00050080,0x00000006, - 0x000001bb,0x000001ba,0x0000009b,0x0005008b,0x00000006,0x000001bc,0x000001bb,0x000000a4, - 0x0003003e,0x000000a1,0x000001bc,0x0004003d,0x00000006,0x000001bd,0x00000020,0x00050080, - 0x00000006,0x000001be,0x000001bd,0x0000009b,0x00050087,0x00000006,0x000001bf,0x000001be, - 0x000000a4,0x0003003e,0x000000a6,0x000001bf,0x0004003d,0x00000006,0x000001c0,0x000000a6, - 0x00050084,0x00000006,0x000001c1,0x000001c0,0x000000ac,0x00050082,0x00000006,0x000001c2, - 0x000001c1,0x000000ae,0x0003003e,0x000000aa,0x000001c2,0x0004003d,0x00000006,0x000001c3, - 0x000000a1,0x00050084,0x00000006,0x000001c4,0x000001c3,0x000000b2,0x00050082,0x00000006, - 0x000001c5,0x000001c4,0x000000b4,0x0003003e,0x000000b0,0x000001c5,0x0004003d,0x00000006, - 0x000001c6,0x000000b0,0x0004003d,0x00000006,0x000001c7,0x00000054,0x00050084,0x00000006, - 0x000001c8,0x000001c7,0x00000021,0x00050080,0x00000006,0x000001c9,0x000001c8,0x00000055, - 0x0005008b,0x00000006,0x000001ca,0x000001c9,0x000000bb,0x00050084,0x00000006,0x000001cb, - 0x000001ca,0x000000bd,0x00050080,0x00000006,0x000001cc,0x000001c6,0x000001cb,0x0003003e, - 0x000000b6,0x000001cc,0x0004003d,0x00000006,0x000001cd,0x000000aa,0x0004003d,0x00000006, - 0x000001ce,0x00000054,0x00050084,0x00000006,0x000001cf,0x000001ce,0x00000021,0x00050080, - 0x00000006,0x000001d0,0x000001cf,0x00000055,0x0005008b,0x00000006,0x000001d2,0x000001d0, - 0x000001d1,0x00050087,0x00000006,0x000001d3,0x000001d2,0x000000bb,0x00050084,0x00000006, - 0x000001d4,0x000001d3,0x000000c9,0x00050080,0x00000006,0x000001d5,0x000001cd,0x000001d4, - 0x0003003e,0x000000c0,0x000001d5,0x0004003d,0x00000006,0x000001d6,0x00000054,0x00050084, - 0x00000006,0x000001d7,0x000001d6,0x00000021,0x00050080,0x00000006,0x000001d8,0x000001d7, - 0x00000055,0x00050087,0x00000006,0x000001da,0x000001d8,0x000001d9,0x0003003e,0x000000cc, - 0x000001da,0x0004003d,0x00000006,0x000001db,0x000000c0,0x000500af,0x00000033,0x000001dc, - 0x000001db,0x00000055,0x0004003d,0x00000006,0x000001dd,0x000000c0,0x000500b1,0x00000033, - 0x000001de,0x000001dd,0x00000026,0x000500a7,0x00000033,0x000001df,0x000001dc,0x000001de, - 0x0004003d,0x00000006,0x000001e0,0x000000b6,0x000500af,0x00000033,0x000001e1,0x000001e0, - 0x00000055,0x000500a7,0x00000033,0x000001e2,0x000001df,0x000001e1,0x0004003d,0x00000006, - 0x000001e3,0x000000b6,0x000500b1,0x00000033,0x000001e4,0x000001e3,0x00000028,0x000500a7, - 0x00000033,0x000001e5,0x000001e2,0x000001e4,0x000300f7,0x000001e7,0x00000000,0x000400fa, - 0x000001e5,0x000001e6,0x000001e7,0x000200f8,0x000001e6,0x0004003d,0x00000006,0x000001e8, - 0x00000024,0x0004003d,0x00000006,0x000001e9,0x000000cc,0x00050084,0x00000006,0x000001eb, - 0x000001e9,0x000001ea,0x00050080,0x00000006,0x000001ec,0x000001e8,0x000001eb,0x0004003d, - 0x00000006,0x000001ed,0x000000c0,0x00050084,0x00000006,0x000001ee,0x000001ed,0x00000028, - 0x00050080,0x00000006,0x000001ef,0x000001ec,0x000001ee,0x0004003d,0x00000006,0x000001f0, - 0x000000b6,0x00050080,0x00000006,0x000001f1,0x000001ef,0x000001f0,0x00060041,0x000000ed, - 0x000001f2,0x000000e2,0x00000055,0x000001f1,0x0004003d,0x00000047,0x000001f3,0x000001f2, - 0x00050041,0x000000f0,0x000001f4,0x0000005b,0x0000000d,0x0003003e,0x000001f4,0x000001f3, - 0x000200f9,0x000001e7,0x000200f8,0x000001e7,0x0004003d,0x00000006,0x000001f5,0x000000b0, - 0x0004003d,0x00000006,0x000001f6,0x00000054,0x00050084,0x00000006,0x000001f7,0x000001f6, - 0x00000021,0x00050080,0x00000006,0x000001f8,0x000001f7,0x0000009b,0x0005008b,0x00000006, - 0x000001f9,0x000001f8,0x000000bb,0x00050084,0x00000006,0x000001fa,0x000001f9,0x000000bd, - 0x00050080,0x00000006,0x000001fb,0x000001f5,0x000001fa,0x0003003e,0x000000b6,0x000001fb, - 0x0004003d,0x00000006,0x000001fc,0x000000aa,0x0004003d,0x00000006,0x000001fd,0x00000054, - 0x00050084,0x00000006,0x000001fe,0x000001fd,0x00000021,0x00050080,0x00000006,0x000001ff, - 0x000001fe,0x0000009b,0x0005008b,0x00000006,0x00000201,0x000001ff,0x00000200,0x00050087, - 0x00000006,0x00000202,0x00000201,0x000000bb,0x00050084,0x00000006,0x00000203,0x00000202, - 0x000000c9,0x00050080,0x00000006,0x00000204,0x000001fc,0x00000203,0x0003003e,0x000000c0, - 0x00000204,0x0004003d,0x00000006,0x00000205,0x00000054,0x00050084,0x00000006,0x00000206, - 0x00000205,0x00000021,0x00050080,0x00000006,0x00000207,0x00000206,0x0000009b,0x00050087, - 0x00000006,0x00000209,0x00000207,0x00000208,0x0003003e,0x000000cc,0x00000209,0x0004003d, - 0x00000006,0x0000020a,0x000000c0,0x000500af,0x00000033,0x0000020b,0x0000020a,0x00000055, - 0x0004003d,0x00000006,0x0000020c,0x000000c0,0x000500b1,0x00000033,0x0000020d,0x0000020c, - 0x00000026,0x000500a7,0x00000033,0x0000020e,0x0000020b,0x0000020d,0x0004003d,0x00000006, - 0x0000020f,0x000000b6,0x000500af,0x00000033,0x00000210,0x0000020f,0x00000055,0x000500a7, - 0x00000033,0x00000211,0x0000020e,0x00000210,0x0004003d,0x00000006,0x00000212,0x000000b6, - 0x000500b1,0x00000033,0x00000213,0x00000212,0x00000028,0x000500a7,0x00000033,0x00000214, - 0x00000211,0x00000213,0x000300f7,0x00000216,0x00000000,0x000400fa,0x00000214,0x00000215, - 0x00000216,0x000200f8,0x00000215,0x0004003d,0x00000006,0x00000217,0x00000024,0x0004003d, - 0x00000006,0x00000218,0x000000cc,0x00050084,0x00000006,0x0000021a,0x00000218,0x00000219, - 0x00050080,0x00000006,0x0000021b,0x00000217,0x0000021a,0x0004003d,0x00000006,0x0000021c, - 0x000000c0,0x00050084,0x00000006,0x0000021d,0x0000021c,0x00000028,0x00050080,0x00000006, - 0x0000021e,0x0000021b,0x0000021d,0x0004003d,0x00000006,0x0000021f,0x000000b6,0x00050080, - 0x00000006,0x00000220,0x0000021e,0x0000021f,0x00060041,0x000000ed,0x00000221,0x000000e2, - 0x00000055,0x00000220,0x0004003d,0x00000047,0x00000222,0x00000221,0x00050041,0x000000f0, - 0x00000223,0x0000005b,0x00000013,0x0003003e,0x00000223,0x00000222,0x000200f9,0x00000216, - 0x000200f8,0x00000216,0x0004003d,0x00000006,0x00000224,0x000000b0,0x0004003d,0x00000006, - 0x00000225,0x00000054,0x00050084,0x00000006,0x00000226,0x00000225,0x00000021,0x00050080, - 0x00000006,0x00000227,0x00000226,0x00000124,0x0005008b,0x00000006,0x00000228,0x00000227, - 0x000000bb,0x00050084,0x00000006,0x00000229,0x00000228,0x000000bd,0x00050080,0x00000006, - 0x0000022a,0x00000224,0x00000229,0x0003003e,0x000000b6,0x0000022a,0x0004003d,0x00000006, - 0x0000022b,0x000000aa,0x0004003d,0x00000006,0x0000022c,0x00000054,0x00050084,0x00000006, - 0x0000022d,0x0000022c,0x00000021,0x00050080,0x00000006,0x0000022e,0x0000022d,0x00000124, - 0x0005008b,0x00000006,0x00000230,0x0000022e,0x0000022f,0x00050087,0x00000006,0x00000231, - 0x00000230,0x000000bb,0x00050084,0x00000006,0x00000232,0x00000231,0x000000c9,0x00050080, - 0x00000006,0x00000233,0x0000022b,0x00000232,0x0003003e,0x000000c0,0x00000233,0x0004003d, - 0x00000006,0x00000234,0x00000054,0x00050084,0x00000006,0x00000235,0x00000234,0x00000021, - 0x00050080,0x00000006,0x00000236,0x00000235,0x00000124,0x00050087,0x00000006,0x00000238, - 0x00000236,0x00000237,0x0003003e,0x000000cc,0x00000238,0x0004003d,0x00000006,0x00000239, - 0x000000c0,0x000500af,0x00000033,0x0000023a,0x00000239,0x00000055,0x0004003d,0x00000006, - 0x0000023b,0x000000c0,0x000500b1,0x00000033,0x0000023c,0x0000023b,0x00000026,0x000500a7, - 0x00000033,0x0000023d,0x0000023a,0x0000023c,0x0004003d,0x00000006,0x0000023e,0x000000b6, - 0x000500af,0x00000033,0x0000023f,0x0000023e,0x00000055,0x000500a7,0x00000033,0x00000240, - 0x0000023d,0x0000023f,0x0004003d,0x00000006,0x00000241,0x000000b6,0x000500b1,0x00000033, - 0x00000242,0x00000241,0x00000028,0x000500a7,0x00000033,0x00000243,0x00000240,0x00000242, - 0x000300f7,0x00000245,0x00000000,0x000400fa,0x00000243,0x00000244,0x00000245,0x000200f8, - 0x00000244,0x0004003d,0x00000006,0x00000246,0x00000024,0x0004003d,0x00000006,0x00000247, - 0x000000cc,0x00050084,0x00000006,0x00000249,0x00000247,0x00000248,0x00050080,0x00000006, - 0x0000024a,0x00000246,0x00000249,0x0004003d,0x00000006,0x0000024b,0x000000c0,0x00050084, - 0x00000006,0x0000024c,0x0000024b,0x00000028,0x00050080,0x00000006,0x0000024d,0x0000024a, - 0x0000024c,0x0004003d,0x00000006,0x0000024e,0x000000b6,0x00050080,0x00000006,0x0000024f, - 0x0000024d,0x0000024e,0x00060041,0x000000ed,0x00000250,0x000000e2,0x00000055,0x0000024f, - 0x0004003d,0x00000047,0x00000251,0x00000250,0x00050041,0x000000f0,0x00000252,0x0000005b, - 0x00000018,0x0003003e,0x00000252,0x00000251,0x000200f9,0x00000245,0x000200f8,0x00000245, - 0x0004003d,0x00000006,0x00000253,0x000000b0,0x0004003d,0x00000006,0x00000254,0x00000054, - 0x00050084,0x00000006,0x00000255,0x00000254,0x00000021,0x00050080,0x00000006,0x00000256, - 0x00000255,0x00000154,0x0005008b,0x00000006,0x00000257,0x00000256,0x000000bb,0x00050084, - 0x00000006,0x00000258,0x00000257,0x000000bd,0x00050080,0x00000006,0x00000259,0x00000253, - 0x00000258,0x0003003e,0x000000b6,0x00000259,0x0004003d,0x00000006,0x0000025a,0x000000aa, - 0x0004003d,0x00000006,0x0000025b,0x00000054,0x00050084,0x00000006,0x0000025c,0x0000025b, - 0x00000021,0x00050080,0x00000006,0x0000025d,0x0000025c,0x00000154,0x0005008b,0x00000006, - 0x0000025f,0x0000025d,0x0000025e,0x00050087,0x00000006,0x00000260,0x0000025f,0x000000bb, - 0x00050084,0x00000006,0x00000261,0x00000260,0x000000c9,0x00050080,0x00000006,0x00000262, - 0x0000025a,0x00000261,0x0003003e,0x000000c0,0x00000262,0x0004003d,0x00000006,0x00000263, - 0x00000054,0x00050084,0x00000006,0x00000264,0x00000263,0x00000021,0x00050080,0x00000006, - 0x00000265,0x00000264,0x00000154,0x00050087,0x00000006,0x00000267,0x00000265,0x00000266, - 0x0003003e,0x000000cc,0x00000267,0x0004003d,0x00000006,0x00000268,0x000000c0,0x000500af, - 0x00000033,0x00000269,0x00000268,0x00000055,0x0004003d,0x00000006,0x0000026a,0x000000c0, - 0x000500b1,0x00000033,0x0000026b,0x0000026a,0x00000026,0x000500a7,0x00000033,0x0000026c, - 0x00000269,0x0000026b,0x0004003d,0x00000006,0x0000026d,0x000000b6,0x000500af,0x00000033, - 0x0000026e,0x0000026d,0x00000055,0x000500a7,0x00000033,0x0000026f,0x0000026c,0x0000026e, - 0x0004003d,0x00000006,0x00000270,0x000000b6,0x000500b1,0x00000033,0x00000271,0x00000270, - 0x00000028,0x000500a7,0x00000033,0x00000272,0x0000026f,0x00000271,0x000300f7,0x00000274, - 0x00000000,0x000400fa,0x00000272,0x00000273,0x00000274,0x000200f8,0x00000273,0x0004003d, - 0x00000006,0x00000275,0x00000024,0x0004003d,0x00000006,0x00000276,0x000000cc,0x00050084, - 0x00000006,0x00000278,0x00000276,0x00000277,0x00050080,0x00000006,0x00000279,0x00000275, - 0x00000278,0x0004003d,0x00000006,0x0000027a,0x000000c0,0x00050084,0x00000006,0x0000027b, - 0x0000027a,0x00000028,0x00050080,0x00000006,0x0000027c,0x00000279,0x0000027b,0x0004003d, - 0x00000006,0x0000027d,0x000000b6,0x00050080,0x00000006,0x0000027e,0x0000027c,0x0000027d, - 0x00060041,0x000000ed,0x0000027f,0x000000e2,0x00000055,0x0000027e,0x0004003d,0x00000047, - 0x00000280,0x0000027f,0x00050041,0x000000f0,0x00000281,0x0000005b,0x00000180,0x0003003e, - 0x00000281,0x00000280,0x000200f9,0x00000274,0x000200f8,0x00000274,0x0004003d,0x00000048, - 0x00000282,0x0000005e,0x0004003d,0x00000048,0x00000283,0x0000005b,0x00050094,0x00000047, - 0x00000284,0x00000282,0x00000283,0x00050041,0x000000f0,0x00000285,0x0000004a,0x00000013, - 0x0004003d,0x00000047,0x00000286,0x00000285,0x00050081,0x00000047,0x00000287,0x00000286, - 0x00000284,0x00050041,0x000000f0,0x00000288,0x0000004a,0x00000013,0x0003003e,0x00000288, - 0x00000287,0x0004003d,0x00000048,0x00000289,0x0000006a,0x0004003d,0x00000048,0x0000028a, - 0x0000005b,0x00050094,0x00000047,0x0000028b,0x00000289,0x0000028a,0x00050041,0x000000f0, - 0x0000028c,0x0000004d,0x00000013,0x0004003d,0x00000047,0x0000028d,0x0000028c,0x00050081, - 0x00000047,0x0000028e,0x0000028d,0x0000028b,0x00050041,0x000000f0,0x0000028f,0x0000004d, - 0x00000013,0x0003003e,0x0000028f,0x0000028e,0x0004003d,0x00000048,0x00000290,0x00000071, - 0x0004003d,0x00000048,0x00000291,0x0000005b,0x00050094,0x00000047,0x00000292,0x00000290, - 0x00000291,0x00050041,0x000000f0,0x00000293,0x0000004e,0x00000013,0x0004003d,0x00000047, - 0x00000294,0x00000293,0x00050081,0x00000047,0x00000295,0x00000294,0x00000292,0x00050041, - 0x000000f0,0x00000296,0x0000004e,0x00000013,0x0003003e,0x00000296,0x00000295,0x0004003d, - 0x00000048,0x00000297,0x00000078,0x0004003d,0x00000048,0x00000298,0x0000005b,0x00050094, - 0x00000047,0x00000299,0x00000297,0x00000298,0x00050041,0x000000f0,0x0000029a,0x0000004f, - 0x00000013,0x0004003d,0x00000047,0x0000029b,0x0000029a,0x00050081,0x00000047,0x0000029c, - 0x0000029b,0x00000299,0x00050041,0x000000f0,0x0000029d,0x0000004f,0x00000013,0x0003003e, - 0x0000029d,0x0000029c,0x0004003d,0x00000048,0x0000029e,0x0000007f,0x0004003d,0x00000048, - 0x0000029f,0x0000005b,0x00050094,0x00000047,0x000002a0,0x0000029e,0x0000029f,0x00050041, - 0x000000f0,0x000002a1,0x00000050,0x00000013,0x0004003d,0x00000047,0x000002a2,0x000002a1, - 0x00050081,0x00000047,0x000002a3,0x000002a2,0x000002a0,0x00050041,0x000000f0,0x000002a4, - 0x00000050,0x00000013,0x0003003e,0x000002a4,0x000002a3,0x0004003d,0x00000048,0x000002a5, - 0x00000086,0x0004003d,0x00000048,0x000002a6,0x0000005b,0x00050094,0x00000047,0x000002a7, - 0x000002a5,0x000002a6,0x00050041,0x000000f0,0x000002a8,0x00000051,0x00000013,0x0004003d, - 0x00000047,0x000002a9,0x000002a8,0x00050081,0x00000047,0x000002aa,0x000002a9,0x000002a7, - 0x00050041,0x000000f0,0x000002ab,0x00000051,0x00000013,0x0003003e,0x000002ab,0x000002aa, - 0x0004003d,0x00000048,0x000002ac,0x0000008d,0x0004003d,0x00000048,0x000002ad,0x0000005b, - 0x00050094,0x00000047,0x000002ae,0x000002ac,0x000002ad,0x00050041,0x000000f0,0x000002af, - 0x00000052,0x00000013,0x0004003d,0x00000047,0x000002b0,0x000002af,0x00050081,0x00000047, - 0x000002b1,0x000002b0,0x000002ae,0x00050041,0x000000f0,0x000002b2,0x00000052,0x00000013, - 0x0003003e,0x000002b2,0x000002b1,0x0004003d,0x00000048,0x000002b3,0x00000094,0x0004003d, - 0x00000048,0x000002b4,0x0000005b,0x00050094,0x00000047,0x000002b5,0x000002b3,0x000002b4, - 0x00050041,0x000000f0,0x000002b6,0x00000053,0x00000013,0x0004003d,0x00000047,0x000002b7, - 0x000002b6,0x00050081,0x00000047,0x000002b8,0x000002b7,0x000002b5,0x00050041,0x000000f0, - 0x000002b9,0x00000053,0x00000013,0x0003003e,0x000002b9,0x000002b8,0x0004003d,0x00000006, - 0x000002ba,0x00000020,0x00050080,0x00000006,0x000002bb,0x000002ba,0x00000124,0x0005008b, - 0x00000006,0x000002bc,0x000002bb,0x000000a4,0x0003003e,0x000000a1,0x000002bc,0x0004003d, - 0x00000006,0x000002bd,0x00000020,0x00050080,0x00000006,0x000002be,0x000002bd,0x00000124, - 0x00050087,0x00000006,0x000002bf,0x000002be,0x000000a4,0x0003003e,0x000000a6,0x000002bf, - 0x0004003d,0x00000006,0x000002c0,0x000000a6,0x00050084,0x00000006,0x000002c1,0x000002c0, - 0x000000ac,0x00050082,0x00000006,0x000002c2,0x000002c1,0x000000ae,0x0003003e,0x000000aa, - 0x000002c2,0x0004003d,0x00000006,0x000002c3,0x000000a1,0x00050084,0x00000006,0x000002c4, - 0x000002c3,0x000000b2,0x00050082,0x00000006,0x000002c5,0x000002c4,0x000000b4,0x0003003e, - 0x000000b0,0x000002c5,0x0004003d,0x00000006,0x000002c6,0x000000b0,0x0004003d,0x00000006, - 0x000002c7,0x00000054,0x00050084,0x00000006,0x000002c8,0x000002c7,0x00000021,0x00050080, - 0x00000006,0x000002c9,0x000002c8,0x00000055,0x0005008b,0x00000006,0x000002ca,0x000002c9, - 0x000000bb,0x00050084,0x00000006,0x000002cb,0x000002ca,0x000000bd,0x00050080,0x00000006, - 0x000002cc,0x000002c6,0x000002cb,0x0003003e,0x000000b6,0x000002cc,0x0004003d,0x00000006, - 0x000002cd,0x000000aa,0x0004003d,0x00000006,0x000002ce,0x00000054,0x00050084,0x00000006, - 0x000002cf,0x000002ce,0x00000021,0x00050080,0x00000006,0x000002d0,0x000002cf,0x00000055, - 0x0005008b,0x00000006,0x000002d2,0x000002d0,0x000002d1,0x00050087,0x00000006,0x000002d3, - 0x000002d2,0x000000bb,0x00050084,0x00000006,0x000002d4,0x000002d3,0x000000c9,0x00050080, - 0x00000006,0x000002d5,0x000002cd,0x000002d4,0x0003003e,0x000000c0,0x000002d5,0x0004003d, - 0x00000006,0x000002d6,0x00000054,0x00050084,0x00000006,0x000002d7,0x000002d6,0x00000021, - 0x00050080,0x00000006,0x000002d8,0x000002d7,0x00000055,0x00050087,0x00000006,0x000002da, - 0x000002d8,0x000002d9,0x0003003e,0x000000cc,0x000002da,0x0004003d,0x00000006,0x000002db, - 0x000000c0,0x000500af,0x00000033,0x000002dc,0x000002db,0x00000055,0x0004003d,0x00000006, - 0x000002dd,0x000000c0,0x000500b1,0x00000033,0x000002de,0x000002dd,0x00000026,0x000500a7, - 0x00000033,0x000002df,0x000002dc,0x000002de,0x0004003d,0x00000006,0x000002e0,0x000000b6, - 0x000500af,0x00000033,0x000002e1,0x000002e0,0x00000055,0x000500a7,0x00000033,0x000002e2, - 0x000002df,0x000002e1,0x0004003d,0x00000006,0x000002e3,0x000000b6,0x000500b1,0x00000033, - 0x000002e4,0x000002e3,0x00000028,0x000500a7,0x00000033,0x000002e5,0x000002e2,0x000002e4, - 0x000300f7,0x000002e7,0x00000000,0x000400fa,0x000002e5,0x000002e6,0x000002e7,0x000200f8, - 0x000002e6,0x0004003d,0x00000006,0x000002e8,0x00000024,0x0004003d,0x00000006,0x000002e9, - 0x000000cc,0x00050084,0x00000006,0x000002eb,0x000002e9,0x000002ea,0x00050080,0x00000006, - 0x000002ec,0x000002e8,0x000002eb,0x0004003d,0x00000006,0x000002ed,0x000000c0,0x00050084, - 0x00000006,0x000002ee,0x000002ed,0x00000028,0x00050080,0x00000006,0x000002ef,0x000002ec, - 0x000002ee,0x0004003d,0x00000006,0x000002f0,0x000000b6,0x00050080,0x00000006,0x000002f1, - 0x000002ef,0x000002f0,0x00060041,0x000000ed,0x000002f2,0x000000e2,0x00000055,0x000002f1, - 0x0004003d,0x00000047,0x000002f3,0x000002f2,0x00050041,0x000000f0,0x000002f4,0x0000005c, - 0x0000000d,0x0003003e,0x000002f4,0x000002f3,0x000200f9,0x000002e7,0x000200f8,0x000002e7, - 0x0004003d,0x00000006,0x000002f5,0x000000b0,0x0004003d,0x00000006,0x000002f6,0x00000054, - 0x00050084,0x00000006,0x000002f7,0x000002f6,0x00000021,0x00050080,0x00000006,0x000002f8, - 0x000002f7,0x0000009b,0x0005008b,0x00000006,0x000002f9,0x000002f8,0x000000bb,0x00050084, - 0x00000006,0x000002fa,0x000002f9,0x000000bd,0x00050080,0x00000006,0x000002fb,0x000002f5, - 0x000002fa,0x0003003e,0x000000b6,0x000002fb,0x0004003d,0x00000006,0x000002fc,0x000000aa, - 0x0004003d,0x00000006,0x000002fd,0x00000054,0x00050084,0x00000006,0x000002fe,0x000002fd, - 0x00000021,0x00050080,0x00000006,0x000002ff,0x000002fe,0x0000009b,0x0005008b,0x00000006, - 0x00000301,0x000002ff,0x00000300,0x00050087,0x00000006,0x00000302,0x00000301,0x000000bb, - 0x00050084,0x00000006,0x00000303,0x00000302,0x000000c9,0x00050080,0x00000006,0x00000304, - 0x000002fc,0x00000303,0x0003003e,0x000000c0,0x00000304,0x0004003d,0x00000006,0x00000305, - 0x00000054,0x00050084,0x00000006,0x00000306,0x00000305,0x00000021,0x00050080,0x00000006, - 0x00000307,0x00000306,0x0000009b,0x00050087,0x00000006,0x00000309,0x00000307,0x00000308, - 0x0003003e,0x000000cc,0x00000309,0x0004003d,0x00000006,0x0000030a,0x000000c0,0x000500af, - 0x00000033,0x0000030b,0x0000030a,0x00000055,0x0004003d,0x00000006,0x0000030c,0x000000c0, - 0x000500b1,0x00000033,0x0000030d,0x0000030c,0x00000026,0x000500a7,0x00000033,0x0000030e, - 0x0000030b,0x0000030d,0x0004003d,0x00000006,0x0000030f,0x000000b6,0x000500af,0x00000033, - 0x00000310,0x0000030f,0x00000055,0x000500a7,0x00000033,0x00000311,0x0000030e,0x00000310, - 0x0004003d,0x00000006,0x00000312,0x000000b6,0x000500b1,0x00000033,0x00000313,0x00000312, - 0x00000028,0x000500a7,0x00000033,0x00000314,0x00000311,0x00000313,0x000300f7,0x00000316, - 0x00000000,0x000400fa,0x00000314,0x00000315,0x00000316,0x000200f8,0x00000315,0x0004003d, - 0x00000006,0x00000317,0x00000024,0x0004003d,0x00000006,0x00000318,0x000000cc,0x00050084, - 0x00000006,0x0000031a,0x00000318,0x00000319,0x00050080,0x00000006,0x0000031b,0x00000317, - 0x0000031a,0x0004003d,0x00000006,0x0000031c,0x000000c0,0x00050084,0x00000006,0x0000031d, - 0x0000031c,0x00000028,0x00050080,0x00000006,0x0000031e,0x0000031b,0x0000031d,0x0004003d, - 0x00000006,0x0000031f,0x000000b6,0x00050080,0x00000006,0x00000320,0x0000031e,0x0000031f, - 0x00060041,0x000000ed,0x00000321,0x000000e2,0x00000055,0x00000320,0x0004003d,0x00000047, - 0x00000322,0x00000321,0x00050041,0x000000f0,0x00000323,0x0000005c,0x00000013,0x0003003e, - 0x00000323,0x00000322,0x000200f9,0x00000316,0x000200f8,0x00000316,0x0004003d,0x00000006, - 0x00000324,0x000000b0,0x0004003d,0x00000006,0x00000325,0x00000054,0x00050084,0x00000006, - 0x00000326,0x00000325,0x00000021,0x00050080,0x00000006,0x00000327,0x00000326,0x00000124, - 0x0005008b,0x00000006,0x00000328,0x00000327,0x000000bb,0x00050084,0x00000006,0x00000329, - 0x00000328,0x000000bd,0x00050080,0x00000006,0x0000032a,0x00000324,0x00000329,0x0003003e, - 0x000000b6,0x0000032a,0x0004003d,0x00000006,0x0000032b,0x000000aa,0x0004003d,0x00000006, - 0x0000032c,0x00000054,0x00050084,0x00000006,0x0000032d,0x0000032c,0x00000021,0x00050080, - 0x00000006,0x0000032e,0x0000032d,0x00000124,0x0005008b,0x00000006,0x00000330,0x0000032e, - 0x0000032f,0x00050087,0x00000006,0x00000331,0x00000330,0x000000bb,0x00050084,0x00000006, - 0x00000332,0x00000331,0x000000c9,0x00050080,0x00000006,0x00000333,0x0000032b,0x00000332, - 0x0003003e,0x000000c0,0x00000333,0x0004003d,0x00000006,0x00000334,0x00000054,0x00050084, - 0x00000006,0x00000335,0x00000334,0x00000021,0x00050080,0x00000006,0x00000336,0x00000335, - 0x00000124,0x00050087,0x00000006,0x00000338,0x00000336,0x00000337,0x0003003e,0x000000cc, - 0x00000338,0x0004003d,0x00000006,0x00000339,0x000000c0,0x000500af,0x00000033,0x0000033a, - 0x00000339,0x00000055,0x0004003d,0x00000006,0x0000033b,0x000000c0,0x000500b1,0x00000033, - 0x0000033c,0x0000033b,0x00000026,0x000500a7,0x00000033,0x0000033d,0x0000033a,0x0000033c, - 0x0004003d,0x00000006,0x0000033e,0x000000b6,0x000500af,0x00000033,0x0000033f,0x0000033e, - 0x00000055,0x000500a7,0x00000033,0x00000340,0x0000033d,0x0000033f,0x0004003d,0x00000006, - 0x00000341,0x000000b6,0x000500b1,0x00000033,0x00000342,0x00000341,0x00000028,0x000500a7, - 0x00000033,0x00000343,0x00000340,0x00000342,0x000300f7,0x00000345,0x00000000,0x000400fa, - 0x00000343,0x00000344,0x00000345,0x000200f8,0x00000344,0x0004003d,0x00000006,0x00000346, - 0x00000024,0x0004003d,0x00000006,0x00000347,0x000000cc,0x00050084,0x00000006,0x00000349, - 0x00000347,0x00000348,0x00050080,0x00000006,0x0000034a,0x00000346,0x00000349,0x0004003d, - 0x00000006,0x0000034b,0x000000c0,0x00050084,0x00000006,0x0000034c,0x0000034b,0x00000028, - 0x00050080,0x00000006,0x0000034d,0x0000034a,0x0000034c,0x0004003d,0x00000006,0x0000034e, - 0x000000b6,0x00050080,0x00000006,0x0000034f,0x0000034d,0x0000034e,0x00060041,0x000000ed, - 0x00000350,0x000000e2,0x00000055,0x0000034f,0x0004003d,0x00000047,0x00000351,0x00000350, - 0x00050041,0x000000f0,0x00000352,0x0000005c,0x00000018,0x0003003e,0x00000352,0x00000351, - 0x000200f9,0x00000345,0x000200f8,0x00000345,0x0004003d,0x00000006,0x00000353,0x000000b0, - 0x0004003d,0x00000006,0x00000354,0x00000054,0x00050084,0x00000006,0x00000355,0x00000354, - 0x00000021,0x00050080,0x00000006,0x00000356,0x00000355,0x00000154,0x0005008b,0x00000006, - 0x00000357,0x00000356,0x000000bb,0x00050084,0x00000006,0x00000358,0x00000357,0x000000bd, - 0x00050080,0x00000006,0x00000359,0x00000353,0x00000358,0x0003003e,0x000000b6,0x00000359, - 0x0004003d,0x00000006,0x0000035a,0x000000aa,0x0004003d,0x00000006,0x0000035b,0x00000054, - 0x00050084,0x00000006,0x0000035c,0x0000035b,0x00000021,0x00050080,0x00000006,0x0000035d, - 0x0000035c,0x00000154,0x0005008b,0x00000006,0x0000035f,0x0000035d,0x0000035e,0x00050087, - 0x00000006,0x00000360,0x0000035f,0x000000bb,0x00050084,0x00000006,0x00000361,0x00000360, - 0x000000c9,0x00050080,0x00000006,0x00000362,0x0000035a,0x00000361,0x0003003e,0x000000c0, - 0x00000362,0x0004003d,0x00000006,0x00000363,0x00000054,0x00050084,0x00000006,0x00000364, - 0x00000363,0x00000021,0x00050080,0x00000006,0x00000365,0x00000364,0x00000154,0x00050087, - 0x00000006,0x00000367,0x00000365,0x00000366,0x0003003e,0x000000cc,0x00000367,0x0004003d, - 0x00000006,0x00000368,0x000000c0,0x000500af,0x00000033,0x00000369,0x00000368,0x00000055, - 0x0004003d,0x00000006,0x0000036a,0x000000c0,0x000500b1,0x00000033,0x0000036b,0x0000036a, - 0x00000026,0x000500a7,0x00000033,0x0000036c,0x00000369,0x0000036b,0x0004003d,0x00000006, - 0x0000036d,0x000000b6,0x000500af,0x00000033,0x0000036e,0x0000036d,0x00000055,0x000500a7, - 0x00000033,0x0000036f,0x0000036c,0x0000036e,0x0004003d,0x00000006,0x00000370,0x000000b6, - 0x000500b1,0x00000033,0x00000371,0x00000370,0x00000028,0x000500a7,0x00000033,0x00000372, - 0x0000036f,0x00000371,0x000300f7,0x00000374,0x00000000,0x000400fa,0x00000372,0x00000373, - 0x00000374,0x000200f8,0x00000373,0x0004003d,0x00000006,0x00000375,0x00000024,0x0004003d, - 0x00000006,0x00000376,0x000000cc,0x00050084,0x00000006,0x00000378,0x00000376,0x00000377, - 0x00050080,0x00000006,0x00000379,0x00000375,0x00000378,0x0004003d,0x00000006,0x0000037a, - 0x000000c0,0x00050084,0x00000006,0x0000037b,0x0000037a,0x00000028,0x00050080,0x00000006, - 0x0000037c,0x00000379,0x0000037b,0x0004003d,0x00000006,0x0000037d,0x000000b6,0x00050080, - 0x00000006,0x0000037e,0x0000037c,0x0000037d,0x00060041,0x000000ed,0x0000037f,0x000000e2, - 0x00000055,0x0000037e,0x0004003d,0x00000047,0x00000380,0x0000037f,0x00050041,0x000000f0, - 0x00000381,0x0000005c,0x00000180,0x0003003e,0x00000381,0x00000380,0x000200f9,0x00000374, - 0x000200f8,0x00000374,0x0004003d,0x00000048,0x00000382,0x0000005e,0x0004003d,0x00000048, - 0x00000383,0x0000005c,0x00050094,0x00000047,0x00000384,0x00000382,0x00000383,0x00050041, - 0x000000f0,0x00000385,0x0000004a,0x00000018,0x0004003d,0x00000047,0x00000386,0x00000385, - 0x00050081,0x00000047,0x00000387,0x00000386,0x00000384,0x00050041,0x000000f0,0x00000388, - 0x0000004a,0x00000018,0x0003003e,0x00000388,0x00000387,0x0004003d,0x00000048,0x00000389, - 0x0000006a,0x0004003d,0x00000048,0x0000038a,0x0000005c,0x00050094,0x00000047,0x0000038b, - 0x00000389,0x0000038a,0x00050041,0x000000f0,0x0000038c,0x0000004d,0x00000018,0x0004003d, - 0x00000047,0x0000038d,0x0000038c,0x00050081,0x00000047,0x0000038e,0x0000038d,0x0000038b, - 0x00050041,0x000000f0,0x0000038f,0x0000004d,0x00000018,0x0003003e,0x0000038f,0x0000038e, - 0x0004003d,0x00000048,0x00000390,0x00000071,0x0004003d,0x00000048,0x00000391,0x0000005c, - 0x00050094,0x00000047,0x00000392,0x00000390,0x00000391,0x00050041,0x000000f0,0x00000393, - 0x0000004e,0x00000018,0x0004003d,0x00000047,0x00000394,0x00000393,0x00050081,0x00000047, - 0x00000395,0x00000394,0x00000392,0x00050041,0x000000f0,0x00000396,0x0000004e,0x00000018, - 0x0003003e,0x00000396,0x00000395,0x0004003d,0x00000048,0x00000397,0x00000078,0x0004003d, - 0x00000048,0x00000398,0x0000005c,0x00050094,0x00000047,0x00000399,0x00000397,0x00000398, - 0x00050041,0x000000f0,0x0000039a,0x0000004f,0x00000018,0x0004003d,0x00000047,0x0000039b, - 0x0000039a,0x00050081,0x00000047,0x0000039c,0x0000039b,0x00000399,0x00050041,0x000000f0, - 0x0000039d,0x0000004f,0x00000018,0x0003003e,0x0000039d,0x0000039c,0x0004003d,0x00000048, - 0x0000039e,0x0000007f,0x0004003d,0x00000048,0x0000039f,0x0000005c,0x00050094,0x00000047, - 0x000003a0,0x0000039e,0x0000039f,0x00050041,0x000000f0,0x000003a1,0x00000050,0x00000018, - 0x0004003d,0x00000047,0x000003a2,0x000003a1,0x00050081,0x00000047,0x000003a3,0x000003a2, - 0x000003a0,0x00050041,0x000000f0,0x000003a4,0x00000050,0x00000018,0x0003003e,0x000003a4, - 0x000003a3,0x0004003d,0x00000048,0x000003a5,0x00000086,0x0004003d,0x00000048,0x000003a6, - 0x0000005c,0x00050094,0x00000047,0x000003a7,0x000003a5,0x000003a6,0x00050041,0x000000f0, - 0x000003a8,0x00000051,0x00000018,0x0004003d,0x00000047,0x000003a9,0x000003a8,0x00050081, - 0x00000047,0x000003aa,0x000003a9,0x000003a7,0x00050041,0x000000f0,0x000003ab,0x00000051, - 0x00000018,0x0003003e,0x000003ab,0x000003aa,0x0004003d,0x00000048,0x000003ac,0x0000008d, - 0x0004003d,0x00000048,0x000003ad,0x0000005c,0x00050094,0x00000047,0x000003ae,0x000003ac, - 0x000003ad,0x00050041,0x000000f0,0x000003af,0x00000052,0x00000018,0x0004003d,0x00000047, - 0x000003b0,0x000003af,0x00050081,0x00000047,0x000003b1,0x000003b0,0x000003ae,0x00050041, - 0x000000f0,0x000003b2,0x00000052,0x00000018,0x0003003e,0x000003b2,0x000003b1,0x0004003d, - 0x00000048,0x000003b3,0x00000094,0x0004003d,0x00000048,0x000003b4,0x0000005c,0x00050094, - 0x00000047,0x000003b5,0x000003b3,0x000003b4,0x00050041,0x000000f0,0x000003b6,0x00000053, - 0x00000018,0x0004003d,0x00000047,0x000003b7,0x000003b6,0x00050081,0x00000047,0x000003b8, - 0x000003b7,0x000003b5,0x00050041,0x000000f0,0x000003b9,0x00000053,0x00000018,0x0003003e, - 0x000003b9,0x000003b8,0x0004003d,0x00000006,0x000003ba,0x00000020,0x00050080,0x00000006, - 0x000003bb,0x000003ba,0x00000154,0x0005008b,0x00000006,0x000003bc,0x000003bb,0x000000a4, - 0x0003003e,0x000000a1,0x000003bc,0x0004003d,0x00000006,0x000003bd,0x00000020,0x00050080, - 0x00000006,0x000003be,0x000003bd,0x00000154,0x00050087,0x00000006,0x000003bf,0x000003be, - 0x000000a4,0x0003003e,0x000000a6,0x000003bf,0x0004003d,0x00000006,0x000003c0,0x000000a6, - 0x00050084,0x00000006,0x000003c1,0x000003c0,0x000000ac,0x00050082,0x00000006,0x000003c2, - 0x000003c1,0x000000ae,0x0003003e,0x000000aa,0x000003c2,0x0004003d,0x00000006,0x000003c3, - 0x000000a1,0x00050084,0x00000006,0x000003c4,0x000003c3,0x000000b2,0x00050082,0x00000006, - 0x000003c5,0x000003c4,0x000000b4,0x0003003e,0x000000b0,0x000003c5,0x0004003d,0x00000006, - 0x000003c6,0x000000b0,0x0004003d,0x00000006,0x000003c7,0x00000054,0x00050084,0x00000006, - 0x000003c8,0x000003c7,0x00000021,0x00050080,0x00000006,0x000003c9,0x000003c8,0x00000055, - 0x0005008b,0x00000006,0x000003ca,0x000003c9,0x000000bb,0x00050084,0x00000006,0x000003cb, - 0x000003ca,0x000000bd,0x00050080,0x00000006,0x000003cc,0x000003c6,0x000003cb,0x0003003e, - 0x000000b6,0x000003cc,0x0004003d,0x00000006,0x000003cd,0x000000aa,0x0004003d,0x00000006, - 0x000003ce,0x00000054,0x00050084,0x00000006,0x000003cf,0x000003ce,0x00000021,0x00050080, - 0x00000006,0x000003d0,0x000003cf,0x00000055,0x0005008b,0x00000006,0x000003d2,0x000003d0, - 0x000003d1,0x00050087,0x00000006,0x000003d3,0x000003d2,0x000000bb,0x00050084,0x00000006, - 0x000003d4,0x000003d3,0x000000c9,0x00050080,0x00000006,0x000003d5,0x000003cd,0x000003d4, - 0x0003003e,0x000000c0,0x000003d5,0x0004003d,0x00000006,0x000003d6,0x00000054,0x00050084, - 0x00000006,0x000003d7,0x000003d6,0x00000021,0x00050080,0x00000006,0x000003d8,0x000003d7, - 0x00000055,0x00050087,0x00000006,0x000003da,0x000003d8,0x000003d9,0x0003003e,0x000000cc, - 0x000003da,0x0004003d,0x00000006,0x000003db,0x000000c0,0x000500af,0x00000033,0x000003dc, - 0x000003db,0x00000055,0x0004003d,0x00000006,0x000003dd,0x000000c0,0x000500b1,0x00000033, - 0x000003de,0x000003dd,0x00000026,0x000500a7,0x00000033,0x000003df,0x000003dc,0x000003de, - 0x0004003d,0x00000006,0x000003e0,0x000000b6,0x000500af,0x00000033,0x000003e1,0x000003e0, - 0x00000055,0x000500a7,0x00000033,0x000003e2,0x000003df,0x000003e1,0x0004003d,0x00000006, - 0x000003e3,0x000000b6,0x000500b1,0x00000033,0x000003e4,0x000003e3,0x00000028,0x000500a7, - 0x00000033,0x000003e5,0x000003e2,0x000003e4,0x000300f7,0x000003e7,0x00000000,0x000400fa, - 0x000003e5,0x000003e6,0x000003e7,0x000200f8,0x000003e6,0x0004003d,0x00000006,0x000003e8, - 0x00000024,0x0004003d,0x00000006,0x000003e9,0x000000cc,0x00050084,0x00000006,0x000003eb, - 0x000003e9,0x000003ea,0x00050080,0x00000006,0x000003ec,0x000003e8,0x000003eb,0x0004003d, - 0x00000006,0x000003ed,0x000000c0,0x00050084,0x00000006,0x000003ee,0x000003ed,0x00000028, - 0x00050080,0x00000006,0x000003ef,0x000003ec,0x000003ee,0x0004003d,0x00000006,0x000003f0, - 0x000000b6,0x00050080,0x00000006,0x000003f1,0x000003ef,0x000003f0,0x00060041,0x000000ed, - 0x000003f2,0x000000e2,0x00000055,0x000003f1,0x0004003d,0x00000047,0x000003f3,0x000003f2, - 0x00050041,0x000000f0,0x000003f4,0x0000005d,0x0000000d,0x0003003e,0x000003f4,0x000003f3, - 0x000200f9,0x000003e7,0x000200f8,0x000003e7,0x0004003d,0x00000006,0x000003f5,0x000000b0, - 0x0004003d,0x00000006,0x000003f6,0x00000054,0x00050084,0x00000006,0x000003f7,0x000003f6, - 0x00000021,0x00050080,0x00000006,0x000003f8,0x000003f7,0x0000009b,0x0005008b,0x00000006, - 0x000003f9,0x000003f8,0x000000bb,0x00050084,0x00000006,0x000003fa,0x000003f9,0x000000bd, - 0x00050080,0x00000006,0x000003fb,0x000003f5,0x000003fa,0x0003003e,0x000000b6,0x000003fb, - 0x0004003d,0x00000006,0x000003fc,0x000000aa,0x0004003d,0x00000006,0x000003fd,0x00000054, - 0x00050084,0x00000006,0x000003fe,0x000003fd,0x00000021,0x00050080,0x00000006,0x000003ff, - 0x000003fe,0x0000009b,0x0005008b,0x00000006,0x00000401,0x000003ff,0x00000400,0x00050087, - 0x00000006,0x00000402,0x00000401,0x000000bb,0x00050084,0x00000006,0x00000403,0x00000402, - 0x000000c9,0x00050080,0x00000006,0x00000404,0x000003fc,0x00000403,0x0003003e,0x000000c0, - 0x00000404,0x0004003d,0x00000006,0x00000405,0x00000054,0x00050084,0x00000006,0x00000406, - 0x00000405,0x00000021,0x00050080,0x00000006,0x00000407,0x00000406,0x0000009b,0x00050087, - 0x00000006,0x00000409,0x00000407,0x00000408,0x0003003e,0x000000cc,0x00000409,0x0004003d, - 0x00000006,0x0000040a,0x000000c0,0x000500af,0x00000033,0x0000040b,0x0000040a,0x00000055, - 0x0004003d,0x00000006,0x0000040c,0x000000c0,0x000500b1,0x00000033,0x0000040d,0x0000040c, - 0x00000026,0x000500a7,0x00000033,0x0000040e,0x0000040b,0x0000040d,0x0004003d,0x00000006, - 0x0000040f,0x000000b6,0x000500af,0x00000033,0x00000410,0x0000040f,0x00000055,0x000500a7, - 0x00000033,0x00000411,0x0000040e,0x00000410,0x0004003d,0x00000006,0x00000412,0x000000b6, - 0x000500b1,0x00000033,0x00000413,0x00000412,0x00000028,0x000500a7,0x00000033,0x00000414, - 0x00000411,0x00000413,0x000300f7,0x00000416,0x00000000,0x000400fa,0x00000414,0x00000415, - 0x00000416,0x000200f8,0x00000415,0x0004003d,0x00000006,0x00000417,0x00000024,0x0004003d, - 0x00000006,0x00000418,0x000000cc,0x00050084,0x00000006,0x0000041a,0x00000418,0x00000419, - 0x00050080,0x00000006,0x0000041b,0x00000417,0x0000041a,0x0004003d,0x00000006,0x0000041c, - 0x000000c0,0x00050084,0x00000006,0x0000041d,0x0000041c,0x00000028,0x00050080,0x00000006, - 0x0000041e,0x0000041b,0x0000041d,0x0004003d,0x00000006,0x0000041f,0x000000b6,0x00050080, - 0x00000006,0x00000420,0x0000041e,0x0000041f,0x00060041,0x000000ed,0x00000421,0x000000e2, - 0x00000055,0x00000420,0x0004003d,0x00000047,0x00000422,0x00000421,0x00050041,0x000000f0, - 0x00000423,0x0000005d,0x00000013,0x0003003e,0x00000423,0x00000422,0x000200f9,0x00000416, - 0x000200f8,0x00000416,0x0004003d,0x00000006,0x00000424,0x000000b0,0x0004003d,0x00000006, - 0x00000425,0x00000054,0x00050084,0x00000006,0x00000426,0x00000425,0x00000021,0x00050080, - 0x00000006,0x00000427,0x00000426,0x00000124,0x0005008b,0x00000006,0x00000428,0x00000427, - 0x000000bb,0x00050084,0x00000006,0x00000429,0x00000428,0x000000bd,0x00050080,0x00000006, - 0x0000042a,0x00000424,0x00000429,0x0003003e,0x000000b6,0x0000042a,0x0004003d,0x00000006, - 0x0000042b,0x000000aa,0x0004003d,0x00000006,0x0000042c,0x00000054,0x00050084,0x00000006, - 0x0000042d,0x0000042c,0x00000021,0x00050080,0x00000006,0x0000042e,0x0000042d,0x00000124, - 0x0005008b,0x00000006,0x00000430,0x0000042e,0x0000042f,0x00050087,0x00000006,0x00000431, - 0x00000430,0x000000bb,0x00050084,0x00000006,0x00000432,0x00000431,0x000000c9,0x00050080, - 0x00000006,0x00000433,0x0000042b,0x00000432,0x0003003e,0x000000c0,0x00000433,0x0004003d, - 0x00000006,0x00000434,0x00000054,0x00050084,0x00000006,0x00000435,0x00000434,0x00000021, - 0x00050080,0x00000006,0x00000436,0x00000435,0x00000124,0x00050087,0x00000006,0x00000438, - 0x00000436,0x00000437,0x0003003e,0x000000cc,0x00000438,0x0004003d,0x00000006,0x00000439, - 0x000000c0,0x000500af,0x00000033,0x0000043a,0x00000439,0x00000055,0x0004003d,0x00000006, - 0x0000043b,0x000000c0,0x000500b1,0x00000033,0x0000043c,0x0000043b,0x00000026,0x000500a7, - 0x00000033,0x0000043d,0x0000043a,0x0000043c,0x0004003d,0x00000006,0x0000043e,0x000000b6, - 0x000500af,0x00000033,0x0000043f,0x0000043e,0x00000055,0x000500a7,0x00000033,0x00000440, - 0x0000043d,0x0000043f,0x0004003d,0x00000006,0x00000441,0x000000b6,0x000500b1,0x00000033, - 0x00000442,0x00000441,0x00000028,0x000500a7,0x00000033,0x00000443,0x00000440,0x00000442, - 0x000300f7,0x00000445,0x00000000,0x000400fa,0x00000443,0x00000444,0x00000445,0x000200f8, - 0x00000444,0x0004003d,0x00000006,0x00000446,0x00000024,0x0004003d,0x00000006,0x00000447, - 0x000000cc,0x00050084,0x00000006,0x00000449,0x00000447,0x00000448,0x00050080,0x00000006, - 0x0000044a,0x00000446,0x00000449,0x0004003d,0x00000006,0x0000044b,0x000000c0,0x00050084, - 0x00000006,0x0000044c,0x0000044b,0x00000028,0x00050080,0x00000006,0x0000044d,0x0000044a, - 0x0000044c,0x0004003d,0x00000006,0x0000044e,0x000000b6,0x00050080,0x00000006,0x0000044f, - 0x0000044d,0x0000044e,0x00060041,0x000000ed,0x00000450,0x000000e2,0x00000055,0x0000044f, - 0x0004003d,0x00000047,0x00000451,0x00000450,0x00050041,0x000000f0,0x00000452,0x0000005d, - 0x00000018,0x0003003e,0x00000452,0x00000451,0x000200f9,0x00000445,0x000200f8,0x00000445, - 0x0004003d,0x00000006,0x00000453,0x000000b0,0x0004003d,0x00000006,0x00000454,0x00000054, - 0x00050084,0x00000006,0x00000455,0x00000454,0x00000021,0x00050080,0x00000006,0x00000456, - 0x00000455,0x00000154,0x0005008b,0x00000006,0x00000457,0x00000456,0x000000bb,0x00050084, - 0x00000006,0x00000458,0x00000457,0x000000bd,0x00050080,0x00000006,0x00000459,0x00000453, - 0x00000458,0x0003003e,0x000000b6,0x00000459,0x0004003d,0x00000006,0x0000045a,0x000000aa, - 0x0004003d,0x00000006,0x0000045b,0x00000054,0x00050084,0x00000006,0x0000045c,0x0000045b, - 0x00000021,0x00050080,0x00000006,0x0000045d,0x0000045c,0x00000154,0x0005008b,0x00000006, - 0x0000045f,0x0000045d,0x0000045e,0x00050087,0x00000006,0x00000460,0x0000045f,0x000000bb, - 0x00050084,0x00000006,0x00000461,0x00000460,0x000000c9,0x00050080,0x00000006,0x00000462, - 0x0000045a,0x00000461,0x0003003e,0x000000c0,0x00000462,0x0004003d,0x00000006,0x00000463, - 0x00000054,0x00050084,0x00000006,0x00000464,0x00000463,0x00000021,0x00050080,0x00000006, - 0x00000465,0x00000464,0x00000154,0x00050087,0x00000006,0x00000467,0x00000465,0x00000466, - 0x0003003e,0x000000cc,0x00000467,0x0004003d,0x00000006,0x00000468,0x000000c0,0x000500af, - 0x00000033,0x00000469,0x00000468,0x00000055,0x0004003d,0x00000006,0x0000046a,0x000000c0, - 0x000500b1,0x00000033,0x0000046b,0x0000046a,0x00000026,0x000500a7,0x00000033,0x0000046c, - 0x00000469,0x0000046b,0x0004003d,0x00000006,0x0000046d,0x000000b6,0x000500af,0x00000033, - 0x0000046e,0x0000046d,0x00000055,0x000500a7,0x00000033,0x0000046f,0x0000046c,0x0000046e, - 0x0004003d,0x00000006,0x00000470,0x000000b6,0x000500b1,0x00000033,0x00000471,0x00000470, - 0x00000028,0x000500a7,0x00000033,0x00000472,0x0000046f,0x00000471,0x000300f7,0x00000474, - 0x00000000,0x000400fa,0x00000472,0x00000473,0x00000474,0x000200f8,0x00000473,0x0004003d, - 0x00000006,0x00000475,0x00000024,0x0004003d,0x00000006,0x00000476,0x000000cc,0x00050084, - 0x00000006,0x00000478,0x00000476,0x00000477,0x00050080,0x00000006,0x00000479,0x00000475, - 0x00000478,0x0004003d,0x00000006,0x0000047a,0x000000c0,0x00050084,0x00000006,0x0000047b, - 0x0000047a,0x00000028,0x00050080,0x00000006,0x0000047c,0x00000479,0x0000047b,0x0004003d, - 0x00000006,0x0000047d,0x000000b6,0x00050080,0x00000006,0x0000047e,0x0000047c,0x0000047d, - 0x00060041,0x000000ed,0x0000047f,0x000000e2,0x00000055,0x0000047e,0x0004003d,0x00000047, - 0x00000480,0x0000047f,0x00050041,0x000000f0,0x00000481,0x0000005d,0x00000180,0x0003003e, - 0x00000481,0x00000480,0x000200f9,0x00000474,0x000200f8,0x00000474,0x0004003d,0x00000048, - 0x00000482,0x0000005e,0x0004003d,0x00000048,0x00000483,0x0000005d,0x00050094,0x00000047, - 0x00000484,0x00000482,0x00000483,0x00050041,0x000000f0,0x00000485,0x0000004a,0x00000180, - 0x0004003d,0x00000047,0x00000486,0x00000485,0x00050081,0x00000047,0x00000487,0x00000486, - 0x00000484,0x00050041,0x000000f0,0x00000488,0x0000004a,0x00000180,0x0003003e,0x00000488, - 0x00000487,0x0004003d,0x00000048,0x00000489,0x0000006a,0x0004003d,0x00000048,0x0000048a, - 0x0000005d,0x00050094,0x00000047,0x0000048b,0x00000489,0x0000048a,0x00050041,0x000000f0, - 0x0000048c,0x0000004d,0x00000180,0x0004003d,0x00000047,0x0000048d,0x0000048c,0x00050081, - 0x00000047,0x0000048e,0x0000048d,0x0000048b,0x00050041,0x000000f0,0x0000048f,0x0000004d, - 0x00000180,0x0003003e,0x0000048f,0x0000048e,0x0004003d,0x00000048,0x00000490,0x00000071, - 0x0004003d,0x00000048,0x00000491,0x0000005d,0x00050094,0x00000047,0x00000492,0x00000490, - 0x00000491,0x00050041,0x000000f0,0x00000493,0x0000004e,0x00000180,0x0004003d,0x00000047, - 0x00000494,0x00000493,0x00050081,0x00000047,0x00000495,0x00000494,0x00000492,0x00050041, - 0x000000f0,0x00000496,0x0000004e,0x00000180,0x0003003e,0x00000496,0x00000495,0x0004003d, - 0x00000048,0x00000497,0x00000078,0x0004003d,0x00000048,0x00000498,0x0000005d,0x00050094, - 0x00000047,0x00000499,0x00000497,0x00000498,0x00050041,0x000000f0,0x0000049a,0x0000004f, - 0x00000180,0x0004003d,0x00000047,0x0000049b,0x0000049a,0x00050081,0x00000047,0x0000049c, - 0x0000049b,0x00000499,0x00050041,0x000000f0,0x0000049d,0x0000004f,0x00000180,0x0003003e, - 0x0000049d,0x0000049c,0x0004003d,0x00000048,0x0000049e,0x0000007f,0x0004003d,0x00000048, - 0x0000049f,0x0000005d,0x00050094,0x00000047,0x000004a0,0x0000049e,0x0000049f,0x00050041, - 0x000000f0,0x000004a1,0x00000050,0x00000180,0x0004003d,0x00000047,0x000004a2,0x000004a1, - 0x00050081,0x00000047,0x000004a3,0x000004a2,0x000004a0,0x00050041,0x000000f0,0x000004a4, - 0x00000050,0x00000180,0x0003003e,0x000004a4,0x000004a3,0x0004003d,0x00000048,0x000004a5, - 0x00000086,0x0004003d,0x00000048,0x000004a6,0x0000005d,0x00050094,0x00000047,0x000004a7, - 0x000004a5,0x000004a6,0x00050041,0x000000f0,0x000004a8,0x00000051,0x00000180,0x0004003d, - 0x00000047,0x000004a9,0x000004a8,0x00050081,0x00000047,0x000004aa,0x000004a9,0x000004a7, - 0x00050041,0x000000f0,0x000004ab,0x00000051,0x00000180,0x0003003e,0x000004ab,0x000004aa, - 0x0004003d,0x00000048,0x000004ac,0x0000008d,0x0004003d,0x00000048,0x000004ad,0x0000005d, - 0x00050094,0x00000047,0x000004ae,0x000004ac,0x000004ad,0x00050041,0x000000f0,0x000004af, - 0x00000052,0x00000180,0x0004003d,0x00000047,0x000004b0,0x000004af,0x00050081,0x00000047, - 0x000004b1,0x000004b0,0x000004ae,0x00050041,0x000000f0,0x000004b2,0x00000052,0x00000180, - 0x0003003e,0x000004b2,0x000004b1,0x0004003d,0x00000048,0x000004b3,0x00000094,0x0004003d, - 0x00000048,0x000004b4,0x0000005d,0x00050094,0x00000047,0x000004b5,0x000004b3,0x000004b4, - 0x00050041,0x000000f0,0x000004b6,0x00000053,0x00000180,0x0004003d,0x00000047,0x000004b7, - 0x000004b6,0x00050081,0x00000047,0x000004b8,0x000004b7,0x000004b5,0x00050041,0x000000f0, - 0x000004b9,0x00000053,0x00000180,0x0003003e,0x000004b9,0x000004b8,0x0004003d,0x00000006, - 0x000004ba,0x00000054,0x00050080,0x00000006,0x000004bb,0x000004ba,0x0000009b,0x0003003e, - 0x00000054,0x000004bb,0x000200f9,0x00000059,0x000200f8,0x00000059,0x0004003d,0x00000006, - 0x000004bc,0x00000054,0x0004003d,0x00000006,0x000004bd,0x0000003e,0x000500b1,0x00000033, - 0x000004be,0x000004bc,0x000004bd,0x000400fa,0x000004be,0x00000056,0x00000058,0x000200f8, - 0x00000058,0x00050041,0x0000000e,0x000004c4,0x0000000c,0x0000000d,0x0004003d,0x00000009, - 0x000004c5,0x000004c4,0x0004007c,0x00000006,0x000004c6,0x000004c5,0x00050084,0x00000006, - 0x000004c7,0x00000124,0x000004c6,0x00060041,0x00000064,0x000004c8,0x000004c3,0x00000055, - 0x000004c7,0x0004003d,0x00000048,0x000004c9,0x000004c8,0x0003003e,0x000004bf,0x000004c9, - 0x0004003d,0x00000048,0x000004ca,0x000004bf,0x0009004f,0x00000048,0x000004cb,0x000004ca, - 0x000004ca,0x00000000,0x00000000,0x00000000,0x00000000,0x0004003d,0x00000048,0x000004cc, - 0x0000004a,0x00050081,0x00000048,0x000004cd,0x000004cc,0x000004cb,0x0003003e,0x0000004a, - 0x000004cd,0x0004003d,0x00000048,0x000004ce,0x000004bf,0x0009004f,0x00000048,0x000004cf, - 0x000004ce,0x000004ce,0x00000001,0x00000001,0x00000001,0x00000001,0x0004003d,0x00000048, - 0x000004d0,0x0000004d,0x00050081,0x00000048,0x000004d1,0x000004d0,0x000004cf,0x0003003e, - 0x0000004d,0x000004d1,0x0004003d,0x00000048,0x000004d2,0x000004bf,0x0009004f,0x00000048, - 0x000004d3,0x000004d2,0x000004d2,0x00000002,0x00000002,0x00000002,0x00000002,0x0004003d, - 0x00000048,0x000004d4,0x0000004e,0x00050081,0x00000048,0x000004d5,0x000004d4,0x000004d3, - 0x0003003e,0x0000004e,0x000004d5,0x0004003d,0x00000048,0x000004d6,0x000004bf,0x0009004f, - 0x00000048,0x000004d7,0x000004d6,0x000004d6,0x00000003,0x00000003,0x00000003,0x00000003, - 0x0004003d,0x00000048,0x000004d8,0x0000004f,0x00050081,0x00000048,0x000004d9,0x000004d8, - 0x000004d7,0x0003003e,0x0000004f,0x000004d9,0x00050041,0x0000000e,0x000004da,0x0000000c, - 0x0000000d,0x0004003d,0x00000009,0x000004db,0x000004da,0x0004007c,0x00000006,0x000004dc, - 0x000004db,0x00050084,0x00000006,0x000004dd,0x00000124,0x000004dc,0x00050080,0x00000006, - 0x000004de,0x000004dd,0x0000009b,0x00060041,0x00000064,0x000004df,0x000004c3,0x00000055, - 0x000004de,0x0004003d,0x00000048,0x000004e0,0x000004df,0x0003003e,0x000004bf,0x000004e0, - 0x0004003d,0x00000048,0x000004e1,0x000004bf,0x0009004f,0x00000048,0x000004e2,0x000004e1, - 0x000004e1,0x00000000,0x00000000,0x00000000,0x00000000,0x0004003d,0x00000048,0x000004e3, - 0x00000050,0x00050081,0x00000048,0x000004e4,0x000004e3,0x000004e2,0x0003003e,0x00000050, - 0x000004e4,0x0004003d,0x00000048,0x000004e5,0x000004bf,0x0009004f,0x00000048,0x000004e6, - 0x000004e5,0x000004e5,0x00000001,0x00000001,0x00000001,0x00000001,0x0004003d,0x00000048, - 0x000004e7,0x00000051,0x00050081,0x00000048,0x000004e8,0x000004e7,0x000004e6,0x0003003e, - 0x00000051,0x000004e8,0x0004003d,0x00000048,0x000004e9,0x000004bf,0x0009004f,0x00000048, - 0x000004ea,0x000004e9,0x000004e9,0x00000002,0x00000002,0x00000002,0x00000002,0x0004003d, - 0x00000048,0x000004eb,0x00000052,0x00050081,0x00000048,0x000004ec,0x000004eb,0x000004ea, - 0x0003003e,0x00000052,0x000004ec,0x0004003d,0x00000048,0x000004ed,0x000004bf,0x0009004f, - 0x00000048,0x000004ee,0x000004ed,0x000004ed,0x00000003,0x00000003,0x00000003,0x00000003, - 0x0004003d,0x00000048,0x000004ef,0x00000053,0x00050081,0x00000048,0x000004f0,0x000004ef, - 0x000004ee,0x0003003e,0x00000053,0x000004f0,0x0004003d,0x00000006,0x000004f5,0x0000002c, - 0x0004003d,0x00000006,0x000004f6,0x0000001c,0x00050080,0x00000006,0x000004f7,0x000004f6, - 0x00000055,0x00050084,0x00000006,0x000004f8,0x000004f7,0x0000002e,0x00050087,0x00000006, - 0x000004f9,0x000004f8,0x00000021,0x00050080,0x00000006,0x000004fa,0x000004f5,0x000004f9, - 0x0004003d,0x00000006,0x000004fb,0x00000012,0x00050080,0x00000006,0x000004fc,0x000004fa, - 0x000004fb,0x0004003d,0x00000048,0x000004fd,0x0000004a,0x00060041,0x00000064,0x000004fe, - 0x000004f4,0x00000055,0x000004fc,0x0003003e,0x000004fe,0x000004fd,0x0004003d,0x00000006, - 0x000004ff,0x0000002c,0x0004003d,0x00000006,0x00000500,0x0000001c,0x00050080,0x00000006, - 0x00000501,0x00000500,0x0000009b,0x00050084,0x00000006,0x00000502,0x00000501,0x0000002e, - 0x00050087,0x00000006,0x00000503,0x00000502,0x00000021,0x00050080,0x00000006,0x00000504, - 0x000004ff,0x00000503,0x0004003d,0x00000006,0x00000505,0x00000012,0x00050080,0x00000006, - 0x00000506,0x00000504,0x00000505,0x0004003d,0x00000048,0x00000507,0x0000004d,0x00060041, - 0x00000064,0x00000508,0x000004f4,0x00000055,0x00000506,0x0003003e,0x00000508,0x00000507, - 0x0004003d,0x00000006,0x00000509,0x0000002c,0x0004003d,0x00000006,0x0000050a,0x0000001c, - 0x00050080,0x00000006,0x0000050b,0x0000050a,0x00000124,0x00050084,0x00000006,0x0000050c, - 0x0000050b,0x0000002e,0x00050087,0x00000006,0x0000050d,0x0000050c,0x00000021,0x00050080, - 0x00000006,0x0000050e,0x00000509,0x0000050d,0x0004003d,0x00000006,0x0000050f,0x00000012, - 0x00050080,0x00000006,0x00000510,0x0000050e,0x0000050f,0x0004003d,0x00000048,0x00000511, - 0x0000004e,0x00060041,0x00000064,0x00000512,0x000004f4,0x00000055,0x00000510,0x0003003e, - 0x00000512,0x00000511,0x0004003d,0x00000006,0x00000513,0x0000002c,0x0004003d,0x00000006, - 0x00000514,0x0000001c,0x00050080,0x00000006,0x00000515,0x00000514,0x00000154,0x00050084, - 0x00000006,0x00000516,0x00000515,0x0000002e,0x00050087,0x00000006,0x00000517,0x00000516, - 0x00000021,0x00050080,0x00000006,0x00000518,0x00000513,0x00000517,0x0004003d,0x00000006, - 0x00000519,0x00000012,0x00050080,0x00000006,0x0000051a,0x00000518,0x00000519,0x0004003d, - 0x00000048,0x0000051b,0x0000004f,0x00060041,0x00000064,0x0000051c,0x000004f4,0x00000055, - 0x0000051a,0x0003003e,0x0000051c,0x0000051b,0x0004003d,0x00000006,0x0000051d,0x0000002c, - 0x0004003d,0x00000006,0x0000051e,0x0000001c,0x00050080,0x00000006,0x0000051f,0x0000051e, - 0x00000021,0x00050084,0x00000006,0x00000520,0x0000051f,0x0000002e,0x00050087,0x00000006, - 0x00000521,0x00000520,0x00000021,0x00050080,0x00000006,0x00000522,0x0000051d,0x00000521, - 0x0004003d,0x00000006,0x00000523,0x00000012,0x00050080,0x00000006,0x00000524,0x00000522, - 0x00000523,0x0004003d,0x00000048,0x00000525,0x00000050,0x00060041,0x00000064,0x00000526, - 0x000004f4,0x00000055,0x00000524,0x0003003e,0x00000526,0x00000525,0x0004003d,0x00000006, - 0x00000527,0x0000002c,0x0004003d,0x00000006,0x00000528,0x0000001c,0x00050080,0x00000006, - 0x0000052a,0x00000528,0x00000529,0x00050084,0x00000006,0x0000052b,0x0000052a,0x0000002e, - 0x00050087,0x00000006,0x0000052c,0x0000052b,0x00000021,0x00050080,0x00000006,0x0000052d, - 0x00000527,0x0000052c,0x0004003d,0x00000006,0x0000052e,0x00000012,0x00050080,0x00000006, - 0x0000052f,0x0000052d,0x0000052e,0x0004003d,0x00000048,0x00000530,0x00000051,0x00060041, - 0x00000064,0x00000531,0x000004f4,0x00000055,0x0000052f,0x0003003e,0x00000531,0x00000530, - 0x0004003d,0x00000006,0x00000532,0x0000002c,0x0004003d,0x00000006,0x00000533,0x0000001c, - 0x00050080,0x00000006,0x00000535,0x00000533,0x00000534,0x00050084,0x00000006,0x00000536, - 0x00000535,0x0000002e,0x00050087,0x00000006,0x00000537,0x00000536,0x00000021,0x00050080, - 0x00000006,0x00000538,0x00000532,0x00000537,0x0004003d,0x00000006,0x00000539,0x00000012, - 0x00050080,0x00000006,0x0000053a,0x00000538,0x00000539,0x0004003d,0x00000048,0x0000053b, - 0x00000052,0x00060041,0x00000064,0x0000053c,0x000004f4,0x00000055,0x0000053a,0x0003003e, - 0x0000053c,0x0000053b,0x0004003d,0x00000006,0x0000053d,0x0000002c,0x0004003d,0x00000006, - 0x0000053e,0x0000001c,0x00050080,0x00000006,0x00000540,0x0000053e,0x0000053f,0x00050084, - 0x00000006,0x00000541,0x00000540,0x0000002e,0x00050087,0x00000006,0x00000542,0x00000541, - 0x00000021,0x00050080,0x00000006,0x00000543,0x0000053d,0x00000542,0x0004003d,0x00000006, - 0x00000544,0x00000012,0x00050080,0x00000006,0x00000545,0x00000543,0x00000544,0x0004003d, - 0x00000048,0x00000546,0x00000053,0x00060041,0x00000064,0x00000547,0x000004f4,0x00000055, - 0x00000545,0x0003003e,0x00000547,0x00000546,0x000200f9,0x0000003d,0x000200f8,0x0000003d, - 0x000100fd,0x00010038 -}; - -}}} // namespace cv::dnn::vkcom diff --git a/modules/dnn/src/vkcom/shader/conv_1x1_fast.comp b/modules/dnn/src/vkcom/shader/conv_1x1_fast.comp new file mode 100644 index 0000000000..98f82d08c7 --- /dev/null +++ b/modules/dnn/src/vkcom/shader/conv_1x1_fast.comp @@ -0,0 +1,175 @@ +#version 450 + +#define KSTRIP_LEN 32 +#define BLOCK_SIZE 64 // the output channel shoule be aligned to 64. +#define WARP 32 + +#define INNER_THREAD 16 // inner thread +#define ALL_THREAD 256 + +#define A_INSTRIP 8 +#define A_STRIP 8 // (BLOCK_SIZE/A_INSTRIP) + +#define B_INSTRIP 4 // (ALL_THREAD/BLOCK_SIZE) +#define B_STRIP 8 // (KSTRIP_LEN/B_INSTRIP) + +#define PER_THREAD (BLOCK_SIZE/INNER_THREAD) + +layout(binding = 0) readonly buffer Input0{ + float image_data[]; +}; + +layout(binding = 1) readonly buffer Input1 { + float bias_data[]; +}; + +layout(binding = 2) readonly buffer Input2{ + float weight_data[]; +}; + +layout(binding = 3) writeonly buffer Output{ + float output_data[]; +}; + +layout(binding = 4) uniform pushBlock { + int Hi; // H in + int Wi; // W in + int H0; // H out + int W0; // W out + int stride_h; + int stride_w; + int pad_h; + int pad_w; + int Hk; + int Wk; + int dilation_h; + int dilation_w; + int Kg; + int Cg; + int group; + int CgHkWk_aligned; + int activationType; // 0 : no activation, 1: ReLU, 2: ReLU6. + int batchi; // batch index + int groupi; // group index +} p; + +shared float wshare[KSTRIP_LEN][BLOCK_SIZE]; // 2 KB +shared float inshare[BLOCK_SIZE][KSTRIP_LEN]; // 2 KB + +layout(local_size_x = ALL_THREAD, local_size_y = 1, local_size_z = 1) in; + +void main() +{ + int M = p.Kg; // output channel + int K = p.CgHkWk_aligned; // Hk * Wk * G // aligned to KSTRIP_LEN + int N = p.H0 * p.W0; // H0 * W0 + + int mIndex = int(gl_WorkGroupID.x) * BLOCK_SIZE; + int nIndex = int(gl_WorkGroupID.y) * BLOCK_SIZE; + + int local_x = int(gl_LocalInvocationID.x) % 16; // 0~7 + int local_y = int(gl_LocalInvocationID.x) / 16; // 0~31 + + int w_local_x = int(gl_LocalInvocationID.x) % KSTRIP_LEN; // 256 / 32 = 8 + int w_local_y = int(gl_LocalInvocationID.x) / KSTRIP_LEN; + + int in_local_x = int(gl_LocalInvocationID.x) % BLOCK_SIZE; // 256 / 64 = 4 + int in_local_y = int(gl_LocalInvocationID.x) / BLOCK_SIZE; + + int woffset = p.groupi * p.Kg * K + K * mIndex + w_local_y * K + w_local_x; + int inoffset = (p.batchi * p.group + p.groupi) * p.Hi * p.Wi * p.Cg + in_local_y * p.Hi * p.Wi + nIndex + in_local_x; + int outoffset = (p.batchi * p.group + p.groupi) * p.H0 * p.W0 * p.Kg; + int biasoffset = p.groupi * p.Kg + mIndex + local_x * PER_THREAD; + + vec4 sum[PER_THREAD]; + { + for (int i = 0; i < PER_THREAD; i++) + { + sum[i] = vec4(bias_data[biasoffset + i]); + } + } + + float regA[PER_THREAD]; + float regB[PER_THREAD]; + + int KStrip = K / KSTRIP_LEN; + int KRemain = K - KStrip * KSTRIP_LEN; // NOTE: this value shoule be always 0. + + for (int i = 0; i < KStrip; i++) + { + int k = i * KSTRIP_LEN; + // load Weight to local memory. + for (int s = 0; s < A_STRIP; s++) + { + wshare[w_local_x][s * A_INSTRIP + w_local_y] = weight_data[woffset + s * A_INSTRIP * K + k]; + } + + // load Input to local memory + for (int s = 0; s < B_STRIP; s++) + { + int cg = s * B_INSTRIP + in_local_y; + int hw = nIndex + in_local_x; + + if (cg < p.Cg && hw < N) + inshare[in_local_x][s * B_INSTRIP + in_local_y] = image_data[inoffset + s * B_INSTRIP * N + k * N]; + else + inshare[in_local_x][s * B_INSTRIP + in_local_y] = 0.f; + } + + barrier(); + + for (int j = 0; j < KSTRIP_LEN; j++) + { + // Load shared memory to register. + for (int m = 0; m < 4; m++) + { + regA[m] = wshare[j][local_x*4 + m]; + } + + for (int m = 0; m < 4; m++) + { + regB[m] = inshare[local_y + 16 * m][j]; + } + + for (int m = 0; m < 4; m++) + { + for (int n = 0; n < 4; n++) + { + sum[m][n] += regA[m] * regB[n]; + } + } + } + barrier(); + } + + if (p.activationType == 1) // ReLU + { + sum[0] = max(sum[0], (0)); + sum[1] = max(sum[1], (0)); + sum[2] = max(sum[2], (0)); + sum[3] = max(sum[3], (0)); + } + else if (p.activationType == 2) // ReLU6 + { + sum[0] = clamp(sum[0], vec4(0), vec4(6)); + sum[1] = clamp(sum[1], vec4(0), vec4(6)); + sum[2] = clamp(sum[2], vec4(0), vec4(6)); + sum[3] = clamp(sum[3], vec4(0), vec4(6)); + } + + for (int n = 0; n < PER_THREAD; n++) + { + int nIndex2 = nIndex + n * INNER_THREAD + local_y; + if (nIndex2 < N) + { + for (int m = 0; m < PER_THREAD; m++) + { + int mIndex2 = mIndex + local_x * PER_THREAD + m; + if (mIndex2 < M) + { + output_data[outoffset + mIndex2 * N + nIndex2] = sum[m][n]; + } + } + } + } +} diff --git a/modules/dnn/src/vkcom/shader/conv_1x1_fast_spv.cpp b/modules/dnn/src/vkcom/shader/conv_1x1_fast_spv.cpp new file mode 100644 index 0000000000..b63378bdb4 --- /dev/null +++ b/modules/dnn/src/vkcom/shader/conv_1x1_fast_spv.cpp @@ -0,0 +1,404 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. + +#include "../../precomp.hpp" + +namespace cv { namespace dnn { namespace vkcom { + +extern const unsigned int conv_1x1_fast_spv[3134] = { + 0x07230203,0x00010000,0x0008000b,0x00000205,0x00000000,0x00020011,0x00000001,0x0006000b, + 0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001, + 0x0007000f,0x00000005,0x00000004,0x6e69616d,0x00000000,0x00000020,0x0000002f,0x00060010, + 0x00000004,0x00000011,0x00000100,0x00000001,0x00000001,0x00030003,0x00000002,0x000001c2, + 0x00040005,0x00000004,0x6e69616d,0x00000000,0x00030005,0x00000008,0x0000004d,0x00050005, + 0x00000009,0x68737570,0x636f6c42,0x0000006b,0x00040006,0x00000009,0x00000000,0x00006948, + 0x00040006,0x00000009,0x00000001,0x00006957,0x00040006,0x00000009,0x00000002,0x00003048, + 0x00040006,0x00000009,0x00000003,0x00003057,0x00060006,0x00000009,0x00000004,0x69727473, + 0x685f6564,0x00000000,0x00060006,0x00000009,0x00000005,0x69727473,0x775f6564,0x00000000, + 0x00050006,0x00000009,0x00000006,0x5f646170,0x00000068,0x00050006,0x00000009,0x00000007, + 0x5f646170,0x00000077,0x00040006,0x00000009,0x00000008,0x00006b48,0x00040006,0x00000009, + 0x00000009,0x00006b57,0x00060006,0x00000009,0x0000000a,0x616c6964,0x6e6f6974,0x0000685f, + 0x00060006,0x00000009,0x0000000b,0x616c6964,0x6e6f6974,0x0000775f,0x00040006,0x00000009, + 0x0000000c,0x0000674b,0x00040006,0x00000009,0x0000000d,0x00006743,0x00050006,0x00000009, + 0x0000000e,0x756f7267,0x00000070,0x00070006,0x00000009,0x0000000f,0x6b486743,0x615f6b57, + 0x6e67696c,0x00006465,0x00070006,0x00000009,0x00000010,0x69746361,0x69746176,0x79546e6f, + 0x00006570,0x00050006,0x00000009,0x00000011,0x63746162,0x00006968,0x00050006,0x00000009, + 0x00000012,0x756f7267,0x00006970,0x00030005,0x0000000b,0x00000070,0x00030005,0x00000010, + 0x0000004b,0x00030005,0x00000014,0x0000004e,0x00040005,0x0000001c,0x646e496d,0x00007865, + 0x00060005,0x00000020,0x575f6c67,0x476b726f,0x70756f72,0x00004449,0x00040005,0x00000028, + 0x646e496e,0x00007865,0x00040005,0x0000002e,0x61636f6c,0x00785f6c,0x00080005,0x0000002f, + 0x4c5f6c67,0x6c61636f,0x6f766e49,0x69746163,0x44496e6f,0x00000000,0x00040005,0x00000035, + 0x61636f6c,0x00795f6c,0x00050005,0x0000003a,0x6f6c5f77,0x5f6c6163,0x00000078,0x00050005, + 0x00000040,0x6f6c5f77,0x5f6c6163,0x00000079,0x00050005,0x00000045,0x6c5f6e69,0x6c61636f, + 0x0000785f,0x00050005,0x0000004a,0x6c5f6e69,0x6c61636f,0x0000795f,0x00040005,0x0000004f, + 0x66666f77,0x00746573,0x00050005,0x00000062,0x666f6e69,0x74657366,0x00000000,0x00050005, + 0x00000085,0x6f74756f,0x65736666,0x00000074,0x00050005,0x00000097,0x73616962,0x7366666f, + 0x00007465,0x00030005,0x000000a3,0x00000069,0x00030005,0x000000b1,0x006d7573,0x00040005, + 0x000000b4,0x75706e49,0x00003174,0x00060006,0x000000b4,0x00000000,0x73616962,0x7461645f, + 0x00000061,0x00030005,0x000000b6,0x00000000,0x00040005,0x000000c2,0x7274534b,0x00007069, + 0x00040005,0x000000c5,0x6d65524b,0x006e6961,0x00030005,0x000000ca,0x00000069,0x00030005, + 0x000000d3,0x0000006b,0x00030005,0x000000d6,0x00000073,0x00040005,0x000000e4,0x61687377, + 0x00006572,0x00040005,0x000000eb,0x75706e49,0x00003274,0x00060006,0x000000eb,0x00000000, + 0x67696577,0x645f7468,0x00617461,0x00030005,0x000000ed,0x00000000,0x00030005,0x000000fc, + 0x00000073,0x00030005,0x00000104,0x00006763,0x00030005,0x00000109,0x00007768,0x00040005, + 0x0000011a,0x68736e69,0x00657261,0x00040005,0x00000121,0x75706e49,0x00003074,0x00060006, + 0x00000121,0x00000000,0x67616d69,0x61645f65,0x00006174,0x00030005,0x00000123,0x00000000, + 0x00030005,0x0000013d,0x0000006a,0x00030005,0x00000145,0x0000006d,0x00040005,0x0000014f, + 0x41676572,0x00000000,0x00030005,0x0000015c,0x0000006d,0x00040005,0x00000164,0x42676572, + 0x00000000,0x00030005,0x00000170,0x0000006d,0x00030005,0x00000178,0x0000006e,0x00030005, + 0x000001c7,0x0000006e,0x00040005,0x000001cf,0x646e496e,0x00327865,0x00030005,0x000001db, + 0x0000006d,0x00040005,0x000001e3,0x646e496d,0x00327865,0x00040005,0x000001f0,0x7074754f, + 0x00007475,0x00060006,0x000001f0,0x00000000,0x7074756f,0x645f7475,0x00617461,0x00030005, + 0x000001f2,0x00000000,0x00050048,0x00000009,0x00000000,0x00000023,0x00000000,0x00050048, + 0x00000009,0x00000001,0x00000023,0x00000004,0x00050048,0x00000009,0x00000002,0x00000023, + 0x00000008,0x00050048,0x00000009,0x00000003,0x00000023,0x0000000c,0x00050048,0x00000009, + 0x00000004,0x00000023,0x00000010,0x00050048,0x00000009,0x00000005,0x00000023,0x00000014, + 0x00050048,0x00000009,0x00000006,0x00000023,0x00000018,0x00050048,0x00000009,0x00000007, + 0x00000023,0x0000001c,0x00050048,0x00000009,0x00000008,0x00000023,0x00000020,0x00050048, + 0x00000009,0x00000009,0x00000023,0x00000024,0x00050048,0x00000009,0x0000000a,0x00000023, + 0x00000028,0x00050048,0x00000009,0x0000000b,0x00000023,0x0000002c,0x00050048,0x00000009, + 0x0000000c,0x00000023,0x00000030,0x00050048,0x00000009,0x0000000d,0x00000023,0x00000034, + 0x00050048,0x00000009,0x0000000e,0x00000023,0x00000038,0x00050048,0x00000009,0x0000000f, + 0x00000023,0x0000003c,0x00050048,0x00000009,0x00000010,0x00000023,0x00000040,0x00050048, + 0x00000009,0x00000011,0x00000023,0x00000044,0x00050048,0x00000009,0x00000012,0x00000023, + 0x00000048,0x00030047,0x00000009,0x00000002,0x00040047,0x0000000b,0x00000022,0x00000000, + 0x00040047,0x0000000b,0x00000021,0x00000004,0x00040047,0x00000020,0x0000000b,0x0000001a, + 0x00040047,0x0000002f,0x0000000b,0x0000001b,0x00040047,0x000000b3,0x00000006,0x00000004, + 0x00040048,0x000000b4,0x00000000,0x00000018,0x00050048,0x000000b4,0x00000000,0x00000023, + 0x00000000,0x00030047,0x000000b4,0x00000003,0x00040047,0x000000b6,0x00000022,0x00000000, + 0x00040047,0x000000b6,0x00000021,0x00000001,0x00040047,0x000000ea,0x00000006,0x00000004, + 0x00040048,0x000000eb,0x00000000,0x00000018,0x00050048,0x000000eb,0x00000000,0x00000023, + 0x00000000,0x00030047,0x000000eb,0x00000003,0x00040047,0x000000ed,0x00000022,0x00000000, + 0x00040047,0x000000ed,0x00000021,0x00000002,0x00040047,0x00000120,0x00000006,0x00000004, + 0x00040048,0x00000121,0x00000000,0x00000018,0x00050048,0x00000121,0x00000000,0x00000023, + 0x00000000,0x00030047,0x00000121,0x00000003,0x00040047,0x00000123,0x00000022,0x00000000, + 0x00040047,0x00000123,0x00000021,0x00000000,0x00040047,0x000001ef,0x00000006,0x00000004, + 0x00040048,0x000001f0,0x00000000,0x00000019,0x00050048,0x000001f0,0x00000000,0x00000023, + 0x00000000,0x00030047,0x000001f0,0x00000003,0x00040047,0x000001f2,0x00000022,0x00000000, + 0x00040047,0x000001f2,0x00000021,0x00000003,0x00040047,0x00000204,0x0000000b,0x00000019, + 0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,0x00040015,0x00000006,0x00000020, + 0x00000001,0x00040020,0x00000007,0x00000007,0x00000006,0x0015001e,0x00000009,0x00000006, + 0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006, + 0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006, + 0x00000006,0x00000006,0x00040020,0x0000000a,0x00000002,0x00000009,0x0004003b,0x0000000a, + 0x0000000b,0x00000002,0x0004002b,0x00000006,0x0000000c,0x0000000c,0x00040020,0x0000000d, + 0x00000002,0x00000006,0x0004002b,0x00000006,0x00000011,0x0000000f,0x0004002b,0x00000006, + 0x00000015,0x00000002,0x0004002b,0x00000006,0x00000018,0x00000003,0x00040015,0x0000001d, + 0x00000020,0x00000000,0x00040017,0x0000001e,0x0000001d,0x00000003,0x00040020,0x0000001f, + 0x00000001,0x0000001e,0x0004003b,0x0000001f,0x00000020,0x00000001,0x0004002b,0x0000001d, + 0x00000021,0x00000000,0x00040020,0x00000022,0x00000001,0x0000001d,0x0004002b,0x00000006, + 0x00000026,0x00000040,0x0004002b,0x0000001d,0x00000029,0x00000001,0x0004003b,0x0000001f, + 0x0000002f,0x00000001,0x0004002b,0x00000006,0x00000033,0x00000010,0x0004002b,0x00000006, + 0x0000003e,0x00000020,0x0004002b,0x00000006,0x00000050,0x00000012,0x0004002b,0x00000006, + 0x00000063,0x00000011,0x0004002b,0x00000006,0x00000066,0x0000000e,0x0004002b,0x00000006, + 0x0000006d,0x00000000,0x0004002b,0x00000006,0x00000071,0x00000001,0x0004002b,0x00000006, + 0x00000075,0x0000000d,0x0004002b,0x00000006,0x000000a0,0x00000004,0x00020014,0x000000aa, + 0x00030016,0x000000ac,0x00000020,0x00040017,0x000000ad,0x000000ac,0x00000004,0x0004002b, + 0x0000001d,0x000000ae,0x00000004,0x0004001c,0x000000af,0x000000ad,0x000000ae,0x00040020, + 0x000000b0,0x00000007,0x000000af,0x0003001d,0x000000b3,0x000000ac,0x0003001e,0x000000b4, + 0x000000b3,0x00040020,0x000000b5,0x00000002,0x000000b4,0x0004003b,0x000000b5,0x000000b6, + 0x00000002,0x00040020,0x000000ba,0x00000002,0x000000ac,0x00040020,0x000000be,0x00000007, + 0x000000ad,0x0004002b,0x00000006,0x000000dd,0x00000008,0x0004002b,0x0000001d,0x000000df, + 0x00000040,0x0004001c,0x000000e0,0x000000ac,0x000000df,0x0004002b,0x0000001d,0x000000e1, + 0x00000020,0x0004001c,0x000000e2,0x000000e0,0x000000e1,0x00040020,0x000000e3,0x00000004, + 0x000000e2,0x0004003b,0x000000e3,0x000000e4,0x00000004,0x0003001d,0x000000ea,0x000000ac, + 0x0003001e,0x000000eb,0x000000ea,0x00040020,0x000000ec,0x00000002,0x000000eb,0x0004003b, + 0x000000ec,0x000000ed,0x00000002,0x00040020,0x000000f8,0x00000004,0x000000ac,0x0004001c, + 0x00000117,0x000000ac,0x000000e1,0x0004001c,0x00000118,0x00000117,0x000000df,0x00040020, + 0x00000119,0x00000004,0x00000118,0x0004003b,0x00000119,0x0000011a,0x00000004,0x0003001d, + 0x00000120,0x000000ac,0x0003001e,0x00000121,0x00000120,0x00040020,0x00000122,0x00000002, + 0x00000121,0x0004003b,0x00000122,0x00000123,0x00000002,0x0004002b,0x000000ac,0x00000137, + 0x00000000,0x0004002b,0x0000001d,0x0000013b,0x00000002,0x0004002b,0x0000001d,0x0000013c, + 0x00000108,0x0004001c,0x0000014d,0x000000ac,0x000000ae,0x00040020,0x0000014e,0x00000007, + 0x0000014d,0x00040020,0x00000158,0x00000007,0x000000ac,0x0007002c,0x000000ad,0x000001b6, + 0x00000137,0x00000137,0x00000137,0x00000137,0x0004002b,0x000000ac,0x000001b7,0x40c00000, + 0x0007002c,0x000000ad,0x000001b8,0x000001b7,0x000001b7,0x000001b7,0x000001b7,0x0003001d, + 0x000001ef,0x000000ac,0x0003001e,0x000001f0,0x000001ef,0x00040020,0x000001f1,0x00000002, + 0x000001f0,0x0004003b,0x000001f1,0x000001f2,0x00000002,0x0004002b,0x0000001d,0x00000203, + 0x00000100,0x0006002c,0x0000001e,0x00000204,0x00000203,0x00000029,0x00000029,0x00050036, + 0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000007, + 0x00000008,0x00000007,0x0004003b,0x00000007,0x00000010,0x00000007,0x0004003b,0x00000007, + 0x00000014,0x00000007,0x0004003b,0x00000007,0x0000001c,0x00000007,0x0004003b,0x00000007, + 0x00000028,0x00000007,0x0004003b,0x00000007,0x0000002e,0x00000007,0x0004003b,0x00000007, + 0x00000035,0x00000007,0x0004003b,0x00000007,0x0000003a,0x00000007,0x0004003b,0x00000007, + 0x00000040,0x00000007,0x0004003b,0x00000007,0x00000045,0x00000007,0x0004003b,0x00000007, + 0x0000004a,0x00000007,0x0004003b,0x00000007,0x0000004f,0x00000007,0x0004003b,0x00000007, + 0x00000062,0x00000007,0x0004003b,0x00000007,0x00000085,0x00000007,0x0004003b,0x00000007, + 0x00000097,0x00000007,0x0004003b,0x00000007,0x000000a3,0x00000007,0x0004003b,0x000000b0, + 0x000000b1,0x00000007,0x0004003b,0x00000007,0x000000c2,0x00000007,0x0004003b,0x00000007, + 0x000000c5,0x00000007,0x0004003b,0x00000007,0x000000ca,0x00000007,0x0004003b,0x00000007, + 0x000000d3,0x00000007,0x0004003b,0x00000007,0x000000d6,0x00000007,0x0004003b,0x00000007, + 0x000000fc,0x00000007,0x0004003b,0x00000007,0x00000104,0x00000007,0x0004003b,0x00000007, + 0x00000109,0x00000007,0x0004003b,0x00000007,0x0000013d,0x00000007,0x0004003b,0x00000007, + 0x00000145,0x00000007,0x0004003b,0x0000014e,0x0000014f,0x00000007,0x0004003b,0x00000007, + 0x0000015c,0x00000007,0x0004003b,0x0000014e,0x00000164,0x00000007,0x0004003b,0x00000007, + 0x00000170,0x00000007,0x0004003b,0x00000007,0x00000178,0x00000007,0x0004003b,0x00000007, + 0x000001c7,0x00000007,0x0004003b,0x00000007,0x000001cf,0x00000007,0x0004003b,0x00000007, + 0x000001db,0x00000007,0x0004003b,0x00000007,0x000001e3,0x00000007,0x00050041,0x0000000d, + 0x0000000e,0x0000000b,0x0000000c,0x0004003d,0x00000006,0x0000000f,0x0000000e,0x0003003e, + 0x00000008,0x0000000f,0x00050041,0x0000000d,0x00000012,0x0000000b,0x00000011,0x0004003d, + 0x00000006,0x00000013,0x00000012,0x0003003e,0x00000010,0x00000013,0x00050041,0x0000000d, + 0x00000016,0x0000000b,0x00000015,0x0004003d,0x00000006,0x00000017,0x00000016,0x00050041, + 0x0000000d,0x00000019,0x0000000b,0x00000018,0x0004003d,0x00000006,0x0000001a,0x00000019, + 0x00050084,0x00000006,0x0000001b,0x00000017,0x0000001a,0x0003003e,0x00000014,0x0000001b, + 0x00050041,0x00000022,0x00000023,0x00000020,0x00000021,0x0004003d,0x0000001d,0x00000024, + 0x00000023,0x0004007c,0x00000006,0x00000025,0x00000024,0x00050084,0x00000006,0x00000027, + 0x00000025,0x00000026,0x0003003e,0x0000001c,0x00000027,0x00050041,0x00000022,0x0000002a, + 0x00000020,0x00000029,0x0004003d,0x0000001d,0x0000002b,0x0000002a,0x0004007c,0x00000006, + 0x0000002c,0x0000002b,0x00050084,0x00000006,0x0000002d,0x0000002c,0x00000026,0x0003003e, + 0x00000028,0x0000002d,0x00050041,0x00000022,0x00000030,0x0000002f,0x00000021,0x0004003d, + 0x0000001d,0x00000031,0x00000030,0x0004007c,0x00000006,0x00000032,0x00000031,0x0005008b, + 0x00000006,0x00000034,0x00000032,0x00000033,0x0003003e,0x0000002e,0x00000034,0x00050041, + 0x00000022,0x00000036,0x0000002f,0x00000021,0x0004003d,0x0000001d,0x00000037,0x00000036, + 0x0004007c,0x00000006,0x00000038,0x00000037,0x00050087,0x00000006,0x00000039,0x00000038, + 0x00000033,0x0003003e,0x00000035,0x00000039,0x00050041,0x00000022,0x0000003b,0x0000002f, + 0x00000021,0x0004003d,0x0000001d,0x0000003c,0x0000003b,0x0004007c,0x00000006,0x0000003d, + 0x0000003c,0x0005008b,0x00000006,0x0000003f,0x0000003d,0x0000003e,0x0003003e,0x0000003a, + 0x0000003f,0x00050041,0x00000022,0x00000041,0x0000002f,0x00000021,0x0004003d,0x0000001d, + 0x00000042,0x00000041,0x0004007c,0x00000006,0x00000043,0x00000042,0x00050087,0x00000006, + 0x00000044,0x00000043,0x0000003e,0x0003003e,0x00000040,0x00000044,0x00050041,0x00000022, + 0x00000046,0x0000002f,0x00000021,0x0004003d,0x0000001d,0x00000047,0x00000046,0x0004007c, + 0x00000006,0x00000048,0x00000047,0x0005008b,0x00000006,0x00000049,0x00000048,0x00000026, + 0x0003003e,0x00000045,0x00000049,0x00050041,0x00000022,0x0000004b,0x0000002f,0x00000021, + 0x0004003d,0x0000001d,0x0000004c,0x0000004b,0x0004007c,0x00000006,0x0000004d,0x0000004c, + 0x00050087,0x00000006,0x0000004e,0x0000004d,0x00000026,0x0003003e,0x0000004a,0x0000004e, + 0x00050041,0x0000000d,0x00000051,0x0000000b,0x00000050,0x0004003d,0x00000006,0x00000052, + 0x00000051,0x00050041,0x0000000d,0x00000053,0x0000000b,0x0000000c,0x0004003d,0x00000006, + 0x00000054,0x00000053,0x00050084,0x00000006,0x00000055,0x00000052,0x00000054,0x0004003d, + 0x00000006,0x00000056,0x00000010,0x00050084,0x00000006,0x00000057,0x00000055,0x00000056, + 0x0004003d,0x00000006,0x00000058,0x00000010,0x0004003d,0x00000006,0x00000059,0x0000001c, + 0x00050084,0x00000006,0x0000005a,0x00000058,0x00000059,0x00050080,0x00000006,0x0000005b, + 0x00000057,0x0000005a,0x0004003d,0x00000006,0x0000005c,0x00000040,0x0004003d,0x00000006, + 0x0000005d,0x00000010,0x00050084,0x00000006,0x0000005e,0x0000005c,0x0000005d,0x00050080, + 0x00000006,0x0000005f,0x0000005b,0x0000005e,0x0004003d,0x00000006,0x00000060,0x0000003a, + 0x00050080,0x00000006,0x00000061,0x0000005f,0x00000060,0x0003003e,0x0000004f,0x00000061, + 0x00050041,0x0000000d,0x00000064,0x0000000b,0x00000063,0x0004003d,0x00000006,0x00000065, + 0x00000064,0x00050041,0x0000000d,0x00000067,0x0000000b,0x00000066,0x0004003d,0x00000006, + 0x00000068,0x00000067,0x00050084,0x00000006,0x00000069,0x00000065,0x00000068,0x00050041, + 0x0000000d,0x0000006a,0x0000000b,0x00000050,0x0004003d,0x00000006,0x0000006b,0x0000006a, + 0x00050080,0x00000006,0x0000006c,0x00000069,0x0000006b,0x00050041,0x0000000d,0x0000006e, + 0x0000000b,0x0000006d,0x0004003d,0x00000006,0x0000006f,0x0000006e,0x00050084,0x00000006, + 0x00000070,0x0000006c,0x0000006f,0x00050041,0x0000000d,0x00000072,0x0000000b,0x00000071, + 0x0004003d,0x00000006,0x00000073,0x00000072,0x00050084,0x00000006,0x00000074,0x00000070, + 0x00000073,0x00050041,0x0000000d,0x00000076,0x0000000b,0x00000075,0x0004003d,0x00000006, + 0x00000077,0x00000076,0x00050084,0x00000006,0x00000078,0x00000074,0x00000077,0x0004003d, + 0x00000006,0x00000079,0x0000004a,0x00050041,0x0000000d,0x0000007a,0x0000000b,0x0000006d, + 0x0004003d,0x00000006,0x0000007b,0x0000007a,0x00050084,0x00000006,0x0000007c,0x00000079, + 0x0000007b,0x00050041,0x0000000d,0x0000007d,0x0000000b,0x00000071,0x0004003d,0x00000006, + 0x0000007e,0x0000007d,0x00050084,0x00000006,0x0000007f,0x0000007c,0x0000007e,0x00050080, + 0x00000006,0x00000080,0x00000078,0x0000007f,0x0004003d,0x00000006,0x00000081,0x00000028, + 0x00050080,0x00000006,0x00000082,0x00000080,0x00000081,0x0004003d,0x00000006,0x00000083, + 0x00000045,0x00050080,0x00000006,0x00000084,0x00000082,0x00000083,0x0003003e,0x00000062, + 0x00000084,0x00050041,0x0000000d,0x00000086,0x0000000b,0x00000063,0x0004003d,0x00000006, + 0x00000087,0x00000086,0x00050041,0x0000000d,0x00000088,0x0000000b,0x00000066,0x0004003d, + 0x00000006,0x00000089,0x00000088,0x00050084,0x00000006,0x0000008a,0x00000087,0x00000089, + 0x00050041,0x0000000d,0x0000008b,0x0000000b,0x00000050,0x0004003d,0x00000006,0x0000008c, + 0x0000008b,0x00050080,0x00000006,0x0000008d,0x0000008a,0x0000008c,0x00050041,0x0000000d, + 0x0000008e,0x0000000b,0x00000015,0x0004003d,0x00000006,0x0000008f,0x0000008e,0x00050084, + 0x00000006,0x00000090,0x0000008d,0x0000008f,0x00050041,0x0000000d,0x00000091,0x0000000b, + 0x00000018,0x0004003d,0x00000006,0x00000092,0x00000091,0x00050084,0x00000006,0x00000093, + 0x00000090,0x00000092,0x00050041,0x0000000d,0x00000094,0x0000000b,0x0000000c,0x0004003d, + 0x00000006,0x00000095,0x00000094,0x00050084,0x00000006,0x00000096,0x00000093,0x00000095, + 0x0003003e,0x00000085,0x00000096,0x00050041,0x0000000d,0x00000098,0x0000000b,0x00000050, + 0x0004003d,0x00000006,0x00000099,0x00000098,0x00050041,0x0000000d,0x0000009a,0x0000000b, + 0x0000000c,0x0004003d,0x00000006,0x0000009b,0x0000009a,0x00050084,0x00000006,0x0000009c, + 0x00000099,0x0000009b,0x0004003d,0x00000006,0x0000009d,0x0000001c,0x00050080,0x00000006, + 0x0000009e,0x0000009c,0x0000009d,0x0004003d,0x00000006,0x0000009f,0x0000002e,0x00050084, + 0x00000006,0x000000a1,0x0000009f,0x000000a0,0x00050080,0x00000006,0x000000a2,0x0000009e, + 0x000000a1,0x0003003e,0x00000097,0x000000a2,0x0003003e,0x000000a3,0x0000006d,0x000200f9, + 0x000000a4,0x000200f8,0x000000a4,0x000400f6,0x000000a6,0x000000a7,0x00000000,0x000200f9, + 0x000000a8,0x000200f8,0x000000a8,0x0004003d,0x00000006,0x000000a9,0x000000a3,0x000500b1, + 0x000000aa,0x000000ab,0x000000a9,0x000000a0,0x000400fa,0x000000ab,0x000000a5,0x000000a6, + 0x000200f8,0x000000a5,0x0004003d,0x00000006,0x000000b2,0x000000a3,0x0004003d,0x00000006, + 0x000000b7,0x00000097,0x0004003d,0x00000006,0x000000b8,0x000000a3,0x00050080,0x00000006, + 0x000000b9,0x000000b7,0x000000b8,0x00060041,0x000000ba,0x000000bb,0x000000b6,0x0000006d, + 0x000000b9,0x0004003d,0x000000ac,0x000000bc,0x000000bb,0x00070050,0x000000ad,0x000000bd, + 0x000000bc,0x000000bc,0x000000bc,0x000000bc,0x00050041,0x000000be,0x000000bf,0x000000b1, + 0x000000b2,0x0003003e,0x000000bf,0x000000bd,0x000200f9,0x000000a7,0x000200f8,0x000000a7, + 0x0004003d,0x00000006,0x000000c0,0x000000a3,0x00050080,0x00000006,0x000000c1,0x000000c0, + 0x00000071,0x0003003e,0x000000a3,0x000000c1,0x000200f9,0x000000a4,0x000200f8,0x000000a6, + 0x0004003d,0x00000006,0x000000c3,0x00000010,0x00050087,0x00000006,0x000000c4,0x000000c3, + 0x0000003e,0x0003003e,0x000000c2,0x000000c4,0x0004003d,0x00000006,0x000000c6,0x00000010, + 0x0004003d,0x00000006,0x000000c7,0x000000c2,0x00050084,0x00000006,0x000000c8,0x000000c7, + 0x0000003e,0x00050082,0x00000006,0x000000c9,0x000000c6,0x000000c8,0x0003003e,0x000000c5, + 0x000000c9,0x0003003e,0x000000ca,0x0000006d,0x000200f9,0x000000cb,0x000200f8,0x000000cb, + 0x000400f6,0x000000cd,0x000000ce,0x00000000,0x000200f9,0x000000cf,0x000200f8,0x000000cf, + 0x0004003d,0x00000006,0x000000d0,0x000000ca,0x0004003d,0x00000006,0x000000d1,0x000000c2, + 0x000500b1,0x000000aa,0x000000d2,0x000000d0,0x000000d1,0x000400fa,0x000000d2,0x000000cc, + 0x000000cd,0x000200f8,0x000000cc,0x0004003d,0x00000006,0x000000d4,0x000000ca,0x00050084, + 0x00000006,0x000000d5,0x000000d4,0x0000003e,0x0003003e,0x000000d3,0x000000d5,0x0003003e, + 0x000000d6,0x0000006d,0x000200f9,0x000000d7,0x000200f8,0x000000d7,0x000400f6,0x000000d9, + 0x000000da,0x00000000,0x000200f9,0x000000db,0x000200f8,0x000000db,0x0004003d,0x00000006, + 0x000000dc,0x000000d6,0x000500b1,0x000000aa,0x000000de,0x000000dc,0x000000dd,0x000400fa, + 0x000000de,0x000000d8,0x000000d9,0x000200f8,0x000000d8,0x0004003d,0x00000006,0x000000e5, + 0x0000003a,0x0004003d,0x00000006,0x000000e6,0x000000d6,0x00050084,0x00000006,0x000000e7, + 0x000000e6,0x000000dd,0x0004003d,0x00000006,0x000000e8,0x00000040,0x00050080,0x00000006, + 0x000000e9,0x000000e7,0x000000e8,0x0004003d,0x00000006,0x000000ee,0x0000004f,0x0004003d, + 0x00000006,0x000000ef,0x000000d6,0x00050084,0x00000006,0x000000f0,0x000000ef,0x000000dd, + 0x0004003d,0x00000006,0x000000f1,0x00000010,0x00050084,0x00000006,0x000000f2,0x000000f0, + 0x000000f1,0x00050080,0x00000006,0x000000f3,0x000000ee,0x000000f2,0x0004003d,0x00000006, + 0x000000f4,0x000000d3,0x00050080,0x00000006,0x000000f5,0x000000f3,0x000000f4,0x00060041, + 0x000000ba,0x000000f6,0x000000ed,0x0000006d,0x000000f5,0x0004003d,0x000000ac,0x000000f7, + 0x000000f6,0x00060041,0x000000f8,0x000000f9,0x000000e4,0x000000e5,0x000000e9,0x0003003e, + 0x000000f9,0x000000f7,0x000200f9,0x000000da,0x000200f8,0x000000da,0x0004003d,0x00000006, + 0x000000fa,0x000000d6,0x00050080,0x00000006,0x000000fb,0x000000fa,0x00000071,0x0003003e, + 0x000000d6,0x000000fb,0x000200f9,0x000000d7,0x000200f8,0x000000d9,0x0003003e,0x000000fc, + 0x0000006d,0x000200f9,0x000000fd,0x000200f8,0x000000fd,0x000400f6,0x000000ff,0x00000100, + 0x00000000,0x000200f9,0x00000101,0x000200f8,0x00000101,0x0004003d,0x00000006,0x00000102, + 0x000000fc,0x000500b1,0x000000aa,0x00000103,0x00000102,0x000000dd,0x000400fa,0x00000103, + 0x000000fe,0x000000ff,0x000200f8,0x000000fe,0x0004003d,0x00000006,0x00000105,0x000000fc, + 0x00050084,0x00000006,0x00000106,0x00000105,0x000000a0,0x0004003d,0x00000006,0x00000107, + 0x0000004a,0x00050080,0x00000006,0x00000108,0x00000106,0x00000107,0x0003003e,0x00000104, + 0x00000108,0x0004003d,0x00000006,0x0000010a,0x00000028,0x0004003d,0x00000006,0x0000010b, + 0x00000045,0x00050080,0x00000006,0x0000010c,0x0000010a,0x0000010b,0x0003003e,0x00000109, + 0x0000010c,0x0004003d,0x00000006,0x0000010d,0x00000104,0x00050041,0x0000000d,0x0000010e, + 0x0000000b,0x00000075,0x0004003d,0x00000006,0x0000010f,0x0000010e,0x000500b1,0x000000aa, + 0x00000110,0x0000010d,0x0000010f,0x0004003d,0x00000006,0x00000111,0x00000109,0x0004003d, + 0x00000006,0x00000112,0x00000014,0x000500b1,0x000000aa,0x00000113,0x00000111,0x00000112, + 0x000500a7,0x000000aa,0x00000114,0x00000110,0x00000113,0x000300f7,0x00000116,0x00000000, + 0x000400fa,0x00000114,0x00000115,0x00000131,0x000200f8,0x00000115,0x0004003d,0x00000006, + 0x0000011b,0x00000045,0x0004003d,0x00000006,0x0000011c,0x000000fc,0x00050084,0x00000006, + 0x0000011d,0x0000011c,0x000000a0,0x0004003d,0x00000006,0x0000011e,0x0000004a,0x00050080, + 0x00000006,0x0000011f,0x0000011d,0x0000011e,0x0004003d,0x00000006,0x00000124,0x00000062, + 0x0004003d,0x00000006,0x00000125,0x000000fc,0x00050084,0x00000006,0x00000126,0x00000125, + 0x000000a0,0x0004003d,0x00000006,0x00000127,0x00000014,0x00050084,0x00000006,0x00000128, + 0x00000126,0x00000127,0x00050080,0x00000006,0x00000129,0x00000124,0x00000128,0x0004003d, + 0x00000006,0x0000012a,0x000000d3,0x0004003d,0x00000006,0x0000012b,0x00000014,0x00050084, + 0x00000006,0x0000012c,0x0000012a,0x0000012b,0x00050080,0x00000006,0x0000012d,0x00000129, + 0x0000012c,0x00060041,0x000000ba,0x0000012e,0x00000123,0x0000006d,0x0000012d,0x0004003d, + 0x000000ac,0x0000012f,0x0000012e,0x00060041,0x000000f8,0x00000130,0x0000011a,0x0000011b, + 0x0000011f,0x0003003e,0x00000130,0x0000012f,0x000200f9,0x00000116,0x000200f8,0x00000131, + 0x0004003d,0x00000006,0x00000132,0x00000045,0x0004003d,0x00000006,0x00000133,0x000000fc, + 0x00050084,0x00000006,0x00000134,0x00000133,0x000000a0,0x0004003d,0x00000006,0x00000135, + 0x0000004a,0x00050080,0x00000006,0x00000136,0x00000134,0x00000135,0x00060041,0x000000f8, + 0x00000138,0x0000011a,0x00000132,0x00000136,0x0003003e,0x00000138,0x00000137,0x000200f9, + 0x00000116,0x000200f8,0x00000116,0x000200f9,0x00000100,0x000200f8,0x00000100,0x0004003d, + 0x00000006,0x00000139,0x000000fc,0x00050080,0x00000006,0x0000013a,0x00000139,0x00000071, + 0x0003003e,0x000000fc,0x0000013a,0x000200f9,0x000000fd,0x000200f8,0x000000ff,0x000400e0, + 0x0000013b,0x0000013b,0x0000013c,0x0003003e,0x0000013d,0x0000006d,0x000200f9,0x0000013e, + 0x000200f8,0x0000013e,0x000400f6,0x00000140,0x00000141,0x00000000,0x000200f9,0x00000142, + 0x000200f8,0x00000142,0x0004003d,0x00000006,0x00000143,0x0000013d,0x000500b1,0x000000aa, + 0x00000144,0x00000143,0x0000003e,0x000400fa,0x00000144,0x0000013f,0x00000140,0x000200f8, + 0x0000013f,0x0003003e,0x00000145,0x0000006d,0x000200f9,0x00000146,0x000200f8,0x00000146, + 0x000400f6,0x00000148,0x00000149,0x00000000,0x000200f9,0x0000014a,0x000200f8,0x0000014a, + 0x0004003d,0x00000006,0x0000014b,0x00000145,0x000500b1,0x000000aa,0x0000014c,0x0000014b, + 0x000000a0,0x000400fa,0x0000014c,0x00000147,0x00000148,0x000200f8,0x00000147,0x0004003d, + 0x00000006,0x00000150,0x00000145,0x0004003d,0x00000006,0x00000151,0x0000013d,0x0004003d, + 0x00000006,0x00000152,0x0000002e,0x00050084,0x00000006,0x00000153,0x00000152,0x000000a0, + 0x0004003d,0x00000006,0x00000154,0x00000145,0x00050080,0x00000006,0x00000155,0x00000153, + 0x00000154,0x00060041,0x000000f8,0x00000156,0x000000e4,0x00000151,0x00000155,0x0004003d, + 0x000000ac,0x00000157,0x00000156,0x00050041,0x00000158,0x00000159,0x0000014f,0x00000150, + 0x0003003e,0x00000159,0x00000157,0x000200f9,0x00000149,0x000200f8,0x00000149,0x0004003d, + 0x00000006,0x0000015a,0x00000145,0x00050080,0x00000006,0x0000015b,0x0000015a,0x00000071, + 0x0003003e,0x00000145,0x0000015b,0x000200f9,0x00000146,0x000200f8,0x00000148,0x0003003e, + 0x0000015c,0x0000006d,0x000200f9,0x0000015d,0x000200f8,0x0000015d,0x000400f6,0x0000015f, + 0x00000160,0x00000000,0x000200f9,0x00000161,0x000200f8,0x00000161,0x0004003d,0x00000006, + 0x00000162,0x0000015c,0x000500b1,0x000000aa,0x00000163,0x00000162,0x000000a0,0x000400fa, + 0x00000163,0x0000015e,0x0000015f,0x000200f8,0x0000015e,0x0004003d,0x00000006,0x00000165, + 0x0000015c,0x0004003d,0x00000006,0x00000166,0x00000035,0x0004003d,0x00000006,0x00000167, + 0x0000015c,0x00050084,0x00000006,0x00000168,0x00000033,0x00000167,0x00050080,0x00000006, + 0x00000169,0x00000166,0x00000168,0x0004003d,0x00000006,0x0000016a,0x0000013d,0x00060041, + 0x000000f8,0x0000016b,0x0000011a,0x00000169,0x0000016a,0x0004003d,0x000000ac,0x0000016c, + 0x0000016b,0x00050041,0x00000158,0x0000016d,0x00000164,0x00000165,0x0003003e,0x0000016d, + 0x0000016c,0x000200f9,0x00000160,0x000200f8,0x00000160,0x0004003d,0x00000006,0x0000016e, + 0x0000015c,0x00050080,0x00000006,0x0000016f,0x0000016e,0x00000071,0x0003003e,0x0000015c, + 0x0000016f,0x000200f9,0x0000015d,0x000200f8,0x0000015f,0x0003003e,0x00000170,0x0000006d, + 0x000200f9,0x00000171,0x000200f8,0x00000171,0x000400f6,0x00000173,0x00000174,0x00000000, + 0x000200f9,0x00000175,0x000200f8,0x00000175,0x0004003d,0x00000006,0x00000176,0x00000170, + 0x000500b1,0x000000aa,0x00000177,0x00000176,0x000000a0,0x000400fa,0x00000177,0x00000172, + 0x00000173,0x000200f8,0x00000172,0x0003003e,0x00000178,0x0000006d,0x000200f9,0x00000179, + 0x000200f8,0x00000179,0x000400f6,0x0000017b,0x0000017c,0x00000000,0x000200f9,0x0000017d, + 0x000200f8,0x0000017d,0x0004003d,0x00000006,0x0000017e,0x00000178,0x000500b1,0x000000aa, + 0x0000017f,0x0000017e,0x000000a0,0x000400fa,0x0000017f,0x0000017a,0x0000017b,0x000200f8, + 0x0000017a,0x0004003d,0x00000006,0x00000180,0x00000170,0x0004003d,0x00000006,0x00000181, + 0x00000178,0x0004003d,0x00000006,0x00000182,0x00000170,0x00050041,0x00000158,0x00000183, + 0x0000014f,0x00000182,0x0004003d,0x000000ac,0x00000184,0x00000183,0x0004003d,0x00000006, + 0x00000185,0x00000178,0x00050041,0x00000158,0x00000186,0x00000164,0x00000185,0x0004003d, + 0x000000ac,0x00000187,0x00000186,0x00050085,0x000000ac,0x00000188,0x00000184,0x00000187, + 0x00060041,0x00000158,0x00000189,0x000000b1,0x00000180,0x00000181,0x0004003d,0x000000ac, + 0x0000018a,0x00000189,0x00050081,0x000000ac,0x0000018b,0x0000018a,0x00000188,0x00060041, + 0x00000158,0x0000018c,0x000000b1,0x00000180,0x00000181,0x0003003e,0x0000018c,0x0000018b, + 0x000200f9,0x0000017c,0x000200f8,0x0000017c,0x0004003d,0x00000006,0x0000018d,0x00000178, + 0x00050080,0x00000006,0x0000018e,0x0000018d,0x00000071,0x0003003e,0x00000178,0x0000018e, + 0x000200f9,0x00000179,0x000200f8,0x0000017b,0x000200f9,0x00000174,0x000200f8,0x00000174, + 0x0004003d,0x00000006,0x0000018f,0x00000170,0x00050080,0x00000006,0x00000190,0x0000018f, + 0x00000071,0x0003003e,0x00000170,0x00000190,0x000200f9,0x00000171,0x000200f8,0x00000173, + 0x000200f9,0x00000141,0x000200f8,0x00000141,0x0004003d,0x00000006,0x00000191,0x0000013d, + 0x00050080,0x00000006,0x00000192,0x00000191,0x00000071,0x0003003e,0x0000013d,0x00000192, + 0x000200f9,0x0000013e,0x000200f8,0x00000140,0x000400e0,0x0000013b,0x0000013b,0x0000013c, + 0x000200f9,0x000000ce,0x000200f8,0x000000ce,0x0004003d,0x00000006,0x00000193,0x000000ca, + 0x00050080,0x00000006,0x00000194,0x00000193,0x00000071,0x0003003e,0x000000ca,0x00000194, + 0x000200f9,0x000000cb,0x000200f8,0x000000cd,0x00050041,0x0000000d,0x00000195,0x0000000b, + 0x00000033,0x0004003d,0x00000006,0x00000196,0x00000195,0x000500aa,0x000000aa,0x00000197, + 0x00000196,0x00000071,0x000300f7,0x00000199,0x00000000,0x000400fa,0x00000197,0x00000198, + 0x000001ae,0x000200f8,0x00000198,0x00050041,0x000000be,0x0000019a,0x000000b1,0x0000006d, + 0x0004003d,0x000000ad,0x0000019b,0x0000019a,0x00070050,0x000000ad,0x0000019c,0x00000137, + 0x00000137,0x00000137,0x00000137,0x0007000c,0x000000ad,0x0000019d,0x00000001,0x00000028, + 0x0000019b,0x0000019c,0x00050041,0x000000be,0x0000019e,0x000000b1,0x0000006d,0x0003003e, + 0x0000019e,0x0000019d,0x00050041,0x000000be,0x0000019f,0x000000b1,0x00000071,0x0004003d, + 0x000000ad,0x000001a0,0x0000019f,0x00070050,0x000000ad,0x000001a1,0x00000137,0x00000137, + 0x00000137,0x00000137,0x0007000c,0x000000ad,0x000001a2,0x00000001,0x00000028,0x000001a0, + 0x000001a1,0x00050041,0x000000be,0x000001a3,0x000000b1,0x00000071,0x0003003e,0x000001a3, + 0x000001a2,0x00050041,0x000000be,0x000001a4,0x000000b1,0x00000015,0x0004003d,0x000000ad, + 0x000001a5,0x000001a4,0x00070050,0x000000ad,0x000001a6,0x00000137,0x00000137,0x00000137, + 0x00000137,0x0007000c,0x000000ad,0x000001a7,0x00000001,0x00000028,0x000001a5,0x000001a6, + 0x00050041,0x000000be,0x000001a8,0x000000b1,0x00000015,0x0003003e,0x000001a8,0x000001a7, + 0x00050041,0x000000be,0x000001a9,0x000000b1,0x00000018,0x0004003d,0x000000ad,0x000001aa, + 0x000001a9,0x00070050,0x000000ad,0x000001ab,0x00000137,0x00000137,0x00000137,0x00000137, + 0x0007000c,0x000000ad,0x000001ac,0x00000001,0x00000028,0x000001aa,0x000001ab,0x00050041, + 0x000000be,0x000001ad,0x000000b1,0x00000018,0x0003003e,0x000001ad,0x000001ac,0x000200f9, + 0x00000199,0x000200f8,0x000001ae,0x00050041,0x0000000d,0x000001af,0x0000000b,0x00000033, + 0x0004003d,0x00000006,0x000001b0,0x000001af,0x000500aa,0x000000aa,0x000001b1,0x000001b0, + 0x00000015,0x000300f7,0x000001b3,0x00000000,0x000400fa,0x000001b1,0x000001b2,0x000001b3, + 0x000200f8,0x000001b2,0x00050041,0x000000be,0x000001b4,0x000000b1,0x0000006d,0x0004003d, + 0x000000ad,0x000001b5,0x000001b4,0x0008000c,0x000000ad,0x000001b9,0x00000001,0x0000002b, + 0x000001b5,0x000001b6,0x000001b8,0x00050041,0x000000be,0x000001ba,0x000000b1,0x0000006d, + 0x0003003e,0x000001ba,0x000001b9,0x00050041,0x000000be,0x000001bb,0x000000b1,0x00000071, + 0x0004003d,0x000000ad,0x000001bc,0x000001bb,0x0008000c,0x000000ad,0x000001bd,0x00000001, + 0x0000002b,0x000001bc,0x000001b6,0x000001b8,0x00050041,0x000000be,0x000001be,0x000000b1, + 0x00000071,0x0003003e,0x000001be,0x000001bd,0x00050041,0x000000be,0x000001bf,0x000000b1, + 0x00000015,0x0004003d,0x000000ad,0x000001c0,0x000001bf,0x0008000c,0x000000ad,0x000001c1, + 0x00000001,0x0000002b,0x000001c0,0x000001b6,0x000001b8,0x00050041,0x000000be,0x000001c2, + 0x000000b1,0x00000015,0x0003003e,0x000001c2,0x000001c1,0x00050041,0x000000be,0x000001c3, + 0x000000b1,0x00000018,0x0004003d,0x000000ad,0x000001c4,0x000001c3,0x0008000c,0x000000ad, + 0x000001c5,0x00000001,0x0000002b,0x000001c4,0x000001b6,0x000001b8,0x00050041,0x000000be, + 0x000001c6,0x000000b1,0x00000018,0x0003003e,0x000001c6,0x000001c5,0x000200f9,0x000001b3, + 0x000200f8,0x000001b3,0x000200f9,0x00000199,0x000200f8,0x00000199,0x0003003e,0x000001c7, + 0x0000006d,0x000200f9,0x000001c8,0x000200f8,0x000001c8,0x000400f6,0x000001ca,0x000001cb, + 0x00000000,0x000200f9,0x000001cc,0x000200f8,0x000001cc,0x0004003d,0x00000006,0x000001cd, + 0x000001c7,0x000500b1,0x000000aa,0x000001ce,0x000001cd,0x000000a0,0x000400fa,0x000001ce, + 0x000001c9,0x000001ca,0x000200f8,0x000001c9,0x0004003d,0x00000006,0x000001d0,0x00000028, + 0x0004003d,0x00000006,0x000001d1,0x000001c7,0x00050084,0x00000006,0x000001d2,0x000001d1, + 0x00000033,0x00050080,0x00000006,0x000001d3,0x000001d0,0x000001d2,0x0004003d,0x00000006, + 0x000001d4,0x00000035,0x00050080,0x00000006,0x000001d5,0x000001d3,0x000001d4,0x0003003e, + 0x000001cf,0x000001d5,0x0004003d,0x00000006,0x000001d6,0x000001cf,0x0004003d,0x00000006, + 0x000001d7,0x00000014,0x000500b1,0x000000aa,0x000001d8,0x000001d6,0x000001d7,0x000300f7, + 0x000001da,0x00000000,0x000400fa,0x000001d8,0x000001d9,0x000001da,0x000200f8,0x000001d9, + 0x0003003e,0x000001db,0x0000006d,0x000200f9,0x000001dc,0x000200f8,0x000001dc,0x000400f6, + 0x000001de,0x000001df,0x00000000,0x000200f9,0x000001e0,0x000200f8,0x000001e0,0x0004003d, + 0x00000006,0x000001e1,0x000001db,0x000500b1,0x000000aa,0x000001e2,0x000001e1,0x000000a0, + 0x000400fa,0x000001e2,0x000001dd,0x000001de,0x000200f8,0x000001dd,0x0004003d,0x00000006, + 0x000001e4,0x0000001c,0x0004003d,0x00000006,0x000001e5,0x0000002e,0x00050084,0x00000006, + 0x000001e6,0x000001e5,0x000000a0,0x00050080,0x00000006,0x000001e7,0x000001e4,0x000001e6, + 0x0004003d,0x00000006,0x000001e8,0x000001db,0x00050080,0x00000006,0x000001e9,0x000001e7, + 0x000001e8,0x0003003e,0x000001e3,0x000001e9,0x0004003d,0x00000006,0x000001ea,0x000001e3, + 0x0004003d,0x00000006,0x000001eb,0x00000008,0x000500b1,0x000000aa,0x000001ec,0x000001ea, + 0x000001eb,0x000300f7,0x000001ee,0x00000000,0x000400fa,0x000001ec,0x000001ed,0x000001ee, + 0x000200f8,0x000001ed,0x0004003d,0x00000006,0x000001f3,0x00000085,0x0004003d,0x00000006, + 0x000001f4,0x000001e3,0x0004003d,0x00000006,0x000001f5,0x00000014,0x00050084,0x00000006, + 0x000001f6,0x000001f4,0x000001f5,0x00050080,0x00000006,0x000001f7,0x000001f3,0x000001f6, + 0x0004003d,0x00000006,0x000001f8,0x000001cf,0x00050080,0x00000006,0x000001f9,0x000001f7, + 0x000001f8,0x0004003d,0x00000006,0x000001fa,0x000001db,0x0004003d,0x00000006,0x000001fb, + 0x000001c7,0x00060041,0x00000158,0x000001fc,0x000000b1,0x000001fa,0x000001fb,0x0004003d, + 0x000000ac,0x000001fd,0x000001fc,0x00060041,0x000000ba,0x000001fe,0x000001f2,0x0000006d, + 0x000001f9,0x0003003e,0x000001fe,0x000001fd,0x000200f9,0x000001ee,0x000200f8,0x000001ee, + 0x000200f9,0x000001df,0x000200f8,0x000001df,0x0004003d,0x00000006,0x000001ff,0x000001db, + 0x00050080,0x00000006,0x00000200,0x000001ff,0x00000071,0x0003003e,0x000001db,0x00000200, + 0x000200f9,0x000001dc,0x000200f8,0x000001de,0x000200f9,0x000001da,0x000200f8,0x000001da, + 0x000200f9,0x000001cb,0x000200f8,0x000001cb,0x0004003d,0x00000006,0x00000201,0x000001c7, + 0x00050080,0x00000006,0x00000202,0x00000201,0x00000071,0x0003003e,0x000001c7,0x00000202, + 0x000200f9,0x000001c8,0x000200f8,0x000001ca,0x000100fd,0x00010038 +}; + +}}} // namespace cv::dnn::vkcom diff --git a/modules/dnn/src/vkcom/shader/conv_depthwise.comp b/modules/dnn/src/vkcom/shader/conv_depthwise.comp new file mode 100644 index 0000000000..9ec9f85a59 --- /dev/null +++ b/modules/dnn/src/vkcom/shader/conv_depthwise.comp @@ -0,0 +1,125 @@ +#version 450 + +#define KSTRIP_LEN 16 +#define BLOCK_SIZE 64 // the output channel shoule be aligned to 64. +#define WARP 32 + +#define ALL_THREAD 64 + +layout(binding = 0) readonly buffer Input0{ + float image_data[]; +}; + +layout(binding = 1) readonly buffer Input1 { + float bias_data[]; +}; + +layout(binding = 2) readonly buffer Input2{ + float weight_data[]; +}; + +layout(binding = 3) writeonly buffer Output{ + float output_data[]; +}; + +layout(binding = 4) uniform pushBlock { + int Hi; // H in + int Wi; // W in + int H0; // H out + int W0; // W out + int stride_h; + int stride_w; + int pad_h; + int pad_w; + int Hk; + int Wk; + int dilation_h; + int dilation_w; + int Kg; + int Cg; + int group; + int CgHkWk_aligned; + int activationType; // 0 : no activation, 1: ReLU, 2: ReLU6. + int batchi; + int _unused; +} p; + +shared float wshare[KSTRIP_LEN]; +shared float inshare[KSTRIP_LEN][BLOCK_SIZE]; // 2 KB + +layout(local_size_x = ALL_THREAD, local_size_y = 1, local_size_z = 1) in; + +void main() +{ + int outputPlan = p.H0 * p.W0; // H0 * W0 + int HkWk = p.Hk * p.Wk; + int KStrip = p.CgHkWk_aligned / KSTRIP_LEN; + + int hwIndex = int(gl_WorkGroupID.x) * BLOCK_SIZE; + int kIndex = int(gl_WorkGroupID.y); + + int local_x = int(gl_LocalInvocationID.x); // 0 ~ 63 + + int w_local_x = int(gl_LocalInvocationID.x) % KSTRIP_LEN; // 64 % 32 = 0 ~ 31 + int w_local_y = int(gl_LocalInvocationID.x) / KSTRIP_LEN; + + int in_local_x = local_x; // 64 / 64 = 1 + + int woffset = kIndex * p.CgHkWk_aligned + w_local_x; + int inoffset = p.batchi * p.group * p.Hi * p.Wi; + int outoffset = p.batchi * p.group * p.H0 * p.W0; + + float sum = bias_data[kIndex]; + + for (int i = 0; i < KStrip; i++) + { + int kStrip = i * KSTRIP_LEN; + + // load Weight to local memory. + if (w_local_y == 0) + wshare[w_local_x] = weight_data[woffset + kStrip]; + + // load Input to local memory + for (int k = 0; k < KSTRIP_LEN; k++) + { + int hk = k / p.Wk; + int wk = k - hk * p.Wk; + int dh = hk * p.dilation_h, dw = wk * p.dilation_w; + + int h0w0 = in_local_x + hwIndex; + int h0 = h0w0 / p.W0; + int w0 = h0w0 - h0 * p.W0; + + int hi = h0 * p.stride_h + dh - p.pad_h; + int wi = w0 * p.stride_w + dw - p.pad_w; + + if (uint(hi) < uint(p.Hi) && uint(wi) < uint(p.Wi)) + inshare[k][in_local_x] = image_data[inoffset + hi * p.Wi + wi]; + else + inshare[k][in_local_x] = 0.f; + } + + barrier(); + + for (int j = 0; j < KSTRIP_LEN; j++) + { + sum += wshare[j] * inshare[j][in_local_x]; + } + + barrier(); + } + + if (p.activationType == 1) // ReLU + { + sum = max(sum, 0.f); + } + else if (p.activationType == 2) // ReLU6 + { + sum = clamp(sum, 0.f, 6.f); + } + + hwIndex += in_local_x; + + if (hwIndex < outputPlan) + output_data[outoffset + hwIndex] = sum; +} diff --git a/modules/dnn/src/vkcom/shader/conv_depthwise_3x3.comp b/modules/dnn/src/vkcom/shader/conv_depthwise_3x3.comp new file mode 100644 index 0000000000..76a15e7db3 --- /dev/null +++ b/modules/dnn/src/vkcom/shader/conv_depthwise_3x3.comp @@ -0,0 +1,121 @@ +#version 450 + +// This kernel is made for generic convolution, but for depth-wise, it is very slow. + +#define KSTRIP_LEN 16 +#define REAL_KSTRIP_LEN 9 // 3x3 kernel size. +#define BLOCK_SIZE 64 // the output channel shoule be aligned to 64. +#define WARP 32 + +#define ALL_THREAD 64 + +layout(binding = 0) readonly buffer Input0{ + float image_data[]; +}; + +layout(binding = 1) readonly buffer Input1 { + float bias_data[]; +}; + +layout(binding = 2) readonly buffer Input2{ + float weight_data[]; +}; + +layout(binding = 3) writeonly buffer Output{ + float output_data[]; +}; + +layout(binding = 4) uniform pushBlock { + int Hi; // H in + int Wi; // W in + int H0; // H out + int W0; // W out + int stride_h; + int stride_w; + int pad_h; + int pad_w; + int Hk; + int Wk; + int dilation_h; + int dilation_w; + int Kg; + int Cg; + int group; + int CgHkWk_aligned; + int activationType; // 0 : no activation, 1: ReLU, 2: ReLU6. + int batchi; + int _unused; +} p; + +shared float wshare[KSTRIP_LEN]; +shared float inshare[KSTRIP_LEN][BLOCK_SIZE]; // 2 KB + +layout(local_size_x = ALL_THREAD, local_size_y = 1, local_size_z = 1) in; + +void main() +{ + int outputPlan = p.H0 * p.W0; // H0 * W0 + int HkWk = p.Hk * p.Wk; + + int hwIndex = int(gl_WorkGroupID.x) * BLOCK_SIZE; + int kIndex = int(gl_WorkGroupID.y); + + int local_x = int(gl_LocalInvocationID.x); // 0 ~ 63 + + int w_local_x = int(gl_LocalInvocationID.x) % KSTRIP_LEN; // 64 % 32 = 0 ~ 31 + int w_local_y = int(gl_LocalInvocationID.x) / KSTRIP_LEN; + + int in_local_x = local_x; // 64 / 64 = 1 + + int woffset = kIndex * p.CgHkWk_aligned + w_local_x; + int inoffset = p.batchi * p.group * p.Hi * p.Wi; + int outoffset = p.batchi * p.group * p.H0 * p.W0; + + float sum = bias_data[kIndex]; + + // load Weight to local memory. + if (w_local_y == 0) + wshare[w_local_x] = weight_data[woffset]; + + for (int k = 0; k < REAL_KSTRIP_LEN; k++) + { + int hk = k / p.Wk; + int wk = k - hk * p.Wk; + int dh = hk * p.dilation_h, dw = wk * p.dilation_w; + + int h0w0 = in_local_x + hwIndex; + int h0 = h0w0 / p.W0; + int w0 = h0w0 - h0 * p.W0; + + int hi = h0 * p.stride_h + dh - p.pad_h; + int wi = w0 * p.stride_w + dw - p.pad_w; + + if (uint(hi) < uint(p.Hi) && uint(wi) < uint(p.Wi)) + inshare[k][in_local_x] = image_data[inoffset + hi * p.Wi + wi]; + else + inshare[k][in_local_x] = 0.f; + } + + barrier(); + + for (int j = 0; j < REAL_KSTRIP_LEN; j++) + { + sum += wshare[j] * inshare[j][in_local_x]; + } + + barrier(); + + if (p.activationType == 1) // ReLU + { + sum = max(sum, 0.f); + } + else if (p.activationType == 2) // ReLU6 + { + sum = clamp(sum, 0.f, 6.f); + } + + hwIndex += in_local_x; + + if (hwIndex < outputPlan) + output_data[outoffset + hwIndex] = sum; +} diff --git a/modules/dnn/src/vkcom/shader/conv_depthwise_3x3_spv.cpp b/modules/dnn/src/vkcom/shader/conv_depthwise_3x3_spv.cpp new file mode 100644 index 0000000000..69406cfcef --- /dev/null +++ b/modules/dnn/src/vkcom/shader/conv_depthwise_3x3_spv.cpp @@ -0,0 +1,260 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. + +#include "../../precomp.hpp" + +namespace cv { namespace dnn { namespace vkcom { + +extern const unsigned int conv_depthwise_3x3_spv[1977] = { + 0x07230203,0x00010000,0x0008000b,0x0000012f,0x00000000,0x00020011,0x00000001,0x0006000b, + 0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001, + 0x0007000f,0x00000005,0x00000004,0x6e69616d,0x00000000,0x00000020,0x0000002e,0x00060010, + 0x00000004,0x00000011,0x00000040,0x00000001,0x00000001,0x00030003,0x00000002,0x000001c2, + 0x00040005,0x00000004,0x6e69616d,0x00000000,0x00050005,0x00000008,0x7074756f,0x6c507475, + 0x00006e61,0x00050005,0x00000009,0x68737570,0x636f6c42,0x0000006b,0x00040006,0x00000009, + 0x00000000,0x00006948,0x00040006,0x00000009,0x00000001,0x00006957,0x00040006,0x00000009, + 0x00000002,0x00003048,0x00040006,0x00000009,0x00000003,0x00003057,0x00060006,0x00000009, + 0x00000004,0x69727473,0x685f6564,0x00000000,0x00060006,0x00000009,0x00000005,0x69727473, + 0x775f6564,0x00000000,0x00050006,0x00000009,0x00000006,0x5f646170,0x00000068,0x00050006, + 0x00000009,0x00000007,0x5f646170,0x00000077,0x00040006,0x00000009,0x00000008,0x00006b48, + 0x00040006,0x00000009,0x00000009,0x00006b57,0x00060006,0x00000009,0x0000000a,0x616c6964, + 0x6e6f6974,0x0000685f,0x00060006,0x00000009,0x0000000b,0x616c6964,0x6e6f6974,0x0000775f, + 0x00040006,0x00000009,0x0000000c,0x0000674b,0x00040006,0x00000009,0x0000000d,0x00006743, + 0x00050006,0x00000009,0x0000000e,0x756f7267,0x00000070,0x00070006,0x00000009,0x0000000f, + 0x6b486743,0x615f6b57,0x6e67696c,0x00006465,0x00070006,0x00000009,0x00000010,0x69746361, + 0x69746176,0x79546e6f,0x00006570,0x00050006,0x00000009,0x00000011,0x63746162,0x00006968, + 0x00050006,0x00000009,0x00000012,0x756e755f,0x00646573,0x00030005,0x0000000b,0x00000070, + 0x00040005,0x00000014,0x6b576b48,0x00000000,0x00040005,0x0000001c,0x6e497768,0x00786564, + 0x00060005,0x00000020,0x575f6c67,0x476b726f,0x70756f72,0x00004449,0x00040005,0x00000028, + 0x646e496b,0x00007865,0x00040005,0x0000002d,0x61636f6c,0x00785f6c,0x00080005,0x0000002e, + 0x4c5f6c67,0x6c61636f,0x6f766e49,0x69746163,0x44496e6f,0x00000000,0x00050005,0x00000032, + 0x6f6c5f77,0x5f6c6163,0x00000078,0x00050005,0x00000038,0x6f6c5f77,0x5f6c6163,0x00000079, + 0x00050005,0x0000003d,0x6c5f6e69,0x6c61636f,0x0000785f,0x00040005,0x0000003f,0x66666f77, + 0x00746573,0x00050005,0x00000047,0x666f6e69,0x74657366,0x00000000,0x00050005,0x00000057, + 0x6f74756f,0x65736666,0x00000074,0x00030005,0x00000065,0x006d7573,0x00040005,0x00000067, + 0x75706e49,0x00003174,0x00060006,0x00000067,0x00000000,0x73616962,0x7461645f,0x00000061, + 0x00030005,0x00000069,0x00000000,0x00040005,0x00000076,0x61687377,0x00006572,0x00040005, + 0x00000079,0x75706e49,0x00003274,0x00060006,0x00000079,0x00000000,0x67696577,0x645f7468, + 0x00617461,0x00030005,0x0000007b,0x00000000,0x00030005,0x00000081,0x0000006b,0x00030005, + 0x00000089,0x00006b68,0x00030005,0x0000008e,0x00006b77,0x00030005,0x00000095,0x00006864, + 0x00030005,0x0000009b,0x00007764,0x00040005,0x000000a1,0x30773068,0x00000000,0x00030005, + 0x000000a5,0x00003068,0x00030005,0x000000aa,0x00003077,0x00030005,0x000000b1,0x00006968, + 0x00030005,0x000000bd,0x00006977,0x00040005,0x000000de,0x68736e69,0x00657261,0x00040005, + 0x000000e2,0x75706e49,0x00003074,0x00060006,0x000000e2,0x00000000,0x67616d69,0x61645f65, + 0x00006174,0x00030005,0x000000e4,0x00000000,0x00030005,0x000000f9,0x0000006a,0x00040005, + 0x00000126,0x7074754f,0x00007475,0x00060006,0x00000126,0x00000000,0x7074756f,0x645f7475, + 0x00617461,0x00030005,0x00000128,0x00000000,0x00050048,0x00000009,0x00000000,0x00000023, + 0x00000000,0x00050048,0x00000009,0x00000001,0x00000023,0x00000004,0x00050048,0x00000009, + 0x00000002,0x00000023,0x00000008,0x00050048,0x00000009,0x00000003,0x00000023,0x0000000c, + 0x00050048,0x00000009,0x00000004,0x00000023,0x00000010,0x00050048,0x00000009,0x00000005, + 0x00000023,0x00000014,0x00050048,0x00000009,0x00000006,0x00000023,0x00000018,0x00050048, + 0x00000009,0x00000007,0x00000023,0x0000001c,0x00050048,0x00000009,0x00000008,0x00000023, + 0x00000020,0x00050048,0x00000009,0x00000009,0x00000023,0x00000024,0x00050048,0x00000009, + 0x0000000a,0x00000023,0x00000028,0x00050048,0x00000009,0x0000000b,0x00000023,0x0000002c, + 0x00050048,0x00000009,0x0000000c,0x00000023,0x00000030,0x00050048,0x00000009,0x0000000d, + 0x00000023,0x00000034,0x00050048,0x00000009,0x0000000e,0x00000023,0x00000038,0x00050048, + 0x00000009,0x0000000f,0x00000023,0x0000003c,0x00050048,0x00000009,0x00000010,0x00000023, + 0x00000040,0x00050048,0x00000009,0x00000011,0x00000023,0x00000044,0x00050048,0x00000009, + 0x00000012,0x00000023,0x00000048,0x00030047,0x00000009,0x00000002,0x00040047,0x0000000b, + 0x00000022,0x00000000,0x00040047,0x0000000b,0x00000021,0x00000004,0x00040047,0x00000020, + 0x0000000b,0x0000001a,0x00040047,0x0000002e,0x0000000b,0x0000001b,0x00040047,0x00000066, + 0x00000006,0x00000004,0x00040048,0x00000067,0x00000000,0x00000018,0x00050048,0x00000067, + 0x00000000,0x00000023,0x00000000,0x00030047,0x00000067,0x00000003,0x00040047,0x00000069, + 0x00000022,0x00000000,0x00040047,0x00000069,0x00000021,0x00000001,0x00040047,0x00000078, + 0x00000006,0x00000004,0x00040048,0x00000079,0x00000000,0x00000018,0x00050048,0x00000079, + 0x00000000,0x00000023,0x00000000,0x00030047,0x00000079,0x00000003,0x00040047,0x0000007b, + 0x00000022,0x00000000,0x00040047,0x0000007b,0x00000021,0x00000002,0x00040047,0x000000e1, + 0x00000006,0x00000004,0x00040048,0x000000e2,0x00000000,0x00000018,0x00050048,0x000000e2, + 0x00000000,0x00000023,0x00000000,0x00030047,0x000000e2,0x00000003,0x00040047,0x000000e4, + 0x00000022,0x00000000,0x00040047,0x000000e4,0x00000021,0x00000000,0x00040047,0x00000125, + 0x00000006,0x00000004,0x00040048,0x00000126,0x00000000,0x00000019,0x00050048,0x00000126, + 0x00000000,0x00000023,0x00000000,0x00030047,0x00000126,0x00000003,0x00040047,0x00000128, + 0x00000022,0x00000000,0x00040047,0x00000128,0x00000021,0x00000003,0x00040047,0x0000012e, + 0x0000000b,0x00000019,0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,0x00040015, + 0x00000006,0x00000020,0x00000001,0x00040020,0x00000007,0x00000007,0x00000006,0x0015001e, + 0x00000009,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006, + 0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006, + 0x00000006,0x00000006,0x00000006,0x00000006,0x00040020,0x0000000a,0x00000002,0x00000009, + 0x0004003b,0x0000000a,0x0000000b,0x00000002,0x0004002b,0x00000006,0x0000000c,0x00000002, + 0x00040020,0x0000000d,0x00000002,0x00000006,0x0004002b,0x00000006,0x00000010,0x00000003, + 0x0004002b,0x00000006,0x00000015,0x00000008,0x0004002b,0x00000006,0x00000018,0x00000009, + 0x00040015,0x0000001d,0x00000020,0x00000000,0x00040017,0x0000001e,0x0000001d,0x00000003, + 0x00040020,0x0000001f,0x00000001,0x0000001e,0x0004003b,0x0000001f,0x00000020,0x00000001, + 0x0004002b,0x0000001d,0x00000021,0x00000000,0x00040020,0x00000022,0x00000001,0x0000001d, + 0x0004002b,0x00000006,0x00000026,0x00000040,0x0004002b,0x0000001d,0x00000029,0x00000001, + 0x0004003b,0x0000001f,0x0000002e,0x00000001,0x0004002b,0x00000006,0x00000036,0x00000010, + 0x0004002b,0x00000006,0x00000041,0x0000000f,0x0004002b,0x00000006,0x00000048,0x00000011, + 0x0004002b,0x00000006,0x0000004b,0x0000000e,0x0004002b,0x00000006,0x0000004f,0x00000000, + 0x0004002b,0x00000006,0x00000053,0x00000001,0x00030016,0x00000063,0x00000020,0x00040020, + 0x00000064,0x00000007,0x00000063,0x0003001d,0x00000066,0x00000063,0x0003001e,0x00000067, + 0x00000066,0x00040020,0x00000068,0x00000002,0x00000067,0x0004003b,0x00000068,0x00000069, + 0x00000002,0x00040020,0x0000006b,0x00000002,0x00000063,0x00020014,0x0000006f,0x0004002b, + 0x0000001d,0x00000073,0x00000010,0x0004001c,0x00000074,0x00000063,0x00000073,0x00040020, + 0x00000075,0x00000004,0x00000074,0x0004003b,0x00000075,0x00000076,0x00000004,0x0003001d, + 0x00000078,0x00000063,0x0003001e,0x00000079,0x00000078,0x00040020,0x0000007a,0x00000002, + 0x00000079,0x0004003b,0x0000007a,0x0000007b,0x00000002,0x00040020,0x0000007f,0x00000004, + 0x00000063,0x0004002b,0x00000006,0x00000097,0x0000000a,0x0004002b,0x00000006,0x0000009d, + 0x0000000b,0x0004002b,0x00000006,0x000000b3,0x00000004,0x0004002b,0x00000006,0x000000b9, + 0x00000006,0x0004002b,0x00000006,0x000000bf,0x00000005,0x0004002b,0x00000006,0x000000c5, + 0x00000007,0x0004002b,0x0000001d,0x000000da,0x00000040,0x0004001c,0x000000db,0x00000063, + 0x000000da,0x0004001c,0x000000dc,0x000000db,0x00000073,0x00040020,0x000000dd,0x00000004, + 0x000000dc,0x0004003b,0x000000dd,0x000000de,0x00000004,0x0003001d,0x000000e1,0x00000063, + 0x0003001e,0x000000e2,0x000000e1,0x00040020,0x000000e3,0x00000002,0x000000e2,0x0004003b, + 0x000000e3,0x000000e4,0x00000002,0x0004002b,0x00000063,0x000000f3,0x00000000,0x0004002b, + 0x0000001d,0x000000f7,0x00000002,0x0004002b,0x0000001d,0x000000f8,0x00000108,0x0004002b, + 0x00000063,0x0000011b,0x40c00000,0x0003001d,0x00000125,0x00000063,0x0003001e,0x00000126, + 0x00000125,0x00040020,0x00000127,0x00000002,0x00000126,0x0004003b,0x00000127,0x00000128, + 0x00000002,0x0006002c,0x0000001e,0x0000012e,0x000000da,0x00000029,0x00000029,0x00050036, + 0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000007, + 0x00000008,0x00000007,0x0004003b,0x00000007,0x00000014,0x00000007,0x0004003b,0x00000007, + 0x0000001c,0x00000007,0x0004003b,0x00000007,0x00000028,0x00000007,0x0004003b,0x00000007, + 0x0000002d,0x00000007,0x0004003b,0x00000007,0x00000032,0x00000007,0x0004003b,0x00000007, + 0x00000038,0x00000007,0x0004003b,0x00000007,0x0000003d,0x00000007,0x0004003b,0x00000007, + 0x0000003f,0x00000007,0x0004003b,0x00000007,0x00000047,0x00000007,0x0004003b,0x00000007, + 0x00000057,0x00000007,0x0004003b,0x00000064,0x00000065,0x00000007,0x0004003b,0x00000007, + 0x00000081,0x00000007,0x0004003b,0x00000007,0x00000089,0x00000007,0x0004003b,0x00000007, + 0x0000008e,0x00000007,0x0004003b,0x00000007,0x00000095,0x00000007,0x0004003b,0x00000007, + 0x0000009b,0x00000007,0x0004003b,0x00000007,0x000000a1,0x00000007,0x0004003b,0x00000007, + 0x000000a5,0x00000007,0x0004003b,0x00000007,0x000000aa,0x00000007,0x0004003b,0x00000007, + 0x000000b1,0x00000007,0x0004003b,0x00000007,0x000000bd,0x00000007,0x0004003b,0x00000007, + 0x000000f9,0x00000007,0x00050041,0x0000000d,0x0000000e,0x0000000b,0x0000000c,0x0004003d, + 0x00000006,0x0000000f,0x0000000e,0x00050041,0x0000000d,0x00000011,0x0000000b,0x00000010, + 0x0004003d,0x00000006,0x00000012,0x00000011,0x00050084,0x00000006,0x00000013,0x0000000f, + 0x00000012,0x0003003e,0x00000008,0x00000013,0x00050041,0x0000000d,0x00000016,0x0000000b, + 0x00000015,0x0004003d,0x00000006,0x00000017,0x00000016,0x00050041,0x0000000d,0x00000019, + 0x0000000b,0x00000018,0x0004003d,0x00000006,0x0000001a,0x00000019,0x00050084,0x00000006, + 0x0000001b,0x00000017,0x0000001a,0x0003003e,0x00000014,0x0000001b,0x00050041,0x00000022, + 0x00000023,0x00000020,0x00000021,0x0004003d,0x0000001d,0x00000024,0x00000023,0x0004007c, + 0x00000006,0x00000025,0x00000024,0x00050084,0x00000006,0x00000027,0x00000025,0x00000026, + 0x0003003e,0x0000001c,0x00000027,0x00050041,0x00000022,0x0000002a,0x00000020,0x00000029, + 0x0004003d,0x0000001d,0x0000002b,0x0000002a,0x0004007c,0x00000006,0x0000002c,0x0000002b, + 0x0003003e,0x00000028,0x0000002c,0x00050041,0x00000022,0x0000002f,0x0000002e,0x00000021, + 0x0004003d,0x0000001d,0x00000030,0x0000002f,0x0004007c,0x00000006,0x00000031,0x00000030, + 0x0003003e,0x0000002d,0x00000031,0x00050041,0x00000022,0x00000033,0x0000002e,0x00000021, + 0x0004003d,0x0000001d,0x00000034,0x00000033,0x0004007c,0x00000006,0x00000035,0x00000034, + 0x0005008b,0x00000006,0x00000037,0x00000035,0x00000036,0x0003003e,0x00000032,0x00000037, + 0x00050041,0x00000022,0x00000039,0x0000002e,0x00000021,0x0004003d,0x0000001d,0x0000003a, + 0x00000039,0x0004007c,0x00000006,0x0000003b,0x0000003a,0x00050087,0x00000006,0x0000003c, + 0x0000003b,0x00000036,0x0003003e,0x00000038,0x0000003c,0x0004003d,0x00000006,0x0000003e, + 0x0000002d,0x0003003e,0x0000003d,0x0000003e,0x0004003d,0x00000006,0x00000040,0x00000028, + 0x00050041,0x0000000d,0x00000042,0x0000000b,0x00000041,0x0004003d,0x00000006,0x00000043, + 0x00000042,0x00050084,0x00000006,0x00000044,0x00000040,0x00000043,0x0004003d,0x00000006, + 0x00000045,0x00000032,0x00050080,0x00000006,0x00000046,0x00000044,0x00000045,0x0003003e, + 0x0000003f,0x00000046,0x00050041,0x0000000d,0x00000049,0x0000000b,0x00000048,0x0004003d, + 0x00000006,0x0000004a,0x00000049,0x00050041,0x0000000d,0x0000004c,0x0000000b,0x0000004b, + 0x0004003d,0x00000006,0x0000004d,0x0000004c,0x00050084,0x00000006,0x0000004e,0x0000004a, + 0x0000004d,0x00050041,0x0000000d,0x00000050,0x0000000b,0x0000004f,0x0004003d,0x00000006, + 0x00000051,0x00000050,0x00050084,0x00000006,0x00000052,0x0000004e,0x00000051,0x00050041, + 0x0000000d,0x00000054,0x0000000b,0x00000053,0x0004003d,0x00000006,0x00000055,0x00000054, + 0x00050084,0x00000006,0x00000056,0x00000052,0x00000055,0x0003003e,0x00000047,0x00000056, + 0x00050041,0x0000000d,0x00000058,0x0000000b,0x00000048,0x0004003d,0x00000006,0x00000059, + 0x00000058,0x00050041,0x0000000d,0x0000005a,0x0000000b,0x0000004b,0x0004003d,0x00000006, + 0x0000005b,0x0000005a,0x00050084,0x00000006,0x0000005c,0x00000059,0x0000005b,0x00050041, + 0x0000000d,0x0000005d,0x0000000b,0x0000000c,0x0004003d,0x00000006,0x0000005e,0x0000005d, + 0x00050084,0x00000006,0x0000005f,0x0000005c,0x0000005e,0x00050041,0x0000000d,0x00000060, + 0x0000000b,0x00000010,0x0004003d,0x00000006,0x00000061,0x00000060,0x00050084,0x00000006, + 0x00000062,0x0000005f,0x00000061,0x0003003e,0x00000057,0x00000062,0x0004003d,0x00000006, + 0x0000006a,0x00000028,0x00060041,0x0000006b,0x0000006c,0x00000069,0x0000004f,0x0000006a, + 0x0004003d,0x00000063,0x0000006d,0x0000006c,0x0003003e,0x00000065,0x0000006d,0x0004003d, + 0x00000006,0x0000006e,0x00000038,0x000500aa,0x0000006f,0x00000070,0x0000006e,0x0000004f, + 0x000300f7,0x00000072,0x00000000,0x000400fa,0x00000070,0x00000071,0x00000072,0x000200f8, + 0x00000071,0x0004003d,0x00000006,0x00000077,0x00000032,0x0004003d,0x00000006,0x0000007c, + 0x0000003f,0x00060041,0x0000006b,0x0000007d,0x0000007b,0x0000004f,0x0000007c,0x0004003d, + 0x00000063,0x0000007e,0x0000007d,0x00050041,0x0000007f,0x00000080,0x00000076,0x00000077, + 0x0003003e,0x00000080,0x0000007e,0x000200f9,0x00000072,0x000200f8,0x00000072,0x0003003e, + 0x00000081,0x0000004f,0x000200f9,0x00000082,0x000200f8,0x00000082,0x000400f6,0x00000084, + 0x00000085,0x00000000,0x000200f9,0x00000086,0x000200f8,0x00000086,0x0004003d,0x00000006, + 0x00000087,0x00000081,0x000500b1,0x0000006f,0x00000088,0x00000087,0x00000018,0x000400fa, + 0x00000088,0x00000083,0x00000084,0x000200f8,0x00000083,0x0004003d,0x00000006,0x0000008a, + 0x00000081,0x00050041,0x0000000d,0x0000008b,0x0000000b,0x00000018,0x0004003d,0x00000006, + 0x0000008c,0x0000008b,0x00050087,0x00000006,0x0000008d,0x0000008a,0x0000008c,0x0003003e, + 0x00000089,0x0000008d,0x0004003d,0x00000006,0x0000008f,0x00000081,0x0004003d,0x00000006, + 0x00000090,0x00000089,0x00050041,0x0000000d,0x00000091,0x0000000b,0x00000018,0x0004003d, + 0x00000006,0x00000092,0x00000091,0x00050084,0x00000006,0x00000093,0x00000090,0x00000092, + 0x00050082,0x00000006,0x00000094,0x0000008f,0x00000093,0x0003003e,0x0000008e,0x00000094, + 0x0004003d,0x00000006,0x00000096,0x00000089,0x00050041,0x0000000d,0x00000098,0x0000000b, + 0x00000097,0x0004003d,0x00000006,0x00000099,0x00000098,0x00050084,0x00000006,0x0000009a, + 0x00000096,0x00000099,0x0003003e,0x00000095,0x0000009a,0x0004003d,0x00000006,0x0000009c, + 0x0000008e,0x00050041,0x0000000d,0x0000009e,0x0000000b,0x0000009d,0x0004003d,0x00000006, + 0x0000009f,0x0000009e,0x00050084,0x00000006,0x000000a0,0x0000009c,0x0000009f,0x0003003e, + 0x0000009b,0x000000a0,0x0004003d,0x00000006,0x000000a2,0x0000003d,0x0004003d,0x00000006, + 0x000000a3,0x0000001c,0x00050080,0x00000006,0x000000a4,0x000000a2,0x000000a3,0x0003003e, + 0x000000a1,0x000000a4,0x0004003d,0x00000006,0x000000a6,0x000000a1,0x00050041,0x0000000d, + 0x000000a7,0x0000000b,0x00000010,0x0004003d,0x00000006,0x000000a8,0x000000a7,0x00050087, + 0x00000006,0x000000a9,0x000000a6,0x000000a8,0x0003003e,0x000000a5,0x000000a9,0x0004003d, + 0x00000006,0x000000ab,0x000000a1,0x0004003d,0x00000006,0x000000ac,0x000000a5,0x00050041, + 0x0000000d,0x000000ad,0x0000000b,0x00000010,0x0004003d,0x00000006,0x000000ae,0x000000ad, + 0x00050084,0x00000006,0x000000af,0x000000ac,0x000000ae,0x00050082,0x00000006,0x000000b0, + 0x000000ab,0x000000af,0x0003003e,0x000000aa,0x000000b0,0x0004003d,0x00000006,0x000000b2, + 0x000000a5,0x00050041,0x0000000d,0x000000b4,0x0000000b,0x000000b3,0x0004003d,0x00000006, + 0x000000b5,0x000000b4,0x00050084,0x00000006,0x000000b6,0x000000b2,0x000000b5,0x0004003d, + 0x00000006,0x000000b7,0x00000095,0x00050080,0x00000006,0x000000b8,0x000000b6,0x000000b7, + 0x00050041,0x0000000d,0x000000ba,0x0000000b,0x000000b9,0x0004003d,0x00000006,0x000000bb, + 0x000000ba,0x00050082,0x00000006,0x000000bc,0x000000b8,0x000000bb,0x0003003e,0x000000b1, + 0x000000bc,0x0004003d,0x00000006,0x000000be,0x000000aa,0x00050041,0x0000000d,0x000000c0, + 0x0000000b,0x000000bf,0x0004003d,0x00000006,0x000000c1,0x000000c0,0x00050084,0x00000006, + 0x000000c2,0x000000be,0x000000c1,0x0004003d,0x00000006,0x000000c3,0x0000009b,0x00050080, + 0x00000006,0x000000c4,0x000000c2,0x000000c3,0x00050041,0x0000000d,0x000000c6,0x0000000b, + 0x000000c5,0x0004003d,0x00000006,0x000000c7,0x000000c6,0x00050082,0x00000006,0x000000c8, + 0x000000c4,0x000000c7,0x0003003e,0x000000bd,0x000000c8,0x0004003d,0x00000006,0x000000c9, + 0x000000b1,0x0004007c,0x0000001d,0x000000ca,0x000000c9,0x00050041,0x0000000d,0x000000cb, + 0x0000000b,0x0000004f,0x0004003d,0x00000006,0x000000cc,0x000000cb,0x0004007c,0x0000001d, + 0x000000cd,0x000000cc,0x000500b0,0x0000006f,0x000000ce,0x000000ca,0x000000cd,0x000300f7, + 0x000000d0,0x00000000,0x000400fa,0x000000ce,0x000000cf,0x000000d0,0x000200f8,0x000000cf, + 0x0004003d,0x00000006,0x000000d1,0x000000bd,0x0004007c,0x0000001d,0x000000d2,0x000000d1, + 0x00050041,0x0000000d,0x000000d3,0x0000000b,0x00000053,0x0004003d,0x00000006,0x000000d4, + 0x000000d3,0x0004007c,0x0000001d,0x000000d5,0x000000d4,0x000500b0,0x0000006f,0x000000d6, + 0x000000d2,0x000000d5,0x000200f9,0x000000d0,0x000200f8,0x000000d0,0x000700f5,0x0000006f, + 0x000000d7,0x000000ce,0x00000083,0x000000d6,0x000000cf,0x000300f7,0x000000d9,0x00000000, + 0x000400fa,0x000000d7,0x000000d8,0x000000f0,0x000200f8,0x000000d8,0x0004003d,0x00000006, + 0x000000df,0x00000081,0x0004003d,0x00000006,0x000000e0,0x0000003d,0x0004003d,0x00000006, + 0x000000e5,0x00000047,0x0004003d,0x00000006,0x000000e6,0x000000b1,0x00050041,0x0000000d, + 0x000000e7,0x0000000b,0x00000053,0x0004003d,0x00000006,0x000000e8,0x000000e7,0x00050084, + 0x00000006,0x000000e9,0x000000e6,0x000000e8,0x00050080,0x00000006,0x000000ea,0x000000e5, + 0x000000e9,0x0004003d,0x00000006,0x000000eb,0x000000bd,0x00050080,0x00000006,0x000000ec, + 0x000000ea,0x000000eb,0x00060041,0x0000006b,0x000000ed,0x000000e4,0x0000004f,0x000000ec, + 0x0004003d,0x00000063,0x000000ee,0x000000ed,0x00060041,0x0000007f,0x000000ef,0x000000de, + 0x000000df,0x000000e0,0x0003003e,0x000000ef,0x000000ee,0x000200f9,0x000000d9,0x000200f8, + 0x000000f0,0x0004003d,0x00000006,0x000000f1,0x00000081,0x0004003d,0x00000006,0x000000f2, + 0x0000003d,0x00060041,0x0000007f,0x000000f4,0x000000de,0x000000f1,0x000000f2,0x0003003e, + 0x000000f4,0x000000f3,0x000200f9,0x000000d9,0x000200f8,0x000000d9,0x000200f9,0x00000085, + 0x000200f8,0x00000085,0x0004003d,0x00000006,0x000000f5,0x00000081,0x00050080,0x00000006, + 0x000000f6,0x000000f5,0x00000053,0x0003003e,0x00000081,0x000000f6,0x000200f9,0x00000082, + 0x000200f8,0x00000084,0x000400e0,0x000000f7,0x000000f7,0x000000f8,0x0003003e,0x000000f9, + 0x0000004f,0x000200f9,0x000000fa,0x000200f8,0x000000fa,0x000400f6,0x000000fc,0x000000fd, + 0x00000000,0x000200f9,0x000000fe,0x000200f8,0x000000fe,0x0004003d,0x00000006,0x000000ff, + 0x000000f9,0x000500b1,0x0000006f,0x00000100,0x000000ff,0x00000018,0x000400fa,0x00000100, + 0x000000fb,0x000000fc,0x000200f8,0x000000fb,0x0004003d,0x00000006,0x00000101,0x000000f9, + 0x00050041,0x0000007f,0x00000102,0x00000076,0x00000101,0x0004003d,0x00000063,0x00000103, + 0x00000102,0x0004003d,0x00000006,0x00000104,0x000000f9,0x0004003d,0x00000006,0x00000105, + 0x0000003d,0x00060041,0x0000007f,0x00000106,0x000000de,0x00000104,0x00000105,0x0004003d, + 0x00000063,0x00000107,0x00000106,0x00050085,0x00000063,0x00000108,0x00000103,0x00000107, + 0x0004003d,0x00000063,0x00000109,0x00000065,0x00050081,0x00000063,0x0000010a,0x00000109, + 0x00000108,0x0003003e,0x00000065,0x0000010a,0x000200f9,0x000000fd,0x000200f8,0x000000fd, + 0x0004003d,0x00000006,0x0000010b,0x000000f9,0x00050080,0x00000006,0x0000010c,0x0000010b, + 0x00000053,0x0003003e,0x000000f9,0x0000010c,0x000200f9,0x000000fa,0x000200f8,0x000000fc, + 0x000400e0,0x000000f7,0x000000f7,0x000000f8,0x00050041,0x0000000d,0x0000010d,0x0000000b, + 0x00000036,0x0004003d,0x00000006,0x0000010e,0x0000010d,0x000500aa,0x0000006f,0x0000010f, + 0x0000010e,0x00000053,0x000300f7,0x00000111,0x00000000,0x000400fa,0x0000010f,0x00000110, + 0x00000114,0x000200f8,0x00000110,0x0004003d,0x00000063,0x00000112,0x00000065,0x0007000c, + 0x00000063,0x00000113,0x00000001,0x00000028,0x00000112,0x000000f3,0x0003003e,0x00000065, + 0x00000113,0x000200f9,0x00000111,0x000200f8,0x00000114,0x00050041,0x0000000d,0x00000115, + 0x0000000b,0x00000036,0x0004003d,0x00000006,0x00000116,0x00000115,0x000500aa,0x0000006f, + 0x00000117,0x00000116,0x0000000c,0x000300f7,0x00000119,0x00000000,0x000400fa,0x00000117, + 0x00000118,0x00000119,0x000200f8,0x00000118,0x0004003d,0x00000063,0x0000011a,0x00000065, + 0x0008000c,0x00000063,0x0000011c,0x00000001,0x0000002b,0x0000011a,0x000000f3,0x0000011b, + 0x0003003e,0x00000065,0x0000011c,0x000200f9,0x00000119,0x000200f8,0x00000119,0x000200f9, + 0x00000111,0x000200f8,0x00000111,0x0004003d,0x00000006,0x0000011d,0x0000003d,0x0004003d, + 0x00000006,0x0000011e,0x0000001c,0x00050080,0x00000006,0x0000011f,0x0000011e,0x0000011d, + 0x0003003e,0x0000001c,0x0000011f,0x0004003d,0x00000006,0x00000120,0x0000001c,0x0004003d, + 0x00000006,0x00000121,0x00000008,0x000500b1,0x0000006f,0x00000122,0x00000120,0x00000121, + 0x000300f7,0x00000124,0x00000000,0x000400fa,0x00000122,0x00000123,0x00000124,0x000200f8, + 0x00000123,0x0004003d,0x00000006,0x00000129,0x00000057,0x0004003d,0x00000006,0x0000012a, + 0x0000001c,0x00050080,0x00000006,0x0000012b,0x00000129,0x0000012a,0x0004003d,0x00000063, + 0x0000012c,0x00000065,0x00060041,0x0000006b,0x0000012d,0x00000128,0x0000004f,0x0000012b, + 0x0003003e,0x0000012d,0x0000012c,0x000200f9,0x00000124,0x000200f8,0x00000124,0x000100fd, + 0x00010038 +}; + +}}} // namespace cv::dnn::vkcom diff --git a/modules/dnn/src/vkcom/shader/conv_depthwise_spv.cpp b/modules/dnn/src/vkcom/shader/conv_depthwise_spv.cpp new file mode 100644 index 0000000000..326a36e98c --- /dev/null +++ b/modules/dnn/src/vkcom/shader/conv_depthwise_spv.cpp @@ -0,0 +1,274 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. + +#include "../../precomp.hpp" + +namespace cv { namespace dnn { namespace vkcom { + +extern const unsigned int conv_depthwise_spv[2092] = { + 0x07230203,0x00010000,0x0008000b,0x00000143,0x00000000,0x00020011,0x00000001,0x0006000b, + 0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001, + 0x0007000f,0x00000005,0x00000004,0x6e69616d,0x00000000,0x00000026,0x00000034,0x00060010, + 0x00000004,0x00000011,0x00000040,0x00000001,0x00000001,0x00030003,0x00000002,0x000001c2, + 0x00040005,0x00000004,0x6e69616d,0x00000000,0x00050005,0x00000008,0x7074756f,0x6c507475, + 0x00006e61,0x00050005,0x00000009,0x68737570,0x636f6c42,0x0000006b,0x00040006,0x00000009, + 0x00000000,0x00006948,0x00040006,0x00000009,0x00000001,0x00006957,0x00040006,0x00000009, + 0x00000002,0x00003048,0x00040006,0x00000009,0x00000003,0x00003057,0x00060006,0x00000009, + 0x00000004,0x69727473,0x685f6564,0x00000000,0x00060006,0x00000009,0x00000005,0x69727473, + 0x775f6564,0x00000000,0x00050006,0x00000009,0x00000006,0x5f646170,0x00000068,0x00050006, + 0x00000009,0x00000007,0x5f646170,0x00000077,0x00040006,0x00000009,0x00000008,0x00006b48, + 0x00040006,0x00000009,0x00000009,0x00006b57,0x00060006,0x00000009,0x0000000a,0x616c6964, + 0x6e6f6974,0x0000685f,0x00060006,0x00000009,0x0000000b,0x616c6964,0x6e6f6974,0x0000775f, + 0x00040006,0x00000009,0x0000000c,0x0000674b,0x00040006,0x00000009,0x0000000d,0x00006743, + 0x00050006,0x00000009,0x0000000e,0x756f7267,0x00000070,0x00070006,0x00000009,0x0000000f, + 0x6b486743,0x615f6b57,0x6e67696c,0x00006465,0x00070006,0x00000009,0x00000010,0x69746361, + 0x69746176,0x79546e6f,0x00006570,0x00050006,0x00000009,0x00000011,0x63746162,0x00006968, + 0x00050006,0x00000009,0x00000012,0x756e755f,0x00646573,0x00030005,0x0000000b,0x00000070, + 0x00040005,0x00000014,0x6b576b48,0x00000000,0x00040005,0x0000001c,0x7274534b,0x00007069, + 0x00040005,0x00000022,0x6e497768,0x00786564,0x00060005,0x00000026,0x575f6c67,0x476b726f, + 0x70756f72,0x00004449,0x00040005,0x0000002e,0x646e496b,0x00007865,0x00040005,0x00000033, + 0x61636f6c,0x00785f6c,0x00080005,0x00000034,0x4c5f6c67,0x6c61636f,0x6f766e49,0x69746163, + 0x44496e6f,0x00000000,0x00050005,0x00000038,0x6f6c5f77,0x5f6c6163,0x00000078,0x00050005, + 0x0000003d,0x6f6c5f77,0x5f6c6163,0x00000079,0x00050005,0x00000042,0x6c5f6e69,0x6c61636f, + 0x0000785f,0x00040005,0x00000044,0x66666f77,0x00746573,0x00050005,0x0000004b,0x666f6e69, + 0x74657366,0x00000000,0x00050005,0x0000005b,0x6f74756f,0x65736666,0x00000074,0x00030005, + 0x00000069,0x006d7573,0x00040005,0x0000006b,0x75706e49,0x00003174,0x00060006,0x0000006b, + 0x00000000,0x73616962,0x7461645f,0x00000061,0x00030005,0x0000006d,0x00000000,0x00030005, + 0x00000072,0x00000069,0x00040005,0x0000007c,0x7274536b,0x00007069,0x00040005,0x00000086, + 0x61687377,0x00006572,0x00040005,0x00000089,0x75706e49,0x00003274,0x00060006,0x00000089, + 0x00000000,0x67696577,0x645f7468,0x00617461,0x00030005,0x0000008b,0x00000000,0x00030005, + 0x00000093,0x0000006b,0x00030005,0x0000009b,0x00006b68,0x00030005,0x000000a0,0x00006b77, + 0x00030005,0x000000a7,0x00006864,0x00030005,0x000000ad,0x00007764,0x00040005,0x000000b3, + 0x30773068,0x00000000,0x00030005,0x000000b7,0x00003068,0x00030005,0x000000bc,0x00003077, + 0x00030005,0x000000c3,0x00006968,0x00030005,0x000000cf,0x00006977,0x00040005,0x000000f0, + 0x68736e69,0x00657261,0x00040005,0x000000f4,0x75706e49,0x00003074,0x00060006,0x000000f4, + 0x00000000,0x67616d69,0x61645f65,0x00006174,0x00030005,0x000000f6,0x00000000,0x00030005, + 0x0000010b,0x0000006a,0x00040005,0x0000013a,0x7074754f,0x00007475,0x00060006,0x0000013a, + 0x00000000,0x7074756f,0x645f7475,0x00617461,0x00030005,0x0000013c,0x00000000,0x00050048, + 0x00000009,0x00000000,0x00000023,0x00000000,0x00050048,0x00000009,0x00000001,0x00000023, + 0x00000004,0x00050048,0x00000009,0x00000002,0x00000023,0x00000008,0x00050048,0x00000009, + 0x00000003,0x00000023,0x0000000c,0x00050048,0x00000009,0x00000004,0x00000023,0x00000010, + 0x00050048,0x00000009,0x00000005,0x00000023,0x00000014,0x00050048,0x00000009,0x00000006, + 0x00000023,0x00000018,0x00050048,0x00000009,0x00000007,0x00000023,0x0000001c,0x00050048, + 0x00000009,0x00000008,0x00000023,0x00000020,0x00050048,0x00000009,0x00000009,0x00000023, + 0x00000024,0x00050048,0x00000009,0x0000000a,0x00000023,0x00000028,0x00050048,0x00000009, + 0x0000000b,0x00000023,0x0000002c,0x00050048,0x00000009,0x0000000c,0x00000023,0x00000030, + 0x00050048,0x00000009,0x0000000d,0x00000023,0x00000034,0x00050048,0x00000009,0x0000000e, + 0x00000023,0x00000038,0x00050048,0x00000009,0x0000000f,0x00000023,0x0000003c,0x00050048, + 0x00000009,0x00000010,0x00000023,0x00000040,0x00050048,0x00000009,0x00000011,0x00000023, + 0x00000044,0x00050048,0x00000009,0x00000012,0x00000023,0x00000048,0x00030047,0x00000009, + 0x00000002,0x00040047,0x0000000b,0x00000022,0x00000000,0x00040047,0x0000000b,0x00000021, + 0x00000004,0x00040047,0x00000026,0x0000000b,0x0000001a,0x00040047,0x00000034,0x0000000b, + 0x0000001b,0x00040047,0x0000006a,0x00000006,0x00000004,0x00040048,0x0000006b,0x00000000, + 0x00000018,0x00050048,0x0000006b,0x00000000,0x00000023,0x00000000,0x00030047,0x0000006b, + 0x00000003,0x00040047,0x0000006d,0x00000022,0x00000000,0x00040047,0x0000006d,0x00000021, + 0x00000001,0x00040047,0x00000088,0x00000006,0x00000004,0x00040048,0x00000089,0x00000000, + 0x00000018,0x00050048,0x00000089,0x00000000,0x00000023,0x00000000,0x00030047,0x00000089, + 0x00000003,0x00040047,0x0000008b,0x00000022,0x00000000,0x00040047,0x0000008b,0x00000021, + 0x00000002,0x00040047,0x000000f3,0x00000006,0x00000004,0x00040048,0x000000f4,0x00000000, + 0x00000018,0x00050048,0x000000f4,0x00000000,0x00000023,0x00000000,0x00030047,0x000000f4, + 0x00000003,0x00040047,0x000000f6,0x00000022,0x00000000,0x00040047,0x000000f6,0x00000021, + 0x00000000,0x00040047,0x00000139,0x00000006,0x00000004,0x00040048,0x0000013a,0x00000000, + 0x00000019,0x00050048,0x0000013a,0x00000000,0x00000023,0x00000000,0x00030047,0x0000013a, + 0x00000003,0x00040047,0x0000013c,0x00000022,0x00000000,0x00040047,0x0000013c,0x00000021, + 0x00000003,0x00040047,0x00000142,0x0000000b,0x00000019,0x00020013,0x00000002,0x00030021, + 0x00000003,0x00000002,0x00040015,0x00000006,0x00000020,0x00000001,0x00040020,0x00000007, + 0x00000007,0x00000006,0x0015001e,0x00000009,0x00000006,0x00000006,0x00000006,0x00000006, + 0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006, + 0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00040020, + 0x0000000a,0x00000002,0x00000009,0x0004003b,0x0000000a,0x0000000b,0x00000002,0x0004002b, + 0x00000006,0x0000000c,0x00000002,0x00040020,0x0000000d,0x00000002,0x00000006,0x0004002b, + 0x00000006,0x00000010,0x00000003,0x0004002b,0x00000006,0x00000015,0x00000008,0x0004002b, + 0x00000006,0x00000018,0x00000009,0x0004002b,0x00000006,0x0000001d,0x0000000f,0x0004002b, + 0x00000006,0x00000020,0x00000010,0x00040015,0x00000023,0x00000020,0x00000000,0x00040017, + 0x00000024,0x00000023,0x00000003,0x00040020,0x00000025,0x00000001,0x00000024,0x0004003b, + 0x00000025,0x00000026,0x00000001,0x0004002b,0x00000023,0x00000027,0x00000000,0x00040020, + 0x00000028,0x00000001,0x00000023,0x0004002b,0x00000006,0x0000002c,0x00000040,0x0004002b, + 0x00000023,0x0000002f,0x00000001,0x0004003b,0x00000025,0x00000034,0x00000001,0x0004002b, + 0x00000006,0x0000004c,0x00000011,0x0004002b,0x00000006,0x0000004f,0x0000000e,0x0004002b, + 0x00000006,0x00000053,0x00000000,0x0004002b,0x00000006,0x00000057,0x00000001,0x00030016, + 0x00000067,0x00000020,0x00040020,0x00000068,0x00000007,0x00000067,0x0003001d,0x0000006a, + 0x00000067,0x0003001e,0x0000006b,0x0000006a,0x00040020,0x0000006c,0x00000002,0x0000006b, + 0x0004003b,0x0000006c,0x0000006d,0x00000002,0x00040020,0x0000006f,0x00000002,0x00000067, + 0x00020014,0x0000007a,0x0004002b,0x00000023,0x00000083,0x00000010,0x0004001c,0x00000084, + 0x00000067,0x00000083,0x00040020,0x00000085,0x00000004,0x00000084,0x0004003b,0x00000085, + 0x00000086,0x00000004,0x0003001d,0x00000088,0x00000067,0x0003001e,0x00000089,0x00000088, + 0x00040020,0x0000008a,0x00000002,0x00000089,0x0004003b,0x0000008a,0x0000008b,0x00000002, + 0x00040020,0x00000091,0x00000004,0x00000067,0x0004002b,0x00000006,0x000000a9,0x0000000a, + 0x0004002b,0x00000006,0x000000af,0x0000000b,0x0004002b,0x00000006,0x000000c5,0x00000004, + 0x0004002b,0x00000006,0x000000cb,0x00000006,0x0004002b,0x00000006,0x000000d1,0x00000005, + 0x0004002b,0x00000006,0x000000d7,0x00000007,0x0004002b,0x00000023,0x000000ec,0x00000040, + 0x0004001c,0x000000ed,0x00000067,0x000000ec,0x0004001c,0x000000ee,0x000000ed,0x00000083, + 0x00040020,0x000000ef,0x00000004,0x000000ee,0x0004003b,0x000000ef,0x000000f0,0x00000004, + 0x0003001d,0x000000f3,0x00000067,0x0003001e,0x000000f4,0x000000f3,0x00040020,0x000000f5, + 0x00000002,0x000000f4,0x0004003b,0x000000f5,0x000000f6,0x00000002,0x0004002b,0x00000067, + 0x00000105,0x00000000,0x0004002b,0x00000023,0x00000109,0x00000002,0x0004002b,0x00000023, + 0x0000010a,0x00000108,0x0004002b,0x00000067,0x0000012f,0x40c00000,0x0003001d,0x00000139, + 0x00000067,0x0003001e,0x0000013a,0x00000139,0x00040020,0x0000013b,0x00000002,0x0000013a, + 0x0004003b,0x0000013b,0x0000013c,0x00000002,0x0006002c,0x00000024,0x00000142,0x000000ec, + 0x0000002f,0x0000002f,0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8, + 0x00000005,0x0004003b,0x00000007,0x00000008,0x00000007,0x0004003b,0x00000007,0x00000014, + 0x00000007,0x0004003b,0x00000007,0x0000001c,0x00000007,0x0004003b,0x00000007,0x00000022, + 0x00000007,0x0004003b,0x00000007,0x0000002e,0x00000007,0x0004003b,0x00000007,0x00000033, + 0x00000007,0x0004003b,0x00000007,0x00000038,0x00000007,0x0004003b,0x00000007,0x0000003d, + 0x00000007,0x0004003b,0x00000007,0x00000042,0x00000007,0x0004003b,0x00000007,0x00000044, + 0x00000007,0x0004003b,0x00000007,0x0000004b,0x00000007,0x0004003b,0x00000007,0x0000005b, + 0x00000007,0x0004003b,0x00000068,0x00000069,0x00000007,0x0004003b,0x00000007,0x00000072, + 0x00000007,0x0004003b,0x00000007,0x0000007c,0x00000007,0x0004003b,0x00000007,0x00000093, + 0x00000007,0x0004003b,0x00000007,0x0000009b,0x00000007,0x0004003b,0x00000007,0x000000a0, + 0x00000007,0x0004003b,0x00000007,0x000000a7,0x00000007,0x0004003b,0x00000007,0x000000ad, + 0x00000007,0x0004003b,0x00000007,0x000000b3,0x00000007,0x0004003b,0x00000007,0x000000b7, + 0x00000007,0x0004003b,0x00000007,0x000000bc,0x00000007,0x0004003b,0x00000007,0x000000c3, + 0x00000007,0x0004003b,0x00000007,0x000000cf,0x00000007,0x0004003b,0x00000007,0x0000010b, + 0x00000007,0x00050041,0x0000000d,0x0000000e,0x0000000b,0x0000000c,0x0004003d,0x00000006, + 0x0000000f,0x0000000e,0x00050041,0x0000000d,0x00000011,0x0000000b,0x00000010,0x0004003d, + 0x00000006,0x00000012,0x00000011,0x00050084,0x00000006,0x00000013,0x0000000f,0x00000012, + 0x0003003e,0x00000008,0x00000013,0x00050041,0x0000000d,0x00000016,0x0000000b,0x00000015, + 0x0004003d,0x00000006,0x00000017,0x00000016,0x00050041,0x0000000d,0x00000019,0x0000000b, + 0x00000018,0x0004003d,0x00000006,0x0000001a,0x00000019,0x00050084,0x00000006,0x0000001b, + 0x00000017,0x0000001a,0x0003003e,0x00000014,0x0000001b,0x00050041,0x0000000d,0x0000001e, + 0x0000000b,0x0000001d,0x0004003d,0x00000006,0x0000001f,0x0000001e,0x00050087,0x00000006, + 0x00000021,0x0000001f,0x00000020,0x0003003e,0x0000001c,0x00000021,0x00050041,0x00000028, + 0x00000029,0x00000026,0x00000027,0x0004003d,0x00000023,0x0000002a,0x00000029,0x0004007c, + 0x00000006,0x0000002b,0x0000002a,0x00050084,0x00000006,0x0000002d,0x0000002b,0x0000002c, + 0x0003003e,0x00000022,0x0000002d,0x00050041,0x00000028,0x00000030,0x00000026,0x0000002f, + 0x0004003d,0x00000023,0x00000031,0x00000030,0x0004007c,0x00000006,0x00000032,0x00000031, + 0x0003003e,0x0000002e,0x00000032,0x00050041,0x00000028,0x00000035,0x00000034,0x00000027, + 0x0004003d,0x00000023,0x00000036,0x00000035,0x0004007c,0x00000006,0x00000037,0x00000036, + 0x0003003e,0x00000033,0x00000037,0x00050041,0x00000028,0x00000039,0x00000034,0x00000027, + 0x0004003d,0x00000023,0x0000003a,0x00000039,0x0004007c,0x00000006,0x0000003b,0x0000003a, + 0x0005008b,0x00000006,0x0000003c,0x0000003b,0x00000020,0x0003003e,0x00000038,0x0000003c, + 0x00050041,0x00000028,0x0000003e,0x00000034,0x00000027,0x0004003d,0x00000023,0x0000003f, + 0x0000003e,0x0004007c,0x00000006,0x00000040,0x0000003f,0x00050087,0x00000006,0x00000041, + 0x00000040,0x00000020,0x0003003e,0x0000003d,0x00000041,0x0004003d,0x00000006,0x00000043, + 0x00000033,0x0003003e,0x00000042,0x00000043,0x0004003d,0x00000006,0x00000045,0x0000002e, + 0x00050041,0x0000000d,0x00000046,0x0000000b,0x0000001d,0x0004003d,0x00000006,0x00000047, + 0x00000046,0x00050084,0x00000006,0x00000048,0x00000045,0x00000047,0x0004003d,0x00000006, + 0x00000049,0x00000038,0x00050080,0x00000006,0x0000004a,0x00000048,0x00000049,0x0003003e, + 0x00000044,0x0000004a,0x00050041,0x0000000d,0x0000004d,0x0000000b,0x0000004c,0x0004003d, + 0x00000006,0x0000004e,0x0000004d,0x00050041,0x0000000d,0x00000050,0x0000000b,0x0000004f, + 0x0004003d,0x00000006,0x00000051,0x00000050,0x00050084,0x00000006,0x00000052,0x0000004e, + 0x00000051,0x00050041,0x0000000d,0x00000054,0x0000000b,0x00000053,0x0004003d,0x00000006, + 0x00000055,0x00000054,0x00050084,0x00000006,0x00000056,0x00000052,0x00000055,0x00050041, + 0x0000000d,0x00000058,0x0000000b,0x00000057,0x0004003d,0x00000006,0x00000059,0x00000058, + 0x00050084,0x00000006,0x0000005a,0x00000056,0x00000059,0x0003003e,0x0000004b,0x0000005a, + 0x00050041,0x0000000d,0x0000005c,0x0000000b,0x0000004c,0x0004003d,0x00000006,0x0000005d, + 0x0000005c,0x00050041,0x0000000d,0x0000005e,0x0000000b,0x0000004f,0x0004003d,0x00000006, + 0x0000005f,0x0000005e,0x00050084,0x00000006,0x00000060,0x0000005d,0x0000005f,0x00050041, + 0x0000000d,0x00000061,0x0000000b,0x0000000c,0x0004003d,0x00000006,0x00000062,0x00000061, + 0x00050084,0x00000006,0x00000063,0x00000060,0x00000062,0x00050041,0x0000000d,0x00000064, + 0x0000000b,0x00000010,0x0004003d,0x00000006,0x00000065,0x00000064,0x00050084,0x00000006, + 0x00000066,0x00000063,0x00000065,0x0003003e,0x0000005b,0x00000066,0x0004003d,0x00000006, + 0x0000006e,0x0000002e,0x00060041,0x0000006f,0x00000070,0x0000006d,0x00000053,0x0000006e, + 0x0004003d,0x00000067,0x00000071,0x00000070,0x0003003e,0x00000069,0x00000071,0x0003003e, + 0x00000072,0x00000053,0x000200f9,0x00000073,0x000200f8,0x00000073,0x000400f6,0x00000075, + 0x00000076,0x00000000,0x000200f9,0x00000077,0x000200f8,0x00000077,0x0004003d,0x00000006, + 0x00000078,0x00000072,0x0004003d,0x00000006,0x00000079,0x0000001c,0x000500b1,0x0000007a, + 0x0000007b,0x00000078,0x00000079,0x000400fa,0x0000007b,0x00000074,0x00000075,0x000200f8, + 0x00000074,0x0004003d,0x00000006,0x0000007d,0x00000072,0x00050084,0x00000006,0x0000007e, + 0x0000007d,0x00000020,0x0003003e,0x0000007c,0x0000007e,0x0004003d,0x00000006,0x0000007f, + 0x0000003d,0x000500aa,0x0000007a,0x00000080,0x0000007f,0x00000053,0x000300f7,0x00000082, + 0x00000000,0x000400fa,0x00000080,0x00000081,0x00000082,0x000200f8,0x00000081,0x0004003d, + 0x00000006,0x00000087,0x00000038,0x0004003d,0x00000006,0x0000008c,0x00000044,0x0004003d, + 0x00000006,0x0000008d,0x0000007c,0x00050080,0x00000006,0x0000008e,0x0000008c,0x0000008d, + 0x00060041,0x0000006f,0x0000008f,0x0000008b,0x00000053,0x0000008e,0x0004003d,0x00000067, + 0x00000090,0x0000008f,0x00050041,0x00000091,0x00000092,0x00000086,0x00000087,0x0003003e, + 0x00000092,0x00000090,0x000200f9,0x00000082,0x000200f8,0x00000082,0x0003003e,0x00000093, + 0x00000053,0x000200f9,0x00000094,0x000200f8,0x00000094,0x000400f6,0x00000096,0x00000097, + 0x00000000,0x000200f9,0x00000098,0x000200f8,0x00000098,0x0004003d,0x00000006,0x00000099, + 0x00000093,0x000500b1,0x0000007a,0x0000009a,0x00000099,0x00000020,0x000400fa,0x0000009a, + 0x00000095,0x00000096,0x000200f8,0x00000095,0x0004003d,0x00000006,0x0000009c,0x00000093, + 0x00050041,0x0000000d,0x0000009d,0x0000000b,0x00000018,0x0004003d,0x00000006,0x0000009e, + 0x0000009d,0x00050087,0x00000006,0x0000009f,0x0000009c,0x0000009e,0x0003003e,0x0000009b, + 0x0000009f,0x0004003d,0x00000006,0x000000a1,0x00000093,0x0004003d,0x00000006,0x000000a2, + 0x0000009b,0x00050041,0x0000000d,0x000000a3,0x0000000b,0x00000018,0x0004003d,0x00000006, + 0x000000a4,0x000000a3,0x00050084,0x00000006,0x000000a5,0x000000a2,0x000000a4,0x00050082, + 0x00000006,0x000000a6,0x000000a1,0x000000a5,0x0003003e,0x000000a0,0x000000a6,0x0004003d, + 0x00000006,0x000000a8,0x0000009b,0x00050041,0x0000000d,0x000000aa,0x0000000b,0x000000a9, + 0x0004003d,0x00000006,0x000000ab,0x000000aa,0x00050084,0x00000006,0x000000ac,0x000000a8, + 0x000000ab,0x0003003e,0x000000a7,0x000000ac,0x0004003d,0x00000006,0x000000ae,0x000000a0, + 0x00050041,0x0000000d,0x000000b0,0x0000000b,0x000000af,0x0004003d,0x00000006,0x000000b1, + 0x000000b0,0x00050084,0x00000006,0x000000b2,0x000000ae,0x000000b1,0x0003003e,0x000000ad, + 0x000000b2,0x0004003d,0x00000006,0x000000b4,0x00000042,0x0004003d,0x00000006,0x000000b5, + 0x00000022,0x00050080,0x00000006,0x000000b6,0x000000b4,0x000000b5,0x0003003e,0x000000b3, + 0x000000b6,0x0004003d,0x00000006,0x000000b8,0x000000b3,0x00050041,0x0000000d,0x000000b9, + 0x0000000b,0x00000010,0x0004003d,0x00000006,0x000000ba,0x000000b9,0x00050087,0x00000006, + 0x000000bb,0x000000b8,0x000000ba,0x0003003e,0x000000b7,0x000000bb,0x0004003d,0x00000006, + 0x000000bd,0x000000b3,0x0004003d,0x00000006,0x000000be,0x000000b7,0x00050041,0x0000000d, + 0x000000bf,0x0000000b,0x00000010,0x0004003d,0x00000006,0x000000c0,0x000000bf,0x00050084, + 0x00000006,0x000000c1,0x000000be,0x000000c0,0x00050082,0x00000006,0x000000c2,0x000000bd, + 0x000000c1,0x0003003e,0x000000bc,0x000000c2,0x0004003d,0x00000006,0x000000c4,0x000000b7, + 0x00050041,0x0000000d,0x000000c6,0x0000000b,0x000000c5,0x0004003d,0x00000006,0x000000c7, + 0x000000c6,0x00050084,0x00000006,0x000000c8,0x000000c4,0x000000c7,0x0004003d,0x00000006, + 0x000000c9,0x000000a7,0x00050080,0x00000006,0x000000ca,0x000000c8,0x000000c9,0x00050041, + 0x0000000d,0x000000cc,0x0000000b,0x000000cb,0x0004003d,0x00000006,0x000000cd,0x000000cc, + 0x00050082,0x00000006,0x000000ce,0x000000ca,0x000000cd,0x0003003e,0x000000c3,0x000000ce, + 0x0004003d,0x00000006,0x000000d0,0x000000bc,0x00050041,0x0000000d,0x000000d2,0x0000000b, + 0x000000d1,0x0004003d,0x00000006,0x000000d3,0x000000d2,0x00050084,0x00000006,0x000000d4, + 0x000000d0,0x000000d3,0x0004003d,0x00000006,0x000000d5,0x000000ad,0x00050080,0x00000006, + 0x000000d6,0x000000d4,0x000000d5,0x00050041,0x0000000d,0x000000d8,0x0000000b,0x000000d7, + 0x0004003d,0x00000006,0x000000d9,0x000000d8,0x00050082,0x00000006,0x000000da,0x000000d6, + 0x000000d9,0x0003003e,0x000000cf,0x000000da,0x0004003d,0x00000006,0x000000db,0x000000c3, + 0x0004007c,0x00000023,0x000000dc,0x000000db,0x00050041,0x0000000d,0x000000dd,0x0000000b, + 0x00000053,0x0004003d,0x00000006,0x000000de,0x000000dd,0x0004007c,0x00000023,0x000000df, + 0x000000de,0x000500b0,0x0000007a,0x000000e0,0x000000dc,0x000000df,0x000300f7,0x000000e2, + 0x00000000,0x000400fa,0x000000e0,0x000000e1,0x000000e2,0x000200f8,0x000000e1,0x0004003d, + 0x00000006,0x000000e3,0x000000cf,0x0004007c,0x00000023,0x000000e4,0x000000e3,0x00050041, + 0x0000000d,0x000000e5,0x0000000b,0x00000057,0x0004003d,0x00000006,0x000000e6,0x000000e5, + 0x0004007c,0x00000023,0x000000e7,0x000000e6,0x000500b0,0x0000007a,0x000000e8,0x000000e4, + 0x000000e7,0x000200f9,0x000000e2,0x000200f8,0x000000e2,0x000700f5,0x0000007a,0x000000e9, + 0x000000e0,0x00000095,0x000000e8,0x000000e1,0x000300f7,0x000000eb,0x00000000,0x000400fa, + 0x000000e9,0x000000ea,0x00000102,0x000200f8,0x000000ea,0x0004003d,0x00000006,0x000000f1, + 0x00000093,0x0004003d,0x00000006,0x000000f2,0x00000042,0x0004003d,0x00000006,0x000000f7, + 0x0000004b,0x0004003d,0x00000006,0x000000f8,0x000000c3,0x00050041,0x0000000d,0x000000f9, + 0x0000000b,0x00000057,0x0004003d,0x00000006,0x000000fa,0x000000f9,0x00050084,0x00000006, + 0x000000fb,0x000000f8,0x000000fa,0x00050080,0x00000006,0x000000fc,0x000000f7,0x000000fb, + 0x0004003d,0x00000006,0x000000fd,0x000000cf,0x00050080,0x00000006,0x000000fe,0x000000fc, + 0x000000fd,0x00060041,0x0000006f,0x000000ff,0x000000f6,0x00000053,0x000000fe,0x0004003d, + 0x00000067,0x00000100,0x000000ff,0x00060041,0x00000091,0x00000101,0x000000f0,0x000000f1, + 0x000000f2,0x0003003e,0x00000101,0x00000100,0x000200f9,0x000000eb,0x000200f8,0x00000102, + 0x0004003d,0x00000006,0x00000103,0x00000093,0x0004003d,0x00000006,0x00000104,0x00000042, + 0x00060041,0x00000091,0x00000106,0x000000f0,0x00000103,0x00000104,0x0003003e,0x00000106, + 0x00000105,0x000200f9,0x000000eb,0x000200f8,0x000000eb,0x000200f9,0x00000097,0x000200f8, + 0x00000097,0x0004003d,0x00000006,0x00000107,0x00000093,0x00050080,0x00000006,0x00000108, + 0x00000107,0x00000057,0x0003003e,0x00000093,0x00000108,0x000200f9,0x00000094,0x000200f8, + 0x00000096,0x000400e0,0x00000109,0x00000109,0x0000010a,0x0003003e,0x0000010b,0x00000053, + 0x000200f9,0x0000010c,0x000200f8,0x0000010c,0x000400f6,0x0000010e,0x0000010f,0x00000000, + 0x000200f9,0x00000110,0x000200f8,0x00000110,0x0004003d,0x00000006,0x00000111,0x0000010b, + 0x000500b1,0x0000007a,0x00000112,0x00000111,0x00000020,0x000400fa,0x00000112,0x0000010d, + 0x0000010e,0x000200f8,0x0000010d,0x0004003d,0x00000006,0x00000113,0x0000010b,0x00050041, + 0x00000091,0x00000114,0x00000086,0x00000113,0x0004003d,0x00000067,0x00000115,0x00000114, + 0x0004003d,0x00000006,0x00000116,0x0000010b,0x0004003d,0x00000006,0x00000117,0x00000042, + 0x00060041,0x00000091,0x00000118,0x000000f0,0x00000116,0x00000117,0x0004003d,0x00000067, + 0x00000119,0x00000118,0x00050085,0x00000067,0x0000011a,0x00000115,0x00000119,0x0004003d, + 0x00000067,0x0000011b,0x00000069,0x00050081,0x00000067,0x0000011c,0x0000011b,0x0000011a, + 0x0003003e,0x00000069,0x0000011c,0x000200f9,0x0000010f,0x000200f8,0x0000010f,0x0004003d, + 0x00000006,0x0000011d,0x0000010b,0x00050080,0x00000006,0x0000011e,0x0000011d,0x00000057, + 0x0003003e,0x0000010b,0x0000011e,0x000200f9,0x0000010c,0x000200f8,0x0000010e,0x000400e0, + 0x00000109,0x00000109,0x0000010a,0x000200f9,0x00000076,0x000200f8,0x00000076,0x0004003d, + 0x00000006,0x0000011f,0x00000072,0x00050080,0x00000006,0x00000120,0x0000011f,0x00000057, + 0x0003003e,0x00000072,0x00000120,0x000200f9,0x00000073,0x000200f8,0x00000075,0x00050041, + 0x0000000d,0x00000121,0x0000000b,0x00000020,0x0004003d,0x00000006,0x00000122,0x00000121, + 0x000500aa,0x0000007a,0x00000123,0x00000122,0x00000057,0x000300f7,0x00000125,0x00000000, + 0x000400fa,0x00000123,0x00000124,0x00000128,0x000200f8,0x00000124,0x0004003d,0x00000067, + 0x00000126,0x00000069,0x0007000c,0x00000067,0x00000127,0x00000001,0x00000028,0x00000126, + 0x00000105,0x0003003e,0x00000069,0x00000127,0x000200f9,0x00000125,0x000200f8,0x00000128, + 0x00050041,0x0000000d,0x00000129,0x0000000b,0x00000020,0x0004003d,0x00000006,0x0000012a, + 0x00000129,0x000500aa,0x0000007a,0x0000012b,0x0000012a,0x0000000c,0x000300f7,0x0000012d, + 0x00000000,0x000400fa,0x0000012b,0x0000012c,0x0000012d,0x000200f8,0x0000012c,0x0004003d, + 0x00000067,0x0000012e,0x00000069,0x0008000c,0x00000067,0x00000130,0x00000001,0x0000002b, + 0x0000012e,0x00000105,0x0000012f,0x0003003e,0x00000069,0x00000130,0x000200f9,0x0000012d, + 0x000200f8,0x0000012d,0x000200f9,0x00000125,0x000200f8,0x00000125,0x0004003d,0x00000006, + 0x00000131,0x00000042,0x0004003d,0x00000006,0x00000132,0x00000022,0x00050080,0x00000006, + 0x00000133,0x00000132,0x00000131,0x0003003e,0x00000022,0x00000133,0x0004003d,0x00000006, + 0x00000134,0x00000022,0x0004003d,0x00000006,0x00000135,0x00000008,0x000500b1,0x0000007a, + 0x00000136,0x00000134,0x00000135,0x000300f7,0x00000138,0x00000000,0x000400fa,0x00000136, + 0x00000137,0x00000138,0x000200f8,0x00000137,0x0004003d,0x00000006,0x0000013d,0x0000005b, + 0x0004003d,0x00000006,0x0000013e,0x00000022,0x00050080,0x00000006,0x0000013f,0x0000013d, + 0x0000013e,0x0004003d,0x00000067,0x00000140,0x00000069,0x00060041,0x0000006f,0x00000141, + 0x0000013c,0x00000053,0x0000013f,0x0003003e,0x00000141,0x00000140,0x000200f9,0x00000138, + 0x000200f8,0x00000138,0x000100fd,0x00010038 +}; + +}}} // namespace cv::dnn::vkcom diff --git a/modules/dnn/src/vkcom/shader/conv_implicit_gemm.comp b/modules/dnn/src/vkcom/shader/conv_implicit_gemm.comp new file mode 100644 index 0000000000..0aa562b567 --- /dev/null +++ b/modules/dnn/src/vkcom/shader/conv_implicit_gemm.comp @@ -0,0 +1,188 @@ +#version 450 + +#define KSTRIP_LEN 32 +#define BLOCK_SIZE 64 // the output channel shoule be aligned to 64. +#define WARP 32 + +#define INNER_THREAD 16 // inner thread +#define ALL_THREAD 256 + +#define A_INSTRIP 8 +#define A_STRIP 8 // (BLOCK_SIZE/A_INSTRIP) + +#define B_INSTRIP 4 // (ALL_THREAD/BLOCK_SIZE) +#define B_STRIP 8 // (KSTRIP_LEN/B_INSTRIP) + +#define PER_THREAD (BLOCK_SIZE/INNER_THREAD) + +layout(binding = 0) readonly buffer Input0{ + float image_data[]; +}; + +layout(binding = 1) readonly buffer Input1 { + float bias_data[]; +}; + +layout(binding = 2) readonly buffer Input2{ + float weight_data[]; +}; + +layout(binding = 3) writeonly buffer Output{ + float output_data[]; +}; + +layout(binding = 4) uniform pushBlock { + int Hi; // H in + int Wi; // W in + int H0; // H out + int W0; // W out + int stride_h; + int stride_w; + int pad_h; + int pad_w; + int Hk; + int Wk; + int dilation_h; + int dilation_w; + int Kg; + int Cg; + int group; + int CgHkWk_aligned; + int activationType; // 0 : no activation, 1: ReLU, 2: ReLU6. + int batchi; // batch index + int groupi; // group index +} p; + +shared float wshare[KSTRIP_LEN][BLOCK_SIZE]; // 2 KB +shared float inshare[BLOCK_SIZE][KSTRIP_LEN]; // 2 KB + +layout(local_size_x = ALL_THREAD, local_size_y = 1, local_size_z = 1) in; + +void main() +{ + int M = p.Kg; // output channel + int K = p.CgHkWk_aligned; // Hk * Wk * G // aligned to KSTRIP_LEN + int N = p.H0 * p.W0; // H0 * W0 + + int mIndex = int(gl_WorkGroupID.x) * BLOCK_SIZE; + int nIndex = int(gl_WorkGroupID.y) * BLOCK_SIZE; + + int local_x = int(gl_LocalInvocationID.x) % 16; // 0~7 + int local_y = int(gl_LocalInvocationID.x) / 16; // 0~31 + + int w_local_x = int(gl_LocalInvocationID.x) % KSTRIP_LEN; // 256 / 32 = 8 + int w_local_y = int(gl_LocalInvocationID.x) / KSTRIP_LEN; + + int in_local_x = int(gl_LocalInvocationID.x) % BLOCK_SIZE; // 256 / 64 = 4 + int in_local_y = int(gl_LocalInvocationID.x) / BLOCK_SIZE; + + int woffset = p.groupi * p.Kg * K + K * mIndex + w_local_y * K + w_local_x; + int inoffset = (p.batchi * p.group + p.groupi) * p.Hi*p.Wi*p.Cg; + int outoffset = (p.batchi * p.group + p.groupi) * p.H0*p.W0*p.Kg; + int biasoffset = p.groupi * p.Kg + mIndex + local_x * PER_THREAD; + + vec4 sum[PER_THREAD]; + { + for (int i = 0; i < PER_THREAD; i++) + { + sum[i] = vec4(bias_data[biasoffset + i]); + } + } + + float regA[PER_THREAD]; + float regB[PER_THREAD]; + + int KStrip = K / KSTRIP_LEN; + int KRemain = K - KStrip * KSTRIP_LEN; // NOTE: this value shoule be always 0. + + for (int i = 0; i < KStrip; i++) + { + int k = i * KSTRIP_LEN; + // load Weight to local memory. + for (int s = 0; s < A_STRIP; s++) + { + wshare[w_local_x][s * A_INSTRIP + w_local_y] = weight_data[woffset + s * A_INSTRIP * K + k]; + } + + // load Input to local memory + for (int s = 0; s < B_STRIP; s++) + { + int kk = in_local_y + s * B_INSTRIP + k; + + int HkWk = p.Hk * p.Wk; + int cg = kk/HkWk; + int hkwk = kk - cg * HkWk; + int hk = hkwk / p.Wk; + int wk = hkwk - hk * p.Wk; + int dh = hk * p.dilation_h, dw = wk * p.dilation_w; + + int h0w0 = in_local_x + nIndex; + int h0 = h0w0 / p.W0; + int w0 = h0w0 - h0 * p.W0; + + int hi = h0 * p.stride_h + dh - p.pad_h; + int wi = w0 * p.stride_w + dw - p.pad_w; + + if (cg < p.Cg && uint(hi) < uint(p.Hi) && uint(wi) < uint(p.Wi)) + inshare[in_local_x][s * B_INSTRIP + in_local_y] = image_data[inoffset + cg * p.Hi * p.Wi + hi * p.Wi + wi]; + else + inshare[in_local_x][s * B_INSTRIP + in_local_y] = 0.f; + } + + barrier(); + + for (int j = 0; j < KSTRIP_LEN; j++) + { + // Load shared memory to register. + for (int m = 0; m < 4; m++) + { + regA[m] = wshare[j][local_x*4 + m]; + } + + for (int m = 0; m < 4; m++) + { + regB[m] = inshare[local_y + 16 * m][j]; + } + + for (int m = 0; m < 4; m++) + { + for (int n = 0; n < 4; n++) + { + sum[m][n] += regA[m] * regB[n]; + } + } + } + barrier(); + } + + if (p.activationType == 1) // ReLU + { + sum[0] = max(sum[0], vec4(0)); + sum[1] = max(sum[1], vec4(0)); + sum[2] = max(sum[2], vec4(0)); + sum[3] = max(sum[3], vec4(0)); + } + else if (p.activationType == 2) // ReLU6 + { + sum[0] = clamp(sum[0], vec4(0), vec4(6)); + sum[1] = clamp(sum[1], vec4(0), vec4(6)); + sum[2] = clamp(sum[2], vec4(0), vec4(6)); + sum[3] = clamp(sum[3], vec4(0), vec4(6)); + } + + for (int n = 0; n < PER_THREAD; n++) + { + int nIndex2 = nIndex + n * INNER_THREAD + local_y; + if (nIndex2 < N) + { + for (int m = 0; m < PER_THREAD; m++) + { + int mIndex2 = mIndex + local_x * PER_THREAD + m; + if (mIndex2 < M) + { + output_data[outoffset + mIndex2 * N + nIndex2] = sum[m][n]; + } + } + } + } +} diff --git a/modules/dnn/src/vkcom/shader/conv_implicit_gemm_spv.cpp b/modules/dnn/src/vkcom/shader/conv_implicit_gemm_spv.cpp new file mode 100644 index 0000000000..14a004dc15 --- /dev/null +++ b/modules/dnn/src/vkcom/shader/conv_implicit_gemm_spv.cpp @@ -0,0 +1,458 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. + +#include "../../precomp.hpp" + +namespace cv { namespace dnn { namespace vkcom { + +extern const unsigned int conv_implicit_gemm_spv[3565] = { + 0x07230203,0x00010000,0x0008000b,0x00000257,0x00000000,0x00020011,0x00000001,0x0006000b, + 0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001, + 0x0007000f,0x00000005,0x00000004,0x6e69616d,0x00000000,0x00000020,0x0000002f,0x00060010, + 0x00000004,0x00000011,0x00000100,0x00000001,0x00000001,0x00030003,0x00000002,0x000001c2, + 0x00040005,0x00000004,0x6e69616d,0x00000000,0x00030005,0x00000008,0x0000004d,0x00050005, + 0x00000009,0x68737570,0x636f6c42,0x0000006b,0x00040006,0x00000009,0x00000000,0x00006948, + 0x00040006,0x00000009,0x00000001,0x00006957,0x00040006,0x00000009,0x00000002,0x00003048, + 0x00040006,0x00000009,0x00000003,0x00003057,0x00060006,0x00000009,0x00000004,0x69727473, + 0x685f6564,0x00000000,0x00060006,0x00000009,0x00000005,0x69727473,0x775f6564,0x00000000, + 0x00050006,0x00000009,0x00000006,0x5f646170,0x00000068,0x00050006,0x00000009,0x00000007, + 0x5f646170,0x00000077,0x00040006,0x00000009,0x00000008,0x00006b48,0x00040006,0x00000009, + 0x00000009,0x00006b57,0x00060006,0x00000009,0x0000000a,0x616c6964,0x6e6f6974,0x0000685f, + 0x00060006,0x00000009,0x0000000b,0x616c6964,0x6e6f6974,0x0000775f,0x00040006,0x00000009, + 0x0000000c,0x0000674b,0x00040006,0x00000009,0x0000000d,0x00006743,0x00050006,0x00000009, + 0x0000000e,0x756f7267,0x00000070,0x00070006,0x00000009,0x0000000f,0x6b486743,0x615f6b57, + 0x6e67696c,0x00006465,0x00070006,0x00000009,0x00000010,0x69746361,0x69746176,0x79546e6f, + 0x00006570,0x00050006,0x00000009,0x00000011,0x63746162,0x00006968,0x00050006,0x00000009, + 0x00000012,0x756f7267,0x00006970,0x00030005,0x0000000b,0x00000070,0x00030005,0x00000010, + 0x0000004b,0x00030005,0x00000014,0x0000004e,0x00040005,0x0000001c,0x646e496d,0x00007865, + 0x00060005,0x00000020,0x575f6c67,0x476b726f,0x70756f72,0x00004449,0x00040005,0x00000028, + 0x646e496e,0x00007865,0x00040005,0x0000002e,0x61636f6c,0x00785f6c,0x00080005,0x0000002f, + 0x4c5f6c67,0x6c61636f,0x6f766e49,0x69746163,0x44496e6f,0x00000000,0x00040005,0x00000035, + 0x61636f6c,0x00795f6c,0x00050005,0x0000003a,0x6f6c5f77,0x5f6c6163,0x00000078,0x00050005, + 0x00000040,0x6f6c5f77,0x5f6c6163,0x00000079,0x00050005,0x00000045,0x6c5f6e69,0x6c61636f, + 0x0000785f,0x00050005,0x0000004a,0x6c5f6e69,0x6c61636f,0x0000795f,0x00040005,0x0000004f, + 0x66666f77,0x00746573,0x00050005,0x00000062,0x666f6e69,0x74657366,0x00000000,0x00050005, + 0x00000079,0x6f74756f,0x65736666,0x00000074,0x00050005,0x0000008b,0x73616962,0x7366666f, + 0x00007465,0x00030005,0x00000097,0x00000069,0x00030005,0x000000a5,0x006d7573,0x00040005, + 0x000000a8,0x75706e49,0x00003174,0x00060006,0x000000a8,0x00000000,0x73616962,0x7461645f, + 0x00000061,0x00030005,0x000000aa,0x00000000,0x00040005,0x000000b6,0x7274534b,0x00007069, + 0x00040005,0x000000b9,0x6d65524b,0x006e6961,0x00030005,0x000000be,0x00000069,0x00030005, + 0x000000c7,0x0000006b,0x00030005,0x000000ca,0x00000073,0x00040005,0x000000d8,0x61687377, + 0x00006572,0x00040005,0x000000df,0x75706e49,0x00003274,0x00060006,0x000000df,0x00000000, + 0x67696577,0x645f7468,0x00617461,0x00030005,0x000000e1,0x00000000,0x00030005,0x000000f0, + 0x00000073,0x00030005,0x000000f8,0x00006b6b,0x00040005,0x000000ff,0x6b576b48,0x00000000, + 0x00030005,0x00000106,0x00006763,0x00040005,0x0000010a,0x6b776b68,0x00000000,0x00030005, + 0x00000110,0x00006b68,0x00030005,0x00000115,0x00006b77,0x00030005,0x0000011c,0x00006864, + 0x00030005,0x00000122,0x00007764,0x00040005,0x00000128,0x30773068,0x00000000,0x00030005, + 0x0000012c,0x00003068,0x00030005,0x00000131,0x00003077,0x00030005,0x00000138,0x00006968, + 0x00030005,0x00000143,0x00006977,0x00040005,0x0000016a,0x68736e69,0x00657261,0x00040005, + 0x00000171,0x75706e49,0x00003074,0x00060006,0x00000171,0x00000000,0x67616d69,0x61645f65, + 0x00006174,0x00030005,0x00000173,0x00000000,0x00030005,0x00000193,0x0000006a,0x00030005, + 0x0000019b,0x0000006d,0x00040005,0x000001a5,0x41676572,0x00000000,0x00030005,0x000001b2, + 0x0000006d,0x00040005,0x000001ba,0x42676572,0x00000000,0x00030005,0x000001c6,0x0000006d, + 0x00030005,0x000001ce,0x0000006e,0x00030005,0x00000219,0x0000006e,0x00040005,0x00000221, + 0x646e496e,0x00327865,0x00030005,0x0000022d,0x0000006d,0x00040005,0x00000235,0x646e496d, + 0x00327865,0x00040005,0x00000242,0x7074754f,0x00007475,0x00060006,0x00000242,0x00000000, + 0x7074756f,0x645f7475,0x00617461,0x00030005,0x00000244,0x00000000,0x00050048,0x00000009, + 0x00000000,0x00000023,0x00000000,0x00050048,0x00000009,0x00000001,0x00000023,0x00000004, + 0x00050048,0x00000009,0x00000002,0x00000023,0x00000008,0x00050048,0x00000009,0x00000003, + 0x00000023,0x0000000c,0x00050048,0x00000009,0x00000004,0x00000023,0x00000010,0x00050048, + 0x00000009,0x00000005,0x00000023,0x00000014,0x00050048,0x00000009,0x00000006,0x00000023, + 0x00000018,0x00050048,0x00000009,0x00000007,0x00000023,0x0000001c,0x00050048,0x00000009, + 0x00000008,0x00000023,0x00000020,0x00050048,0x00000009,0x00000009,0x00000023,0x00000024, + 0x00050048,0x00000009,0x0000000a,0x00000023,0x00000028,0x00050048,0x00000009,0x0000000b, + 0x00000023,0x0000002c,0x00050048,0x00000009,0x0000000c,0x00000023,0x00000030,0x00050048, + 0x00000009,0x0000000d,0x00000023,0x00000034,0x00050048,0x00000009,0x0000000e,0x00000023, + 0x00000038,0x00050048,0x00000009,0x0000000f,0x00000023,0x0000003c,0x00050048,0x00000009, + 0x00000010,0x00000023,0x00000040,0x00050048,0x00000009,0x00000011,0x00000023,0x00000044, + 0x00050048,0x00000009,0x00000012,0x00000023,0x00000048,0x00030047,0x00000009,0x00000002, + 0x00040047,0x0000000b,0x00000022,0x00000000,0x00040047,0x0000000b,0x00000021,0x00000004, + 0x00040047,0x00000020,0x0000000b,0x0000001a,0x00040047,0x0000002f,0x0000000b,0x0000001b, + 0x00040047,0x000000a7,0x00000006,0x00000004,0x00040048,0x000000a8,0x00000000,0x00000018, + 0x00050048,0x000000a8,0x00000000,0x00000023,0x00000000,0x00030047,0x000000a8,0x00000003, + 0x00040047,0x000000aa,0x00000022,0x00000000,0x00040047,0x000000aa,0x00000021,0x00000001, + 0x00040047,0x000000de,0x00000006,0x00000004,0x00040048,0x000000df,0x00000000,0x00000018, + 0x00050048,0x000000df,0x00000000,0x00000023,0x00000000,0x00030047,0x000000df,0x00000003, + 0x00040047,0x000000e1,0x00000022,0x00000000,0x00040047,0x000000e1,0x00000021,0x00000002, + 0x00040047,0x00000170,0x00000006,0x00000004,0x00040048,0x00000171,0x00000000,0x00000018, + 0x00050048,0x00000171,0x00000000,0x00000023,0x00000000,0x00030047,0x00000171,0x00000003, + 0x00040047,0x00000173,0x00000022,0x00000000,0x00040047,0x00000173,0x00000021,0x00000000, + 0x00040047,0x00000241,0x00000006,0x00000004,0x00040048,0x00000242,0x00000000,0x00000019, + 0x00050048,0x00000242,0x00000000,0x00000023,0x00000000,0x00030047,0x00000242,0x00000003, + 0x00040047,0x00000244,0x00000022,0x00000000,0x00040047,0x00000244,0x00000021,0x00000003, + 0x00040047,0x00000256,0x0000000b,0x00000019,0x00020013,0x00000002,0x00030021,0x00000003, + 0x00000002,0x00040015,0x00000006,0x00000020,0x00000001,0x00040020,0x00000007,0x00000007, + 0x00000006,0x0015001e,0x00000009,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006, + 0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006, + 0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00040020,0x0000000a, + 0x00000002,0x00000009,0x0004003b,0x0000000a,0x0000000b,0x00000002,0x0004002b,0x00000006, + 0x0000000c,0x0000000c,0x00040020,0x0000000d,0x00000002,0x00000006,0x0004002b,0x00000006, + 0x00000011,0x0000000f,0x0004002b,0x00000006,0x00000015,0x00000002,0x0004002b,0x00000006, + 0x00000018,0x00000003,0x00040015,0x0000001d,0x00000020,0x00000000,0x00040017,0x0000001e, + 0x0000001d,0x00000003,0x00040020,0x0000001f,0x00000001,0x0000001e,0x0004003b,0x0000001f, + 0x00000020,0x00000001,0x0004002b,0x0000001d,0x00000021,0x00000000,0x00040020,0x00000022, + 0x00000001,0x0000001d,0x0004002b,0x00000006,0x00000026,0x00000040,0x0004002b,0x0000001d, + 0x00000029,0x00000001,0x0004003b,0x0000001f,0x0000002f,0x00000001,0x0004002b,0x00000006, + 0x00000033,0x00000010,0x0004002b,0x00000006,0x0000003e,0x00000020,0x0004002b,0x00000006, + 0x00000050,0x00000012,0x0004002b,0x00000006,0x00000063,0x00000011,0x0004002b,0x00000006, + 0x00000066,0x0000000e,0x0004002b,0x00000006,0x0000006d,0x00000000,0x0004002b,0x00000006, + 0x00000071,0x00000001,0x0004002b,0x00000006,0x00000075,0x0000000d,0x0004002b,0x00000006, + 0x00000094,0x00000004,0x00020014,0x0000009e,0x00030016,0x000000a0,0x00000020,0x00040017, + 0x000000a1,0x000000a0,0x00000004,0x0004002b,0x0000001d,0x000000a2,0x00000004,0x0004001c, + 0x000000a3,0x000000a1,0x000000a2,0x00040020,0x000000a4,0x00000007,0x000000a3,0x0003001d, + 0x000000a7,0x000000a0,0x0003001e,0x000000a8,0x000000a7,0x00040020,0x000000a9,0x00000002, + 0x000000a8,0x0004003b,0x000000a9,0x000000aa,0x00000002,0x00040020,0x000000ae,0x00000002, + 0x000000a0,0x00040020,0x000000b2,0x00000007,0x000000a1,0x0004002b,0x00000006,0x000000d1, + 0x00000008,0x0004002b,0x0000001d,0x000000d3,0x00000040,0x0004001c,0x000000d4,0x000000a0, + 0x000000d3,0x0004002b,0x0000001d,0x000000d5,0x00000020,0x0004001c,0x000000d6,0x000000d4, + 0x000000d5,0x00040020,0x000000d7,0x00000004,0x000000d6,0x0004003b,0x000000d7,0x000000d8, + 0x00000004,0x0003001d,0x000000de,0x000000a0,0x0003001e,0x000000df,0x000000de,0x00040020, + 0x000000e0,0x00000002,0x000000df,0x0004003b,0x000000e0,0x000000e1,0x00000002,0x00040020, + 0x000000ec,0x00000004,0x000000a0,0x0004002b,0x00000006,0x00000102,0x00000009,0x0004002b, + 0x00000006,0x0000011e,0x0000000a,0x0004002b,0x00000006,0x00000124,0x0000000b,0x0004002b, + 0x00000006,0x0000013f,0x00000006,0x0004002b,0x00000006,0x00000145,0x00000005,0x0004002b, + 0x00000006,0x0000014b,0x00000007,0x0004001c,0x00000167,0x000000a0,0x000000d5,0x0004001c, + 0x00000168,0x00000167,0x000000d3,0x00040020,0x00000169,0x00000004,0x00000168,0x0004003b, + 0x00000169,0x0000016a,0x00000004,0x0003001d,0x00000170,0x000000a0,0x0003001e,0x00000171, + 0x00000170,0x00040020,0x00000172,0x00000002,0x00000171,0x0004003b,0x00000172,0x00000173, + 0x00000002,0x0004002b,0x000000a0,0x0000018d,0x00000000,0x0004002b,0x0000001d,0x00000191, + 0x00000002,0x0004002b,0x0000001d,0x00000192,0x00000108,0x0004001c,0x000001a3,0x000000a0, + 0x000000a2,0x00040020,0x000001a4,0x00000007,0x000001a3,0x00040020,0x000001ae,0x00000007, + 0x000000a0,0x0007002c,0x000000a1,0x000001f2,0x0000018d,0x0000018d,0x0000018d,0x0000018d, + 0x0004002b,0x000000a0,0x00000209,0x40c00000,0x0007002c,0x000000a1,0x0000020a,0x00000209, + 0x00000209,0x00000209,0x00000209,0x0003001d,0x00000241,0x000000a0,0x0003001e,0x00000242, + 0x00000241,0x00040020,0x00000243,0x00000002,0x00000242,0x0004003b,0x00000243,0x00000244, + 0x00000002,0x0004002b,0x0000001d,0x00000255,0x00000100,0x0006002c,0x0000001e,0x00000256, + 0x00000255,0x00000029,0x00000029,0x00050036,0x00000002,0x00000004,0x00000000,0x00000003, + 0x000200f8,0x00000005,0x0004003b,0x00000007,0x00000008,0x00000007,0x0004003b,0x00000007, + 0x00000010,0x00000007,0x0004003b,0x00000007,0x00000014,0x00000007,0x0004003b,0x00000007, + 0x0000001c,0x00000007,0x0004003b,0x00000007,0x00000028,0x00000007,0x0004003b,0x00000007, + 0x0000002e,0x00000007,0x0004003b,0x00000007,0x00000035,0x00000007,0x0004003b,0x00000007, + 0x0000003a,0x00000007,0x0004003b,0x00000007,0x00000040,0x00000007,0x0004003b,0x00000007, + 0x00000045,0x00000007,0x0004003b,0x00000007,0x0000004a,0x00000007,0x0004003b,0x00000007, + 0x0000004f,0x00000007,0x0004003b,0x00000007,0x00000062,0x00000007,0x0004003b,0x00000007, + 0x00000079,0x00000007,0x0004003b,0x00000007,0x0000008b,0x00000007,0x0004003b,0x00000007, + 0x00000097,0x00000007,0x0004003b,0x000000a4,0x000000a5,0x00000007,0x0004003b,0x00000007, + 0x000000b6,0x00000007,0x0004003b,0x00000007,0x000000b9,0x00000007,0x0004003b,0x00000007, + 0x000000be,0x00000007,0x0004003b,0x00000007,0x000000c7,0x00000007,0x0004003b,0x00000007, + 0x000000ca,0x00000007,0x0004003b,0x00000007,0x000000f0,0x00000007,0x0004003b,0x00000007, + 0x000000f8,0x00000007,0x0004003b,0x00000007,0x000000ff,0x00000007,0x0004003b,0x00000007, + 0x00000106,0x00000007,0x0004003b,0x00000007,0x0000010a,0x00000007,0x0004003b,0x00000007, + 0x00000110,0x00000007,0x0004003b,0x00000007,0x00000115,0x00000007,0x0004003b,0x00000007, + 0x0000011c,0x00000007,0x0004003b,0x00000007,0x00000122,0x00000007,0x0004003b,0x00000007, + 0x00000128,0x00000007,0x0004003b,0x00000007,0x0000012c,0x00000007,0x0004003b,0x00000007, + 0x00000131,0x00000007,0x0004003b,0x00000007,0x00000138,0x00000007,0x0004003b,0x00000007, + 0x00000143,0x00000007,0x0004003b,0x00000007,0x00000193,0x00000007,0x0004003b,0x00000007, + 0x0000019b,0x00000007,0x0004003b,0x000001a4,0x000001a5,0x00000007,0x0004003b,0x00000007, + 0x000001b2,0x00000007,0x0004003b,0x000001a4,0x000001ba,0x00000007,0x0004003b,0x00000007, + 0x000001c6,0x00000007,0x0004003b,0x00000007,0x000001ce,0x00000007,0x0004003b,0x00000007, + 0x00000219,0x00000007,0x0004003b,0x00000007,0x00000221,0x00000007,0x0004003b,0x00000007, + 0x0000022d,0x00000007,0x0004003b,0x00000007,0x00000235,0x00000007,0x00050041,0x0000000d, + 0x0000000e,0x0000000b,0x0000000c,0x0004003d,0x00000006,0x0000000f,0x0000000e,0x0003003e, + 0x00000008,0x0000000f,0x00050041,0x0000000d,0x00000012,0x0000000b,0x00000011,0x0004003d, + 0x00000006,0x00000013,0x00000012,0x0003003e,0x00000010,0x00000013,0x00050041,0x0000000d, + 0x00000016,0x0000000b,0x00000015,0x0004003d,0x00000006,0x00000017,0x00000016,0x00050041, + 0x0000000d,0x00000019,0x0000000b,0x00000018,0x0004003d,0x00000006,0x0000001a,0x00000019, + 0x00050084,0x00000006,0x0000001b,0x00000017,0x0000001a,0x0003003e,0x00000014,0x0000001b, + 0x00050041,0x00000022,0x00000023,0x00000020,0x00000021,0x0004003d,0x0000001d,0x00000024, + 0x00000023,0x0004007c,0x00000006,0x00000025,0x00000024,0x00050084,0x00000006,0x00000027, + 0x00000025,0x00000026,0x0003003e,0x0000001c,0x00000027,0x00050041,0x00000022,0x0000002a, + 0x00000020,0x00000029,0x0004003d,0x0000001d,0x0000002b,0x0000002a,0x0004007c,0x00000006, + 0x0000002c,0x0000002b,0x00050084,0x00000006,0x0000002d,0x0000002c,0x00000026,0x0003003e, + 0x00000028,0x0000002d,0x00050041,0x00000022,0x00000030,0x0000002f,0x00000021,0x0004003d, + 0x0000001d,0x00000031,0x00000030,0x0004007c,0x00000006,0x00000032,0x00000031,0x0005008b, + 0x00000006,0x00000034,0x00000032,0x00000033,0x0003003e,0x0000002e,0x00000034,0x00050041, + 0x00000022,0x00000036,0x0000002f,0x00000021,0x0004003d,0x0000001d,0x00000037,0x00000036, + 0x0004007c,0x00000006,0x00000038,0x00000037,0x00050087,0x00000006,0x00000039,0x00000038, + 0x00000033,0x0003003e,0x00000035,0x00000039,0x00050041,0x00000022,0x0000003b,0x0000002f, + 0x00000021,0x0004003d,0x0000001d,0x0000003c,0x0000003b,0x0004007c,0x00000006,0x0000003d, + 0x0000003c,0x0005008b,0x00000006,0x0000003f,0x0000003d,0x0000003e,0x0003003e,0x0000003a, + 0x0000003f,0x00050041,0x00000022,0x00000041,0x0000002f,0x00000021,0x0004003d,0x0000001d, + 0x00000042,0x00000041,0x0004007c,0x00000006,0x00000043,0x00000042,0x00050087,0x00000006, + 0x00000044,0x00000043,0x0000003e,0x0003003e,0x00000040,0x00000044,0x00050041,0x00000022, + 0x00000046,0x0000002f,0x00000021,0x0004003d,0x0000001d,0x00000047,0x00000046,0x0004007c, + 0x00000006,0x00000048,0x00000047,0x0005008b,0x00000006,0x00000049,0x00000048,0x00000026, + 0x0003003e,0x00000045,0x00000049,0x00050041,0x00000022,0x0000004b,0x0000002f,0x00000021, + 0x0004003d,0x0000001d,0x0000004c,0x0000004b,0x0004007c,0x00000006,0x0000004d,0x0000004c, + 0x00050087,0x00000006,0x0000004e,0x0000004d,0x00000026,0x0003003e,0x0000004a,0x0000004e, + 0x00050041,0x0000000d,0x00000051,0x0000000b,0x00000050,0x0004003d,0x00000006,0x00000052, + 0x00000051,0x00050041,0x0000000d,0x00000053,0x0000000b,0x0000000c,0x0004003d,0x00000006, + 0x00000054,0x00000053,0x00050084,0x00000006,0x00000055,0x00000052,0x00000054,0x0004003d, + 0x00000006,0x00000056,0x00000010,0x00050084,0x00000006,0x00000057,0x00000055,0x00000056, + 0x0004003d,0x00000006,0x00000058,0x00000010,0x0004003d,0x00000006,0x00000059,0x0000001c, + 0x00050084,0x00000006,0x0000005a,0x00000058,0x00000059,0x00050080,0x00000006,0x0000005b, + 0x00000057,0x0000005a,0x0004003d,0x00000006,0x0000005c,0x00000040,0x0004003d,0x00000006, + 0x0000005d,0x00000010,0x00050084,0x00000006,0x0000005e,0x0000005c,0x0000005d,0x00050080, + 0x00000006,0x0000005f,0x0000005b,0x0000005e,0x0004003d,0x00000006,0x00000060,0x0000003a, + 0x00050080,0x00000006,0x00000061,0x0000005f,0x00000060,0x0003003e,0x0000004f,0x00000061, + 0x00050041,0x0000000d,0x00000064,0x0000000b,0x00000063,0x0004003d,0x00000006,0x00000065, + 0x00000064,0x00050041,0x0000000d,0x00000067,0x0000000b,0x00000066,0x0004003d,0x00000006, + 0x00000068,0x00000067,0x00050084,0x00000006,0x00000069,0x00000065,0x00000068,0x00050041, + 0x0000000d,0x0000006a,0x0000000b,0x00000050,0x0004003d,0x00000006,0x0000006b,0x0000006a, + 0x00050080,0x00000006,0x0000006c,0x00000069,0x0000006b,0x00050041,0x0000000d,0x0000006e, + 0x0000000b,0x0000006d,0x0004003d,0x00000006,0x0000006f,0x0000006e,0x00050084,0x00000006, + 0x00000070,0x0000006c,0x0000006f,0x00050041,0x0000000d,0x00000072,0x0000000b,0x00000071, + 0x0004003d,0x00000006,0x00000073,0x00000072,0x00050084,0x00000006,0x00000074,0x00000070, + 0x00000073,0x00050041,0x0000000d,0x00000076,0x0000000b,0x00000075,0x0004003d,0x00000006, + 0x00000077,0x00000076,0x00050084,0x00000006,0x00000078,0x00000074,0x00000077,0x0003003e, + 0x00000062,0x00000078,0x00050041,0x0000000d,0x0000007a,0x0000000b,0x00000063,0x0004003d, + 0x00000006,0x0000007b,0x0000007a,0x00050041,0x0000000d,0x0000007c,0x0000000b,0x00000066, + 0x0004003d,0x00000006,0x0000007d,0x0000007c,0x00050084,0x00000006,0x0000007e,0x0000007b, + 0x0000007d,0x00050041,0x0000000d,0x0000007f,0x0000000b,0x00000050,0x0004003d,0x00000006, + 0x00000080,0x0000007f,0x00050080,0x00000006,0x00000081,0x0000007e,0x00000080,0x00050041, + 0x0000000d,0x00000082,0x0000000b,0x00000015,0x0004003d,0x00000006,0x00000083,0x00000082, + 0x00050084,0x00000006,0x00000084,0x00000081,0x00000083,0x00050041,0x0000000d,0x00000085, + 0x0000000b,0x00000018,0x0004003d,0x00000006,0x00000086,0x00000085,0x00050084,0x00000006, + 0x00000087,0x00000084,0x00000086,0x00050041,0x0000000d,0x00000088,0x0000000b,0x0000000c, + 0x0004003d,0x00000006,0x00000089,0x00000088,0x00050084,0x00000006,0x0000008a,0x00000087, + 0x00000089,0x0003003e,0x00000079,0x0000008a,0x00050041,0x0000000d,0x0000008c,0x0000000b, + 0x00000050,0x0004003d,0x00000006,0x0000008d,0x0000008c,0x00050041,0x0000000d,0x0000008e, + 0x0000000b,0x0000000c,0x0004003d,0x00000006,0x0000008f,0x0000008e,0x00050084,0x00000006, + 0x00000090,0x0000008d,0x0000008f,0x0004003d,0x00000006,0x00000091,0x0000001c,0x00050080, + 0x00000006,0x00000092,0x00000090,0x00000091,0x0004003d,0x00000006,0x00000093,0x0000002e, + 0x00050084,0x00000006,0x00000095,0x00000093,0x00000094,0x00050080,0x00000006,0x00000096, + 0x00000092,0x00000095,0x0003003e,0x0000008b,0x00000096,0x0003003e,0x00000097,0x0000006d, + 0x000200f9,0x00000098,0x000200f8,0x00000098,0x000400f6,0x0000009a,0x0000009b,0x00000000, + 0x000200f9,0x0000009c,0x000200f8,0x0000009c,0x0004003d,0x00000006,0x0000009d,0x00000097, + 0x000500b1,0x0000009e,0x0000009f,0x0000009d,0x00000094,0x000400fa,0x0000009f,0x00000099, + 0x0000009a,0x000200f8,0x00000099,0x0004003d,0x00000006,0x000000a6,0x00000097,0x0004003d, + 0x00000006,0x000000ab,0x0000008b,0x0004003d,0x00000006,0x000000ac,0x00000097,0x00050080, + 0x00000006,0x000000ad,0x000000ab,0x000000ac,0x00060041,0x000000ae,0x000000af,0x000000aa, + 0x0000006d,0x000000ad,0x0004003d,0x000000a0,0x000000b0,0x000000af,0x00070050,0x000000a1, + 0x000000b1,0x000000b0,0x000000b0,0x000000b0,0x000000b0,0x00050041,0x000000b2,0x000000b3, + 0x000000a5,0x000000a6,0x0003003e,0x000000b3,0x000000b1,0x000200f9,0x0000009b,0x000200f8, + 0x0000009b,0x0004003d,0x00000006,0x000000b4,0x00000097,0x00050080,0x00000006,0x000000b5, + 0x000000b4,0x00000071,0x0003003e,0x00000097,0x000000b5,0x000200f9,0x00000098,0x000200f8, + 0x0000009a,0x0004003d,0x00000006,0x000000b7,0x00000010,0x00050087,0x00000006,0x000000b8, + 0x000000b7,0x0000003e,0x0003003e,0x000000b6,0x000000b8,0x0004003d,0x00000006,0x000000ba, + 0x00000010,0x0004003d,0x00000006,0x000000bb,0x000000b6,0x00050084,0x00000006,0x000000bc, + 0x000000bb,0x0000003e,0x00050082,0x00000006,0x000000bd,0x000000ba,0x000000bc,0x0003003e, + 0x000000b9,0x000000bd,0x0003003e,0x000000be,0x0000006d,0x000200f9,0x000000bf,0x000200f8, + 0x000000bf,0x000400f6,0x000000c1,0x000000c2,0x00000000,0x000200f9,0x000000c3,0x000200f8, + 0x000000c3,0x0004003d,0x00000006,0x000000c4,0x000000be,0x0004003d,0x00000006,0x000000c5, + 0x000000b6,0x000500b1,0x0000009e,0x000000c6,0x000000c4,0x000000c5,0x000400fa,0x000000c6, + 0x000000c0,0x000000c1,0x000200f8,0x000000c0,0x0004003d,0x00000006,0x000000c8,0x000000be, + 0x00050084,0x00000006,0x000000c9,0x000000c8,0x0000003e,0x0003003e,0x000000c7,0x000000c9, + 0x0003003e,0x000000ca,0x0000006d,0x000200f9,0x000000cb,0x000200f8,0x000000cb,0x000400f6, + 0x000000cd,0x000000ce,0x00000000,0x000200f9,0x000000cf,0x000200f8,0x000000cf,0x0004003d, + 0x00000006,0x000000d0,0x000000ca,0x000500b1,0x0000009e,0x000000d2,0x000000d0,0x000000d1, + 0x000400fa,0x000000d2,0x000000cc,0x000000cd,0x000200f8,0x000000cc,0x0004003d,0x00000006, + 0x000000d9,0x0000003a,0x0004003d,0x00000006,0x000000da,0x000000ca,0x00050084,0x00000006, + 0x000000db,0x000000da,0x000000d1,0x0004003d,0x00000006,0x000000dc,0x00000040,0x00050080, + 0x00000006,0x000000dd,0x000000db,0x000000dc,0x0004003d,0x00000006,0x000000e2,0x0000004f, + 0x0004003d,0x00000006,0x000000e3,0x000000ca,0x00050084,0x00000006,0x000000e4,0x000000e3, + 0x000000d1,0x0004003d,0x00000006,0x000000e5,0x00000010,0x00050084,0x00000006,0x000000e6, + 0x000000e4,0x000000e5,0x00050080,0x00000006,0x000000e7,0x000000e2,0x000000e6,0x0004003d, + 0x00000006,0x000000e8,0x000000c7,0x00050080,0x00000006,0x000000e9,0x000000e7,0x000000e8, + 0x00060041,0x000000ae,0x000000ea,0x000000e1,0x0000006d,0x000000e9,0x0004003d,0x000000a0, + 0x000000eb,0x000000ea,0x00060041,0x000000ec,0x000000ed,0x000000d8,0x000000d9,0x000000dd, + 0x0003003e,0x000000ed,0x000000eb,0x000200f9,0x000000ce,0x000200f8,0x000000ce,0x0004003d, + 0x00000006,0x000000ee,0x000000ca,0x00050080,0x00000006,0x000000ef,0x000000ee,0x00000071, + 0x0003003e,0x000000ca,0x000000ef,0x000200f9,0x000000cb,0x000200f8,0x000000cd,0x0003003e, + 0x000000f0,0x0000006d,0x000200f9,0x000000f1,0x000200f8,0x000000f1,0x000400f6,0x000000f3, + 0x000000f4,0x00000000,0x000200f9,0x000000f5,0x000200f8,0x000000f5,0x0004003d,0x00000006, + 0x000000f6,0x000000f0,0x000500b1,0x0000009e,0x000000f7,0x000000f6,0x000000d1,0x000400fa, + 0x000000f7,0x000000f2,0x000000f3,0x000200f8,0x000000f2,0x0004003d,0x00000006,0x000000f9, + 0x0000004a,0x0004003d,0x00000006,0x000000fa,0x000000f0,0x00050084,0x00000006,0x000000fb, + 0x000000fa,0x00000094,0x00050080,0x00000006,0x000000fc,0x000000f9,0x000000fb,0x0004003d, + 0x00000006,0x000000fd,0x000000c7,0x00050080,0x00000006,0x000000fe,0x000000fc,0x000000fd, + 0x0003003e,0x000000f8,0x000000fe,0x00050041,0x0000000d,0x00000100,0x0000000b,0x000000d1, + 0x0004003d,0x00000006,0x00000101,0x00000100,0x00050041,0x0000000d,0x00000103,0x0000000b, + 0x00000102,0x0004003d,0x00000006,0x00000104,0x00000103,0x00050084,0x00000006,0x00000105, + 0x00000101,0x00000104,0x0003003e,0x000000ff,0x00000105,0x0004003d,0x00000006,0x00000107, + 0x000000f8,0x0004003d,0x00000006,0x00000108,0x000000ff,0x00050087,0x00000006,0x00000109, + 0x00000107,0x00000108,0x0003003e,0x00000106,0x00000109,0x0004003d,0x00000006,0x0000010b, + 0x000000f8,0x0004003d,0x00000006,0x0000010c,0x00000106,0x0004003d,0x00000006,0x0000010d, + 0x000000ff,0x00050084,0x00000006,0x0000010e,0x0000010c,0x0000010d,0x00050082,0x00000006, + 0x0000010f,0x0000010b,0x0000010e,0x0003003e,0x0000010a,0x0000010f,0x0004003d,0x00000006, + 0x00000111,0x0000010a,0x00050041,0x0000000d,0x00000112,0x0000000b,0x00000102,0x0004003d, + 0x00000006,0x00000113,0x00000112,0x00050087,0x00000006,0x00000114,0x00000111,0x00000113, + 0x0003003e,0x00000110,0x00000114,0x0004003d,0x00000006,0x00000116,0x0000010a,0x0004003d, + 0x00000006,0x00000117,0x00000110,0x00050041,0x0000000d,0x00000118,0x0000000b,0x00000102, + 0x0004003d,0x00000006,0x00000119,0x00000118,0x00050084,0x00000006,0x0000011a,0x00000117, + 0x00000119,0x00050082,0x00000006,0x0000011b,0x00000116,0x0000011a,0x0003003e,0x00000115, + 0x0000011b,0x0004003d,0x00000006,0x0000011d,0x00000110,0x00050041,0x0000000d,0x0000011f, + 0x0000000b,0x0000011e,0x0004003d,0x00000006,0x00000120,0x0000011f,0x00050084,0x00000006, + 0x00000121,0x0000011d,0x00000120,0x0003003e,0x0000011c,0x00000121,0x0004003d,0x00000006, + 0x00000123,0x00000115,0x00050041,0x0000000d,0x00000125,0x0000000b,0x00000124,0x0004003d, + 0x00000006,0x00000126,0x00000125,0x00050084,0x00000006,0x00000127,0x00000123,0x00000126, + 0x0003003e,0x00000122,0x00000127,0x0004003d,0x00000006,0x00000129,0x00000045,0x0004003d, + 0x00000006,0x0000012a,0x00000028,0x00050080,0x00000006,0x0000012b,0x00000129,0x0000012a, + 0x0003003e,0x00000128,0x0000012b,0x0004003d,0x00000006,0x0000012d,0x00000128,0x00050041, + 0x0000000d,0x0000012e,0x0000000b,0x00000018,0x0004003d,0x00000006,0x0000012f,0x0000012e, + 0x00050087,0x00000006,0x00000130,0x0000012d,0x0000012f,0x0003003e,0x0000012c,0x00000130, + 0x0004003d,0x00000006,0x00000132,0x00000128,0x0004003d,0x00000006,0x00000133,0x0000012c, + 0x00050041,0x0000000d,0x00000134,0x0000000b,0x00000018,0x0004003d,0x00000006,0x00000135, + 0x00000134,0x00050084,0x00000006,0x00000136,0x00000133,0x00000135,0x00050082,0x00000006, + 0x00000137,0x00000132,0x00000136,0x0003003e,0x00000131,0x00000137,0x0004003d,0x00000006, + 0x00000139,0x0000012c,0x00050041,0x0000000d,0x0000013a,0x0000000b,0x00000094,0x0004003d, + 0x00000006,0x0000013b,0x0000013a,0x00050084,0x00000006,0x0000013c,0x00000139,0x0000013b, + 0x0004003d,0x00000006,0x0000013d,0x0000011c,0x00050080,0x00000006,0x0000013e,0x0000013c, + 0x0000013d,0x00050041,0x0000000d,0x00000140,0x0000000b,0x0000013f,0x0004003d,0x00000006, + 0x00000141,0x00000140,0x00050082,0x00000006,0x00000142,0x0000013e,0x00000141,0x0003003e, + 0x00000138,0x00000142,0x0004003d,0x00000006,0x00000144,0x00000131,0x00050041,0x0000000d, + 0x00000146,0x0000000b,0x00000145,0x0004003d,0x00000006,0x00000147,0x00000146,0x00050084, + 0x00000006,0x00000148,0x00000144,0x00000147,0x0004003d,0x00000006,0x00000149,0x00000122, + 0x00050080,0x00000006,0x0000014a,0x00000148,0x00000149,0x00050041,0x0000000d,0x0000014c, + 0x0000000b,0x0000014b,0x0004003d,0x00000006,0x0000014d,0x0000014c,0x00050082,0x00000006, + 0x0000014e,0x0000014a,0x0000014d,0x0003003e,0x00000143,0x0000014e,0x0004003d,0x00000006, + 0x0000014f,0x00000106,0x00050041,0x0000000d,0x00000150,0x0000000b,0x00000075,0x0004003d, + 0x00000006,0x00000151,0x00000150,0x000500b1,0x0000009e,0x00000152,0x0000014f,0x00000151, + 0x000300f7,0x00000154,0x00000000,0x000400fa,0x00000152,0x00000153,0x00000154,0x000200f8, + 0x00000153,0x0004003d,0x00000006,0x00000155,0x00000138,0x0004007c,0x0000001d,0x00000156, + 0x00000155,0x00050041,0x0000000d,0x00000157,0x0000000b,0x0000006d,0x0004003d,0x00000006, + 0x00000158,0x00000157,0x0004007c,0x0000001d,0x00000159,0x00000158,0x000500b0,0x0000009e, + 0x0000015a,0x00000156,0x00000159,0x000200f9,0x00000154,0x000200f8,0x00000154,0x000700f5, + 0x0000009e,0x0000015b,0x00000152,0x000000f2,0x0000015a,0x00000153,0x000300f7,0x0000015d, + 0x00000000,0x000400fa,0x0000015b,0x0000015c,0x0000015d,0x000200f8,0x0000015c,0x0004003d, + 0x00000006,0x0000015e,0x00000143,0x0004007c,0x0000001d,0x0000015f,0x0000015e,0x00050041, + 0x0000000d,0x00000160,0x0000000b,0x00000071,0x0004003d,0x00000006,0x00000161,0x00000160, + 0x0004007c,0x0000001d,0x00000162,0x00000161,0x000500b0,0x0000009e,0x00000163,0x0000015f, + 0x00000162,0x000200f9,0x0000015d,0x000200f8,0x0000015d,0x000700f5,0x0000009e,0x00000164, + 0x0000015b,0x00000154,0x00000163,0x0000015c,0x000300f7,0x00000166,0x00000000,0x000400fa, + 0x00000164,0x00000165,0x00000187,0x000200f8,0x00000165,0x0004003d,0x00000006,0x0000016b, + 0x00000045,0x0004003d,0x00000006,0x0000016c,0x000000f0,0x00050084,0x00000006,0x0000016d, + 0x0000016c,0x00000094,0x0004003d,0x00000006,0x0000016e,0x0000004a,0x00050080,0x00000006, + 0x0000016f,0x0000016d,0x0000016e,0x0004003d,0x00000006,0x00000174,0x00000062,0x0004003d, + 0x00000006,0x00000175,0x00000106,0x00050041,0x0000000d,0x00000176,0x0000000b,0x0000006d, + 0x0004003d,0x00000006,0x00000177,0x00000176,0x00050084,0x00000006,0x00000178,0x00000175, + 0x00000177,0x00050041,0x0000000d,0x00000179,0x0000000b,0x00000071,0x0004003d,0x00000006, + 0x0000017a,0x00000179,0x00050084,0x00000006,0x0000017b,0x00000178,0x0000017a,0x00050080, + 0x00000006,0x0000017c,0x00000174,0x0000017b,0x0004003d,0x00000006,0x0000017d,0x00000138, + 0x00050041,0x0000000d,0x0000017e,0x0000000b,0x00000071,0x0004003d,0x00000006,0x0000017f, + 0x0000017e,0x00050084,0x00000006,0x00000180,0x0000017d,0x0000017f,0x00050080,0x00000006, + 0x00000181,0x0000017c,0x00000180,0x0004003d,0x00000006,0x00000182,0x00000143,0x00050080, + 0x00000006,0x00000183,0x00000181,0x00000182,0x00060041,0x000000ae,0x00000184,0x00000173, + 0x0000006d,0x00000183,0x0004003d,0x000000a0,0x00000185,0x00000184,0x00060041,0x000000ec, + 0x00000186,0x0000016a,0x0000016b,0x0000016f,0x0003003e,0x00000186,0x00000185,0x000200f9, + 0x00000166,0x000200f8,0x00000187,0x0004003d,0x00000006,0x00000188,0x00000045,0x0004003d, + 0x00000006,0x00000189,0x000000f0,0x00050084,0x00000006,0x0000018a,0x00000189,0x00000094, + 0x0004003d,0x00000006,0x0000018b,0x0000004a,0x00050080,0x00000006,0x0000018c,0x0000018a, + 0x0000018b,0x00060041,0x000000ec,0x0000018e,0x0000016a,0x00000188,0x0000018c,0x0003003e, + 0x0000018e,0x0000018d,0x000200f9,0x00000166,0x000200f8,0x00000166,0x000200f9,0x000000f4, + 0x000200f8,0x000000f4,0x0004003d,0x00000006,0x0000018f,0x000000f0,0x00050080,0x00000006, + 0x00000190,0x0000018f,0x00000071,0x0003003e,0x000000f0,0x00000190,0x000200f9,0x000000f1, + 0x000200f8,0x000000f3,0x000400e0,0x00000191,0x00000191,0x00000192,0x0003003e,0x00000193, + 0x0000006d,0x000200f9,0x00000194,0x000200f8,0x00000194,0x000400f6,0x00000196,0x00000197, + 0x00000000,0x000200f9,0x00000198,0x000200f8,0x00000198,0x0004003d,0x00000006,0x00000199, + 0x00000193,0x000500b1,0x0000009e,0x0000019a,0x00000199,0x0000003e,0x000400fa,0x0000019a, + 0x00000195,0x00000196,0x000200f8,0x00000195,0x0003003e,0x0000019b,0x0000006d,0x000200f9, + 0x0000019c,0x000200f8,0x0000019c,0x000400f6,0x0000019e,0x0000019f,0x00000000,0x000200f9, + 0x000001a0,0x000200f8,0x000001a0,0x0004003d,0x00000006,0x000001a1,0x0000019b,0x000500b1, + 0x0000009e,0x000001a2,0x000001a1,0x00000094,0x000400fa,0x000001a2,0x0000019d,0x0000019e, + 0x000200f8,0x0000019d,0x0004003d,0x00000006,0x000001a6,0x0000019b,0x0004003d,0x00000006, + 0x000001a7,0x00000193,0x0004003d,0x00000006,0x000001a8,0x0000002e,0x00050084,0x00000006, + 0x000001a9,0x000001a8,0x00000094,0x0004003d,0x00000006,0x000001aa,0x0000019b,0x00050080, + 0x00000006,0x000001ab,0x000001a9,0x000001aa,0x00060041,0x000000ec,0x000001ac,0x000000d8, + 0x000001a7,0x000001ab,0x0004003d,0x000000a0,0x000001ad,0x000001ac,0x00050041,0x000001ae, + 0x000001af,0x000001a5,0x000001a6,0x0003003e,0x000001af,0x000001ad,0x000200f9,0x0000019f, + 0x000200f8,0x0000019f,0x0004003d,0x00000006,0x000001b0,0x0000019b,0x00050080,0x00000006, + 0x000001b1,0x000001b0,0x00000071,0x0003003e,0x0000019b,0x000001b1,0x000200f9,0x0000019c, + 0x000200f8,0x0000019e,0x0003003e,0x000001b2,0x0000006d,0x000200f9,0x000001b3,0x000200f8, + 0x000001b3,0x000400f6,0x000001b5,0x000001b6,0x00000000,0x000200f9,0x000001b7,0x000200f8, + 0x000001b7,0x0004003d,0x00000006,0x000001b8,0x000001b2,0x000500b1,0x0000009e,0x000001b9, + 0x000001b8,0x00000094,0x000400fa,0x000001b9,0x000001b4,0x000001b5,0x000200f8,0x000001b4, + 0x0004003d,0x00000006,0x000001bb,0x000001b2,0x0004003d,0x00000006,0x000001bc,0x00000035, + 0x0004003d,0x00000006,0x000001bd,0x000001b2,0x00050084,0x00000006,0x000001be,0x00000033, + 0x000001bd,0x00050080,0x00000006,0x000001bf,0x000001bc,0x000001be,0x0004003d,0x00000006, + 0x000001c0,0x00000193,0x00060041,0x000000ec,0x000001c1,0x0000016a,0x000001bf,0x000001c0, + 0x0004003d,0x000000a0,0x000001c2,0x000001c1,0x00050041,0x000001ae,0x000001c3,0x000001ba, + 0x000001bb,0x0003003e,0x000001c3,0x000001c2,0x000200f9,0x000001b6,0x000200f8,0x000001b6, + 0x0004003d,0x00000006,0x000001c4,0x000001b2,0x00050080,0x00000006,0x000001c5,0x000001c4, + 0x00000071,0x0003003e,0x000001b2,0x000001c5,0x000200f9,0x000001b3,0x000200f8,0x000001b5, + 0x0003003e,0x000001c6,0x0000006d,0x000200f9,0x000001c7,0x000200f8,0x000001c7,0x000400f6, + 0x000001c9,0x000001ca,0x00000000,0x000200f9,0x000001cb,0x000200f8,0x000001cb,0x0004003d, + 0x00000006,0x000001cc,0x000001c6,0x000500b1,0x0000009e,0x000001cd,0x000001cc,0x00000094, + 0x000400fa,0x000001cd,0x000001c8,0x000001c9,0x000200f8,0x000001c8,0x0003003e,0x000001ce, + 0x0000006d,0x000200f9,0x000001cf,0x000200f8,0x000001cf,0x000400f6,0x000001d1,0x000001d2, + 0x00000000,0x000200f9,0x000001d3,0x000200f8,0x000001d3,0x0004003d,0x00000006,0x000001d4, + 0x000001ce,0x000500b1,0x0000009e,0x000001d5,0x000001d4,0x00000094,0x000400fa,0x000001d5, + 0x000001d0,0x000001d1,0x000200f8,0x000001d0,0x0004003d,0x00000006,0x000001d6,0x000001c6, + 0x0004003d,0x00000006,0x000001d7,0x000001ce,0x0004003d,0x00000006,0x000001d8,0x000001c6, + 0x00050041,0x000001ae,0x000001d9,0x000001a5,0x000001d8,0x0004003d,0x000000a0,0x000001da, + 0x000001d9,0x0004003d,0x00000006,0x000001db,0x000001ce,0x00050041,0x000001ae,0x000001dc, + 0x000001ba,0x000001db,0x0004003d,0x000000a0,0x000001dd,0x000001dc,0x00050085,0x000000a0, + 0x000001de,0x000001da,0x000001dd,0x00060041,0x000001ae,0x000001df,0x000000a5,0x000001d6, + 0x000001d7,0x0004003d,0x000000a0,0x000001e0,0x000001df,0x00050081,0x000000a0,0x000001e1, + 0x000001e0,0x000001de,0x00060041,0x000001ae,0x000001e2,0x000000a5,0x000001d6,0x000001d7, + 0x0003003e,0x000001e2,0x000001e1,0x000200f9,0x000001d2,0x000200f8,0x000001d2,0x0004003d, + 0x00000006,0x000001e3,0x000001ce,0x00050080,0x00000006,0x000001e4,0x000001e3,0x00000071, + 0x0003003e,0x000001ce,0x000001e4,0x000200f9,0x000001cf,0x000200f8,0x000001d1,0x000200f9, + 0x000001ca,0x000200f8,0x000001ca,0x0004003d,0x00000006,0x000001e5,0x000001c6,0x00050080, + 0x00000006,0x000001e6,0x000001e5,0x00000071,0x0003003e,0x000001c6,0x000001e6,0x000200f9, + 0x000001c7,0x000200f8,0x000001c9,0x000200f9,0x00000197,0x000200f8,0x00000197,0x0004003d, + 0x00000006,0x000001e7,0x00000193,0x00050080,0x00000006,0x000001e8,0x000001e7,0x00000071, + 0x0003003e,0x00000193,0x000001e8,0x000200f9,0x00000194,0x000200f8,0x00000196,0x000400e0, + 0x00000191,0x00000191,0x00000192,0x000200f9,0x000000c2,0x000200f8,0x000000c2,0x0004003d, + 0x00000006,0x000001e9,0x000000be,0x00050080,0x00000006,0x000001ea,0x000001e9,0x00000071, + 0x0003003e,0x000000be,0x000001ea,0x000200f9,0x000000bf,0x000200f8,0x000000c1,0x00050041, + 0x0000000d,0x000001eb,0x0000000b,0x00000033,0x0004003d,0x00000006,0x000001ec,0x000001eb, + 0x000500aa,0x0000009e,0x000001ed,0x000001ec,0x00000071,0x000300f7,0x000001ef,0x00000000, + 0x000400fa,0x000001ed,0x000001ee,0x00000201,0x000200f8,0x000001ee,0x00050041,0x000000b2, + 0x000001f0,0x000000a5,0x0000006d,0x0004003d,0x000000a1,0x000001f1,0x000001f0,0x0007000c, + 0x000000a1,0x000001f3,0x00000001,0x00000028,0x000001f1,0x000001f2,0x00050041,0x000000b2, + 0x000001f4,0x000000a5,0x0000006d,0x0003003e,0x000001f4,0x000001f3,0x00050041,0x000000b2, + 0x000001f5,0x000000a5,0x00000071,0x0004003d,0x000000a1,0x000001f6,0x000001f5,0x0007000c, + 0x000000a1,0x000001f7,0x00000001,0x00000028,0x000001f6,0x000001f2,0x00050041,0x000000b2, + 0x000001f8,0x000000a5,0x00000071,0x0003003e,0x000001f8,0x000001f7,0x00050041,0x000000b2, + 0x000001f9,0x000000a5,0x00000015,0x0004003d,0x000000a1,0x000001fa,0x000001f9,0x0007000c, + 0x000000a1,0x000001fb,0x00000001,0x00000028,0x000001fa,0x000001f2,0x00050041,0x000000b2, + 0x000001fc,0x000000a5,0x00000015,0x0003003e,0x000001fc,0x000001fb,0x00050041,0x000000b2, + 0x000001fd,0x000000a5,0x00000018,0x0004003d,0x000000a1,0x000001fe,0x000001fd,0x0007000c, + 0x000000a1,0x000001ff,0x00000001,0x00000028,0x000001fe,0x000001f2,0x00050041,0x000000b2, + 0x00000200,0x000000a5,0x00000018,0x0003003e,0x00000200,0x000001ff,0x000200f9,0x000001ef, + 0x000200f8,0x00000201,0x00050041,0x0000000d,0x00000202,0x0000000b,0x00000033,0x0004003d, + 0x00000006,0x00000203,0x00000202,0x000500aa,0x0000009e,0x00000204,0x00000203,0x00000015, + 0x000300f7,0x00000206,0x00000000,0x000400fa,0x00000204,0x00000205,0x00000206,0x000200f8, + 0x00000205,0x00050041,0x000000b2,0x00000207,0x000000a5,0x0000006d,0x0004003d,0x000000a1, + 0x00000208,0x00000207,0x0008000c,0x000000a1,0x0000020b,0x00000001,0x0000002b,0x00000208, + 0x000001f2,0x0000020a,0x00050041,0x000000b2,0x0000020c,0x000000a5,0x0000006d,0x0003003e, + 0x0000020c,0x0000020b,0x00050041,0x000000b2,0x0000020d,0x000000a5,0x00000071,0x0004003d, + 0x000000a1,0x0000020e,0x0000020d,0x0008000c,0x000000a1,0x0000020f,0x00000001,0x0000002b, + 0x0000020e,0x000001f2,0x0000020a,0x00050041,0x000000b2,0x00000210,0x000000a5,0x00000071, + 0x0003003e,0x00000210,0x0000020f,0x00050041,0x000000b2,0x00000211,0x000000a5,0x00000015, + 0x0004003d,0x000000a1,0x00000212,0x00000211,0x0008000c,0x000000a1,0x00000213,0x00000001, + 0x0000002b,0x00000212,0x000001f2,0x0000020a,0x00050041,0x000000b2,0x00000214,0x000000a5, + 0x00000015,0x0003003e,0x00000214,0x00000213,0x00050041,0x000000b2,0x00000215,0x000000a5, + 0x00000018,0x0004003d,0x000000a1,0x00000216,0x00000215,0x0008000c,0x000000a1,0x00000217, + 0x00000001,0x0000002b,0x00000216,0x000001f2,0x0000020a,0x00050041,0x000000b2,0x00000218, + 0x000000a5,0x00000018,0x0003003e,0x00000218,0x00000217,0x000200f9,0x00000206,0x000200f8, + 0x00000206,0x000200f9,0x000001ef,0x000200f8,0x000001ef,0x0003003e,0x00000219,0x0000006d, + 0x000200f9,0x0000021a,0x000200f8,0x0000021a,0x000400f6,0x0000021c,0x0000021d,0x00000000, + 0x000200f9,0x0000021e,0x000200f8,0x0000021e,0x0004003d,0x00000006,0x0000021f,0x00000219, + 0x000500b1,0x0000009e,0x00000220,0x0000021f,0x00000094,0x000400fa,0x00000220,0x0000021b, + 0x0000021c,0x000200f8,0x0000021b,0x0004003d,0x00000006,0x00000222,0x00000028,0x0004003d, + 0x00000006,0x00000223,0x00000219,0x00050084,0x00000006,0x00000224,0x00000223,0x00000033, + 0x00050080,0x00000006,0x00000225,0x00000222,0x00000224,0x0004003d,0x00000006,0x00000226, + 0x00000035,0x00050080,0x00000006,0x00000227,0x00000225,0x00000226,0x0003003e,0x00000221, + 0x00000227,0x0004003d,0x00000006,0x00000228,0x00000221,0x0004003d,0x00000006,0x00000229, + 0x00000014,0x000500b1,0x0000009e,0x0000022a,0x00000228,0x00000229,0x000300f7,0x0000022c, + 0x00000000,0x000400fa,0x0000022a,0x0000022b,0x0000022c,0x000200f8,0x0000022b,0x0003003e, + 0x0000022d,0x0000006d,0x000200f9,0x0000022e,0x000200f8,0x0000022e,0x000400f6,0x00000230, + 0x00000231,0x00000000,0x000200f9,0x00000232,0x000200f8,0x00000232,0x0004003d,0x00000006, + 0x00000233,0x0000022d,0x000500b1,0x0000009e,0x00000234,0x00000233,0x00000094,0x000400fa, + 0x00000234,0x0000022f,0x00000230,0x000200f8,0x0000022f,0x0004003d,0x00000006,0x00000236, + 0x0000001c,0x0004003d,0x00000006,0x00000237,0x0000002e,0x00050084,0x00000006,0x00000238, + 0x00000237,0x00000094,0x00050080,0x00000006,0x00000239,0x00000236,0x00000238,0x0004003d, + 0x00000006,0x0000023a,0x0000022d,0x00050080,0x00000006,0x0000023b,0x00000239,0x0000023a, + 0x0003003e,0x00000235,0x0000023b,0x0004003d,0x00000006,0x0000023c,0x00000235,0x0004003d, + 0x00000006,0x0000023d,0x00000008,0x000500b1,0x0000009e,0x0000023e,0x0000023c,0x0000023d, + 0x000300f7,0x00000240,0x00000000,0x000400fa,0x0000023e,0x0000023f,0x00000240,0x000200f8, + 0x0000023f,0x0004003d,0x00000006,0x00000245,0x00000079,0x0004003d,0x00000006,0x00000246, + 0x00000235,0x0004003d,0x00000006,0x00000247,0x00000014,0x00050084,0x00000006,0x00000248, + 0x00000246,0x00000247,0x00050080,0x00000006,0x00000249,0x00000245,0x00000248,0x0004003d, + 0x00000006,0x0000024a,0x00000221,0x00050080,0x00000006,0x0000024b,0x00000249,0x0000024a, + 0x0004003d,0x00000006,0x0000024c,0x0000022d,0x0004003d,0x00000006,0x0000024d,0x00000219, + 0x00060041,0x000001ae,0x0000024e,0x000000a5,0x0000024c,0x0000024d,0x0004003d,0x000000a0, + 0x0000024f,0x0000024e,0x00060041,0x000000ae,0x00000250,0x00000244,0x0000006d,0x0000024b, + 0x0003003e,0x00000250,0x0000024f,0x000200f9,0x00000240,0x000200f8,0x00000240,0x000200f9, + 0x00000231,0x000200f8,0x00000231,0x0004003d,0x00000006,0x00000251,0x0000022d,0x00050080, + 0x00000006,0x00000252,0x00000251,0x00000071,0x0003003e,0x0000022d,0x00000252,0x000200f9, + 0x0000022e,0x000200f8,0x00000230,0x000200f9,0x0000022c,0x000200f8,0x0000022c,0x000200f9, + 0x0000021d,0x000200f8,0x0000021d,0x0004003d,0x00000006,0x00000253,0x00000219,0x00050080, + 0x00000006,0x00000254,0x00000253,0x00000071,0x0003003e,0x00000219,0x00000254,0x000200f9, + 0x0000021a,0x000200f8,0x0000021c,0x000100fd,0x00010038 +}; + +}}} // namespace cv::dnn::vkcom diff --git a/modules/dnn/src/vkcom/shader/conv_spv.cpp b/modules/dnn/src/vkcom/shader/conv_spv.cpp deleted file mode 100644 index ed82bed307..0000000000 --- a/modules/dnn/src/vkcom/shader/conv_spv.cpp +++ /dev/null @@ -1,252 +0,0 @@ -// This file is part of OpenCV project. -// It is subject to the license terms in the LICENSE file found in the top-level directory -// of this distribution and at http://opencv.org/license.html. -// -// Copyright (C) 2018, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. - -#include "../../precomp.hpp" - -namespace cv { namespace dnn { namespace vkcom { - -extern const unsigned int conv_spv[1894] = { - 0x07230203,0x00010000,0x00080001,0x00000123,0x00000000,0x00020011,0x00000001,0x0006000b, - 0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001, - 0x0006000f,0x00000005,0x00000004,0x6e69616d,0x00000000,0x0000000c,0x00060010,0x00000004, - 0x00000011,0x00000100,0x00000001,0x00000001,0x00030003,0x00000002,0x000001c2,0x00040005, - 0x00000004,0x6e69616d,0x00000000,0x00030005,0x00000008,0x00007867,0x00080005,0x0000000c, - 0x475f6c67,0x61626f6c,0x766e496c,0x7461636f,0x496e6f69,0x00000044,0x00030005,0x00000012, - 0x00007967,0x00050005,0x00000017,0x68737570,0x636f6c42,0x0000006b,0x00050006,0x00000017, - 0x00000000,0x685f6e69,0x00000000,0x00050006,0x00000017,0x00000001,0x775f6e69,0x00000000, - 0x00050006,0x00000017,0x00000002,0x5f74756f,0x00000068,0x00050006,0x00000017,0x00000003, - 0x5f74756f,0x00000077,0x00060006,0x00000017,0x00000004,0x69727473,0x685f6564,0x00000000, - 0x00060006,0x00000017,0x00000005,0x69727473,0x775f6564,0x00000000,0x00050006,0x00000017, - 0x00000006,0x5f646170,0x00000068,0x00050006,0x00000017,0x00000007,0x5f646170,0x00000077, - 0x00060006,0x00000017,0x00000008,0x746c6966,0x685f7265,0x00000000,0x00060006,0x00000017, - 0x00000009,0x746c6966,0x775f7265,0x00000000,0x00060006,0x00000017,0x0000000a,0x616c6964, - 0x6e6f6974,0x0000685f,0x00060006,0x00000017,0x0000000b,0x616c6964,0x6e6f6974,0x0000775f, - 0x00060006,0x00000017,0x0000000c,0x6e616863,0x736c656e,0x00000000,0x00050006,0x00000017, - 0x0000000d,0x63746162,0x00000068,0x00060006,0x00000017,0x0000000e,0x5f736168,0x73616962, - 0x00000000,0x00040006,0x00000017,0x0000000f,0x0000004d,0x00040006,0x00000017,0x00000010, - 0x0000004b,0x00040006,0x00000017,0x00000011,0x0000004e,0x00090006,0x00000017,0x00000012, - 0x69736162,0x68735f63,0x72656461,0x7461625f,0x695f6863,0x00007864,0x00090006,0x00000017, - 0x00000013,0x69736162,0x68735f63,0x72656461,0x6f72675f,0x695f7075,0x00007864,0x00090006, - 0x00000017,0x00000014,0x69736162,0x68735f63,0x72656461,0x6f72675f,0x735f7075,0x00657a69, - 0x00030005,0x00000019,0x00000070,0x00030005,0x00000023,0x00007a67,0x00030005,0x00000039, - 0x006d7573,0x00050005,0x0000003b,0x7074756f,0x795f7475,0x00000000,0x00050005,0x00000041, - 0x7074756f,0x785f7475,0x00000000,0x00040005,0x00000046,0x5f67726f,0x00000079,0x00040005, - 0x00000050,0x5f67726f,0x00000078,0x00050005,0x0000005a,0x67696577,0x6f5f7468,0x00006666, - 0x00050005,0x00000060,0x75706e69,0x666f5f74,0x00000066,0x00030005,0x00000075,0x00000063, - 0x00030005,0x0000007f,0x00000079,0x00030005,0x0000008a,0x00000078,0x00040005,0x000000c3, - 0x75706e49,0x00003074,0x00060006,0x000000c3,0x00000000,0x67616d69,0x61645f65,0x00006174, - 0x00030005,0x000000c5,0x00000000,0x00040005,0x000000d0,0x75706e49,0x00003374,0x00060006, - 0x000000d0,0x00000000,0x67696577,0x645f7468,0x00617461,0x00030005,0x000000d2,0x00000000, - 0x00040005,0x000000fc,0x7366666f,0x00007465,0x00040005,0x00000112,0x75706e49,0x00003174, - 0x00060006,0x00000112,0x00000000,0x73616962,0x7461645f,0x00000061,0x00030005,0x00000114, - 0x00000000,0x00040005,0x0000011b,0x7074754f,0x00007475,0x00090006,0x0000011b,0x00000000, - 0x766e6f63,0x65766c6f,0x6d695f64,0x5f656761,0x61746164,0x00000000,0x00030005,0x0000011d, - 0x00000000,0x00040047,0x0000000c,0x0000000b,0x0000001c,0x00050048,0x00000017,0x00000000, - 0x00000023,0x00000000,0x00050048,0x00000017,0x00000001,0x00000023,0x00000004,0x00050048, - 0x00000017,0x00000002,0x00000023,0x00000008,0x00050048,0x00000017,0x00000003,0x00000023, - 0x0000000c,0x00050048,0x00000017,0x00000004,0x00000023,0x00000010,0x00050048,0x00000017, - 0x00000005,0x00000023,0x00000014,0x00050048,0x00000017,0x00000006,0x00000023,0x00000018, - 0x00050048,0x00000017,0x00000007,0x00000023,0x0000001c,0x00050048,0x00000017,0x00000008, - 0x00000023,0x00000020,0x00050048,0x00000017,0x00000009,0x00000023,0x00000024,0x00050048, - 0x00000017,0x0000000a,0x00000023,0x00000028,0x00050048,0x00000017,0x0000000b,0x00000023, - 0x0000002c,0x00050048,0x00000017,0x0000000c,0x00000023,0x00000030,0x00050048,0x00000017, - 0x0000000d,0x00000023,0x00000034,0x00050048,0x00000017,0x0000000e,0x00000023,0x00000038, - 0x00050048,0x00000017,0x0000000f,0x00000023,0x0000003c,0x00050048,0x00000017,0x00000010, - 0x00000023,0x00000040,0x00050048,0x00000017,0x00000011,0x00000023,0x00000044,0x00050048, - 0x00000017,0x00000012,0x00000023,0x00000048,0x00050048,0x00000017,0x00000013,0x00000023, - 0x0000004c,0x00050048,0x00000017,0x00000014,0x00000023,0x00000050,0x00030047,0x00000017, - 0x00000002,0x00040047,0x000000c2,0x00000006,0x00000004,0x00040048,0x000000c3,0x00000000, - 0x00000018,0x00050048,0x000000c3,0x00000000,0x00000023,0x00000000,0x00030047,0x000000c3, - 0x00000003,0x00040047,0x000000c5,0x00000022,0x00000000,0x00040047,0x000000c5,0x00000021, - 0x00000000,0x00040047,0x000000cf,0x00000006,0x00000004,0x00040048,0x000000d0,0x00000000, - 0x00000018,0x00050048,0x000000d0,0x00000000,0x00000023,0x00000000,0x00030047,0x000000d0, - 0x00000003,0x00040047,0x000000d2,0x00000022,0x00000000,0x00040047,0x000000d2,0x00000021, - 0x00000002,0x00040047,0x00000111,0x00000006,0x00000004,0x00040048,0x00000112,0x00000000, - 0x00000018,0x00050048,0x00000112,0x00000000,0x00000023,0x00000000,0x00030047,0x00000112, - 0x00000003,0x00040047,0x00000114,0x00000022,0x00000000,0x00040047,0x00000114,0x00000021, - 0x00000001,0x00040047,0x0000011a,0x00000006,0x00000004,0x00040048,0x0000011b,0x00000000, - 0x00000019,0x00050048,0x0000011b,0x00000000,0x00000023,0x00000000,0x00030047,0x0000011b, - 0x00000003,0x00040047,0x0000011d,0x00000022,0x00000000,0x00040047,0x0000011d,0x00000021, - 0x00000003,0x00040047,0x00000122,0x0000000b,0x00000019,0x00020013,0x00000002,0x00030021, - 0x00000003,0x00000002,0x00040015,0x00000006,0x00000020,0x00000001,0x00040020,0x00000007, - 0x00000007,0x00000006,0x00040015,0x00000009,0x00000020,0x00000000,0x00040017,0x0000000a, - 0x00000009,0x00000003,0x00040020,0x0000000b,0x00000001,0x0000000a,0x0004003b,0x0000000b, - 0x0000000c,0x00000001,0x0004002b,0x00000009,0x0000000d,0x00000000,0x00040020,0x0000000e, - 0x00000001,0x00000009,0x0004002b,0x00000009,0x00000013,0x00000001,0x0017001e,0x00000017, - 0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006, - 0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006, - 0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00040020,0x00000018,0x00000009, - 0x00000017,0x0004003b,0x00000018,0x00000019,0x00000009,0x0004002b,0x00000006,0x0000001a, - 0x00000013,0x00040020,0x0000001b,0x00000009,0x00000006,0x0004002b,0x00000006,0x0000001e, - 0x00000014,0x0004002b,0x00000006,0x00000024,0x00000012,0x00020014,0x00000027,0x0004002b, - 0x00000006,0x00000029,0x0000000f,0x0004002b,0x00000006,0x00000030,0x00000011,0x00030016, - 0x00000037,0x00000020,0x00040020,0x00000038,0x00000007,0x00000037,0x0004002b,0x00000037, - 0x0000003a,0x00000000,0x0004002b,0x00000006,0x0000003d,0x00000003,0x0004002b,0x00000006, - 0x00000048,0x00000004,0x0004002b,0x00000006,0x0000004c,0x00000006,0x0004002b,0x00000006, - 0x00000052,0x00000005,0x0004002b,0x00000006,0x00000056,0x00000007,0x0004002b,0x00000006, - 0x0000005c,0x00000010,0x0004002b,0x00000006,0x00000062,0x00000000,0x0004002b,0x00000006, - 0x00000066,0x00000001,0x0004002b,0x00000006,0x0000006a,0x0000000c,0x0004002b,0x00000006, - 0x00000086,0x00000008,0x0004002b,0x00000006,0x00000091,0x00000009,0x0004002b,0x00000006, - 0x00000097,0x0000000a,0x0004002b,0x00000006,0x000000ad,0x0000000b,0x0003001d,0x000000c2, - 0x00000037,0x0003001e,0x000000c3,0x000000c2,0x00040020,0x000000c4,0x00000002,0x000000c3, - 0x0004003b,0x000000c4,0x000000c5,0x00000002,0x00040020,0x000000cc,0x00000002,0x00000037, - 0x0003001d,0x000000cf,0x00000037,0x0003001e,0x000000d0,0x000000cf,0x00040020,0x000000d1, - 0x00000002,0x000000d0,0x0004003b,0x000000d1,0x000000d2,0x00000002,0x0004002b,0x00000006, - 0x0000010b,0x0000000e,0x0003001d,0x00000111,0x00000037,0x0003001e,0x00000112,0x00000111, - 0x00040020,0x00000113,0x00000002,0x00000112,0x0004003b,0x00000113,0x00000114,0x00000002, - 0x0003001d,0x0000011a,0x00000037,0x0003001e,0x0000011b,0x0000011a,0x00040020,0x0000011c, - 0x00000002,0x0000011b,0x0004003b,0x0000011c,0x0000011d,0x00000002,0x0004002b,0x00000009, - 0x00000121,0x00000100,0x0006002c,0x0000000a,0x00000122,0x00000121,0x00000013,0x00000013, - 0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b, - 0x00000007,0x00000008,0x00000007,0x0004003b,0x00000007,0x00000012,0x00000007,0x0004003b, - 0x00000007,0x00000023,0x00000007,0x0004003b,0x00000038,0x00000039,0x00000007,0x0004003b, - 0x00000007,0x0000003b,0x00000007,0x0004003b,0x00000007,0x00000041,0x00000007,0x0004003b, - 0x00000007,0x00000046,0x00000007,0x0004003b,0x00000007,0x00000050,0x00000007,0x0004003b, - 0x00000007,0x0000005a,0x00000007,0x0004003b,0x00000007,0x00000060,0x00000007,0x0004003b, - 0x00000007,0x00000075,0x00000007,0x0004003b,0x00000007,0x0000007f,0x00000007,0x0004003b, - 0x00000007,0x0000008a,0x00000007,0x0004003b,0x00000007,0x000000fc,0x00000007,0x00050041, - 0x0000000e,0x0000000f,0x0000000c,0x0000000d,0x0004003d,0x00000009,0x00000010,0x0000000f, - 0x0004007c,0x00000006,0x00000011,0x00000010,0x0003003e,0x00000008,0x00000011,0x00050041, - 0x0000000e,0x00000014,0x0000000c,0x00000013,0x0004003d,0x00000009,0x00000015,0x00000014, - 0x0004007c,0x00000006,0x00000016,0x00000015,0x00050041,0x0000001b,0x0000001c,0x00000019, - 0x0000001a,0x0004003d,0x00000006,0x0000001d,0x0000001c,0x00050041,0x0000001b,0x0000001f, - 0x00000019,0x0000001e,0x0004003d,0x00000006,0x00000020,0x0000001f,0x00050084,0x00000006, - 0x00000021,0x0000001d,0x00000020,0x00050080,0x00000006,0x00000022,0x00000016,0x00000021, - 0x0003003e,0x00000012,0x00000022,0x00050041,0x0000001b,0x00000025,0x00000019,0x00000024, - 0x0004003d,0x00000006,0x00000026,0x00000025,0x0003003e,0x00000023,0x00000026,0x0004003d, - 0x00000006,0x00000028,0x00000008,0x00050041,0x0000001b,0x0000002a,0x00000019,0x00000029, - 0x0004003d,0x00000006,0x0000002b,0x0000002a,0x000500b1,0x00000027,0x0000002c,0x00000028, - 0x0000002b,0x000300f7,0x0000002e,0x00000000,0x000400fa,0x0000002c,0x0000002d,0x0000002e, - 0x000200f8,0x0000002d,0x0004003d,0x00000006,0x0000002f,0x00000012,0x00050041,0x0000001b, - 0x00000031,0x00000019,0x00000030,0x0004003d,0x00000006,0x00000032,0x00000031,0x000500b1, - 0x00000027,0x00000033,0x0000002f,0x00000032,0x000200f9,0x0000002e,0x000200f8,0x0000002e, - 0x000700f5,0x00000027,0x00000034,0x0000002c,0x00000005,0x00000033,0x0000002d,0x000300f7, - 0x00000036,0x00000000,0x000400fa,0x00000034,0x00000035,0x00000036,0x000200f8,0x00000035, - 0x0003003e,0x00000039,0x0000003a,0x0004003d,0x00000006,0x0000003c,0x00000008,0x00050041, - 0x0000001b,0x0000003e,0x00000019,0x0000003d,0x0004003d,0x00000006,0x0000003f,0x0000003e, - 0x00050087,0x00000006,0x00000040,0x0000003c,0x0000003f,0x0003003e,0x0000003b,0x00000040, - 0x0004003d,0x00000006,0x00000042,0x00000008,0x00050041,0x0000001b,0x00000043,0x00000019, - 0x0000003d,0x0004003d,0x00000006,0x00000044,0x00000043,0x0005008b,0x00000006,0x00000045, - 0x00000042,0x00000044,0x0003003e,0x00000041,0x00000045,0x0004003d,0x00000006,0x00000047, - 0x0000003b,0x00050041,0x0000001b,0x00000049,0x00000019,0x00000048,0x0004003d,0x00000006, - 0x0000004a,0x00000049,0x00050084,0x00000006,0x0000004b,0x00000047,0x0000004a,0x00050041, - 0x0000001b,0x0000004d,0x00000019,0x0000004c,0x0004003d,0x00000006,0x0000004e,0x0000004d, - 0x00050082,0x00000006,0x0000004f,0x0000004b,0x0000004e,0x0003003e,0x00000046,0x0000004f, - 0x0004003d,0x00000006,0x00000051,0x00000041,0x00050041,0x0000001b,0x00000053,0x00000019, - 0x00000052,0x0004003d,0x00000006,0x00000054,0x00000053,0x00050084,0x00000006,0x00000055, - 0x00000051,0x00000054,0x00050041,0x0000001b,0x00000057,0x00000019,0x00000056,0x0004003d, - 0x00000006,0x00000058,0x00000057,0x00050082,0x00000006,0x00000059,0x00000055,0x00000058, - 0x0003003e,0x00000050,0x00000059,0x0004003d,0x00000006,0x0000005b,0x00000012,0x00050041, - 0x0000001b,0x0000005d,0x00000019,0x0000005c,0x0004003d,0x00000006,0x0000005e,0x0000005d, - 0x00050084,0x00000006,0x0000005f,0x0000005b,0x0000005e,0x0003003e,0x0000005a,0x0000005f, - 0x0004003d,0x00000006,0x00000061,0x00000023,0x00050041,0x0000001b,0x00000063,0x00000019, - 0x00000062,0x0004003d,0x00000006,0x00000064,0x00000063,0x00050084,0x00000006,0x00000065, - 0x00000061,0x00000064,0x00050041,0x0000001b,0x00000067,0x00000019,0x00000066,0x0004003d, - 0x00000006,0x00000068,0x00000067,0x00050084,0x00000006,0x00000069,0x00000065,0x00000068, - 0x00050041,0x0000001b,0x0000006b,0x00000019,0x0000006a,0x0004003d,0x00000006,0x0000006c, - 0x0000006b,0x00050084,0x00000006,0x0000006d,0x00000069,0x0000006c,0x0004003d,0x00000006, - 0x0000006e,0x00000046,0x00050041,0x0000001b,0x0000006f,0x00000019,0x00000066,0x0004003d, - 0x00000006,0x00000070,0x0000006f,0x00050084,0x00000006,0x00000071,0x0000006e,0x00000070, - 0x0004003d,0x00000006,0x00000072,0x00000050,0x00050080,0x00000006,0x00000073,0x00000071, - 0x00000072,0x00050080,0x00000006,0x00000074,0x0000006d,0x00000073,0x0003003e,0x00000060, - 0x00000074,0x0003003e,0x00000075,0x00000062,0x000200f9,0x00000076,0x000200f8,0x00000076, - 0x000400f6,0x00000078,0x00000079,0x00000000,0x000200f9,0x0000007a,0x000200f8,0x0000007a, - 0x0004003d,0x00000006,0x0000007b,0x00000075,0x00050041,0x0000001b,0x0000007c,0x00000019, - 0x0000006a,0x0004003d,0x00000006,0x0000007d,0x0000007c,0x000500b1,0x00000027,0x0000007e, - 0x0000007b,0x0000007d,0x000400fa,0x0000007e,0x00000077,0x00000078,0x000200f8,0x00000077, - 0x0003003e,0x0000007f,0x00000062,0x000200f9,0x00000080,0x000200f8,0x00000080,0x000400f6, - 0x00000082,0x00000083,0x00000000,0x000200f9,0x00000084,0x000200f8,0x00000084,0x0004003d, - 0x00000006,0x00000085,0x0000007f,0x00050041,0x0000001b,0x00000087,0x00000019,0x00000086, - 0x0004003d,0x00000006,0x00000088,0x00000087,0x000500b1,0x00000027,0x00000089,0x00000085, - 0x00000088,0x000400fa,0x00000089,0x00000081,0x00000082,0x000200f8,0x00000081,0x0003003e, - 0x0000008a,0x00000062,0x000200f9,0x0000008b,0x000200f8,0x0000008b,0x000400f6,0x0000008d, - 0x0000008e,0x00000000,0x000200f9,0x0000008f,0x000200f8,0x0000008f,0x0004003d,0x00000006, - 0x00000090,0x0000008a,0x00050041,0x0000001b,0x00000092,0x00000019,0x00000091,0x0004003d, - 0x00000006,0x00000093,0x00000092,0x000500b1,0x00000027,0x00000094,0x00000090,0x00000093, - 0x000400fa,0x00000094,0x0000008c,0x0000008d,0x000200f8,0x0000008c,0x0004003d,0x00000006, - 0x00000095,0x00000046,0x0004003d,0x00000006,0x00000096,0x0000007f,0x00050041,0x0000001b, - 0x00000098,0x00000019,0x00000097,0x0004003d,0x00000006,0x00000099,0x00000098,0x00050084, - 0x00000006,0x0000009a,0x00000096,0x00000099,0x00050080,0x00000006,0x0000009b,0x00000095, - 0x0000009a,0x000500af,0x00000027,0x0000009c,0x0000009b,0x00000062,0x000300f7,0x0000009e, - 0x00000000,0x000400fa,0x0000009c,0x0000009d,0x0000009e,0x000200f8,0x0000009d,0x0004003d, - 0x00000006,0x0000009f,0x00000046,0x0004003d,0x00000006,0x000000a0,0x0000007f,0x00050041, - 0x0000001b,0x000000a1,0x00000019,0x00000097,0x0004003d,0x00000006,0x000000a2,0x000000a1, - 0x00050084,0x00000006,0x000000a3,0x000000a0,0x000000a2,0x00050080,0x00000006,0x000000a4, - 0x0000009f,0x000000a3,0x00050041,0x0000001b,0x000000a5,0x00000019,0x00000062,0x0004003d, - 0x00000006,0x000000a6,0x000000a5,0x000500b1,0x00000027,0x000000a7,0x000000a4,0x000000a6, - 0x000200f9,0x0000009e,0x000200f8,0x0000009e,0x000700f5,0x00000027,0x000000a8,0x0000009c, - 0x0000008c,0x000000a7,0x0000009d,0x000300f7,0x000000aa,0x00000000,0x000400fa,0x000000a8, - 0x000000a9,0x000000aa,0x000200f8,0x000000a9,0x0004003d,0x00000006,0x000000ab,0x00000050, - 0x0004003d,0x00000006,0x000000ac,0x0000008a,0x00050041,0x0000001b,0x000000ae,0x00000019, - 0x000000ad,0x0004003d,0x00000006,0x000000af,0x000000ae,0x00050084,0x00000006,0x000000b0, - 0x000000ac,0x000000af,0x00050080,0x00000006,0x000000b1,0x000000ab,0x000000b0,0x000500af, - 0x00000027,0x000000b2,0x000000b1,0x00000062,0x000200f9,0x000000aa,0x000200f8,0x000000aa, - 0x000700f5,0x00000027,0x000000b3,0x000000a8,0x0000009e,0x000000b2,0x000000a9,0x000300f7, - 0x000000b5,0x00000000,0x000400fa,0x000000b3,0x000000b4,0x000000b5,0x000200f8,0x000000b4, - 0x0004003d,0x00000006,0x000000b6,0x00000050,0x0004003d,0x00000006,0x000000b7,0x0000008a, - 0x00050041,0x0000001b,0x000000b8,0x00000019,0x000000ad,0x0004003d,0x00000006,0x000000b9, - 0x000000b8,0x00050084,0x00000006,0x000000ba,0x000000b7,0x000000b9,0x00050080,0x00000006, - 0x000000bb,0x000000b6,0x000000ba,0x00050041,0x0000001b,0x000000bc,0x00000019,0x00000066, - 0x0004003d,0x00000006,0x000000bd,0x000000bc,0x000500b1,0x00000027,0x000000be,0x000000bb, - 0x000000bd,0x000200f9,0x000000b5,0x000200f8,0x000000b5,0x000700f5,0x00000027,0x000000bf, - 0x000000b3,0x000000aa,0x000000be,0x000000b4,0x000300f7,0x000000c1,0x00000000,0x000400fa, - 0x000000bf,0x000000c0,0x000000c1,0x000200f8,0x000000c0,0x0004003d,0x00000006,0x000000c6, - 0x00000060,0x0004003d,0x00000006,0x000000c7,0x0000008a,0x00050041,0x0000001b,0x000000c8, - 0x00000019,0x000000ad,0x0004003d,0x00000006,0x000000c9,0x000000c8,0x00050084,0x00000006, - 0x000000ca,0x000000c7,0x000000c9,0x00050080,0x00000006,0x000000cb,0x000000c6,0x000000ca, - 0x00060041,0x000000cc,0x000000cd,0x000000c5,0x00000062,0x000000cb,0x0004003d,0x00000037, - 0x000000ce,0x000000cd,0x0004003d,0x00000006,0x000000d3,0x0000005a,0x0004003d,0x00000006, - 0x000000d4,0x0000008a,0x00050080,0x00000006,0x000000d5,0x000000d3,0x000000d4,0x00060041, - 0x000000cc,0x000000d6,0x000000d2,0x00000062,0x000000d5,0x0004003d,0x00000037,0x000000d7, - 0x000000d6,0x00050085,0x00000037,0x000000d8,0x000000ce,0x000000d7,0x0004003d,0x00000037, - 0x000000d9,0x00000039,0x00050081,0x00000037,0x000000da,0x000000d9,0x000000d8,0x0003003e, - 0x00000039,0x000000da,0x000200f9,0x000000c1,0x000200f8,0x000000c1,0x000200f9,0x0000008e, - 0x000200f8,0x0000008e,0x0004003d,0x00000006,0x000000db,0x0000008a,0x00050080,0x00000006, - 0x000000dc,0x000000db,0x00000066,0x0003003e,0x0000008a,0x000000dc,0x000200f9,0x0000008b, - 0x000200f8,0x0000008d,0x00050041,0x0000001b,0x000000dd,0x00000019,0x00000066,0x0004003d, - 0x00000006,0x000000de,0x000000dd,0x00050041,0x0000001b,0x000000df,0x00000019,0x00000097, - 0x0004003d,0x00000006,0x000000e0,0x000000df,0x00050084,0x00000006,0x000000e1,0x000000de, - 0x000000e0,0x0004003d,0x00000006,0x000000e2,0x00000060,0x00050080,0x00000006,0x000000e3, - 0x000000e2,0x000000e1,0x0003003e,0x00000060,0x000000e3,0x00050041,0x0000001b,0x000000e4, - 0x00000019,0x00000091,0x0004003d,0x00000006,0x000000e5,0x000000e4,0x0004003d,0x00000006, - 0x000000e6,0x0000005a,0x00050080,0x00000006,0x000000e7,0x000000e6,0x000000e5,0x0003003e, - 0x0000005a,0x000000e7,0x000200f9,0x00000083,0x000200f8,0x00000083,0x0004003d,0x00000006, - 0x000000e8,0x0000007f,0x00050080,0x00000006,0x000000e9,0x000000e8,0x00000066,0x0003003e, - 0x0000007f,0x000000e9,0x000200f9,0x00000080,0x000200f8,0x00000082,0x00050041,0x0000001b, - 0x000000ea,0x00000019,0x00000062,0x0004003d,0x00000006,0x000000eb,0x000000ea,0x00050041, - 0x0000001b,0x000000ec,0x00000019,0x00000066,0x0004003d,0x00000006,0x000000ed,0x000000ec, - 0x00050084,0x00000006,0x000000ee,0x000000eb,0x000000ed,0x00050041,0x0000001b,0x000000ef, - 0x00000019,0x00000066,0x0004003d,0x00000006,0x000000f0,0x000000ef,0x00050041,0x0000001b, - 0x000000f1,0x00000019,0x00000086,0x0004003d,0x00000006,0x000000f2,0x000000f1,0x00050084, - 0x00000006,0x000000f3,0x000000f0,0x000000f2,0x00050041,0x0000001b,0x000000f4,0x00000019, - 0x00000097,0x0004003d,0x00000006,0x000000f5,0x000000f4,0x00050084,0x00000006,0x000000f6, - 0x000000f3,0x000000f5,0x00050082,0x00000006,0x000000f7,0x000000ee,0x000000f6,0x0004003d, - 0x00000006,0x000000f8,0x00000060,0x00050080,0x00000006,0x000000f9,0x000000f8,0x000000f7, - 0x0003003e,0x00000060,0x000000f9,0x000200f9,0x00000079,0x000200f8,0x00000079,0x0004003d, - 0x00000006,0x000000fa,0x00000075,0x00050080,0x00000006,0x000000fb,0x000000fa,0x00000066, - 0x0003003e,0x00000075,0x000000fb,0x000200f9,0x00000076,0x000200f8,0x00000078,0x0004003d, - 0x00000006,0x000000fd,0x00000023,0x00050041,0x0000001b,0x000000fe,0x00000019,0x00000029, - 0x0004003d,0x00000006,0x000000ff,0x000000fe,0x00050084,0x00000006,0x00000100,0x000000fd, - 0x000000ff,0x00050041,0x0000001b,0x00000101,0x00000019,0x00000030,0x0004003d,0x00000006, - 0x00000102,0x00000101,0x00050084,0x00000006,0x00000103,0x00000100,0x00000102,0x0004003d, - 0x00000006,0x00000104,0x00000008,0x00050080,0x00000006,0x00000105,0x00000103,0x00000104, - 0x0004003d,0x00000006,0x00000106,0x00000012,0x00050041,0x0000001b,0x00000107,0x00000019, - 0x00000029,0x0004003d,0x00000006,0x00000108,0x00000107,0x00050084,0x00000006,0x00000109, - 0x00000106,0x00000108,0x00050080,0x00000006,0x0000010a,0x00000105,0x00000109,0x0003003e, - 0x000000fc,0x0000010a,0x00050041,0x0000001b,0x0000010c,0x00000019,0x0000010b,0x0004003d, - 0x00000006,0x0000010d,0x0000010c,0x000500aa,0x00000027,0x0000010e,0x0000010d,0x00000066, - 0x000300f7,0x00000110,0x00000000,0x000400fa,0x0000010e,0x0000010f,0x00000110,0x000200f8, - 0x0000010f,0x0004003d,0x00000006,0x00000115,0x00000012,0x00060041,0x000000cc,0x00000116, - 0x00000114,0x00000062,0x00000115,0x0004003d,0x00000037,0x00000117,0x00000116,0x0004003d, - 0x00000037,0x00000118,0x00000039,0x00050081,0x00000037,0x00000119,0x00000118,0x00000117, - 0x0003003e,0x00000039,0x00000119,0x000200f9,0x00000110,0x000200f8,0x00000110,0x0004003d, - 0x00000006,0x0000011e,0x000000fc,0x0004003d,0x00000037,0x0000011f,0x00000039,0x00060041, - 0x000000cc,0x00000120,0x0000011d,0x00000062,0x0000011e,0x0003003e,0x00000120,0x0000011f, - 0x000200f9,0x00000036,0x000200f8,0x00000036,0x000100fd,0x00010038 -}; - -}}} // namespace cv::dnn::vkcom diff --git a/modules/dnn/src/vkcom/shader/dw_conv.comp b/modules/dnn/src/vkcom/shader/dw_conv.comp deleted file mode 100644 index 419030e3fe..0000000000 --- a/modules/dnn/src/vkcom/shader/dw_conv.comp +++ /dev/null @@ -1,77 +0,0 @@ -#version 450 -#define LOCAL_SZ_X 256 -layout(push_constant) uniform pushBlock { - int in_h; - int in_w; - int out_h; - int out_w; - int stride_h; - int stride_w; - int pad_h; - int pad_w; - int filter_h; - int filter_w; - int dilation_h; - int dilation_w; - int channels; - int batch; - int has_bias; - int M; - int K; - int N; - int basic_shader_batch_idx; - int basic_shader_partition_idx; - int basic_shader_partition_size; -} p; - -layout(binding = 0) readonly buffer Input0{ - float in_buffer[]; -}; -layout(binding = 1) readonly buffer Input1 { - float bias_data[]; -}; -layout(binding = 2) readonly buffer Input3{ - float weight_data[]; -}; -layout(binding = 3) writeonly buffer Output{ - float out_buffer[]; -}; -layout(local_size_x = LOCAL_SZ_X, local_size_y = 1, local_size_z = 1) in; - -/* - Each work item compute one output cell -*/ -void main() -{ - int gx = int(gl_GlobalInvocationID.x); - int gy = int(gl_GlobalInvocationID.y); - int gz = int(gl_GlobalInvocationID.z); - if(gx < p.out_w && gy < p.out_h && gz < p.channels) - { - float sum = 0.0f; - - int org_y = gy * p.stride_h - p.pad_h; - int org_x = gx * p.stride_w - p.pad_w; - - int weight_off = gz * p.filter_h * p.filter_w; - int input_off = (p.basic_shader_batch_idx * p.channels + gz) * p.in_h * p.in_w + org_y * p.in_w + org_x; - for(int y = 0; y < p.filter_h; y++) - { - for(int x = 0; x < p.filter_w; x++) - { - if(org_y + y * p.dilation_h >= 0 && org_y + y * p.dilation_h < p.in_h && org_x + x * p.dilation_w >= 0 && org_x + x * p.dilation_w < p.in_w) - { - sum += in_buffer[input_off + x * p.dilation_w] * weight_data[weight_off + x]; - } - } - weight_off += p.filter_w; - input_off += p.in_w * p.dilation_h; - } - - int offset = (p.basic_shader_batch_idx * p.channels + gz) * p.out_h * p.out_w + gy * p.out_w + gx; - if (p.has_bias == 1) - out_buffer[offset] = sum + bias_data[gz]; - else - out_buffer[offset] = sum; - } -} diff --git a/modules/dnn/src/vkcom/shader/dw_conv_spv.cpp b/modules/dnn/src/vkcom/shader/dw_conv_spv.cpp deleted file mode 100644 index 4affded20e..0000000000 --- a/modules/dnn/src/vkcom/shader/dw_conv_spv.cpp +++ /dev/null @@ -1,235 +0,0 @@ -// This file is part of OpenCV project. -// It is subject to the license terms in the LICENSE file found in the top-level directory -// of this distribution and at http://opencv.org/license.html. -// -// Copyright (C) 2018, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. - -#include "../../precomp.hpp" - -namespace cv { namespace dnn { namespace vkcom { - -extern const unsigned int dw_conv_spv[1760] = { - 0x07230203,0x00010000,0x00080001,0x0000010b,0x00000000,0x00020011,0x00000001,0x0006000b, - 0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001, - 0x0006000f,0x00000005,0x00000004,0x6e69616d,0x00000000,0x0000000c,0x00060010,0x00000004, - 0x00000011,0x00000100,0x00000001,0x00000001,0x00030003,0x00000002,0x000001c2,0x00040005, - 0x00000004,0x6e69616d,0x00000000,0x00030005,0x00000008,0x00007867,0x00080005,0x0000000c, - 0x475f6c67,0x61626f6c,0x766e496c,0x7461636f,0x496e6f69,0x00000044,0x00030005,0x00000012, - 0x00007967,0x00030005,0x00000017,0x00007a67,0x00050005,0x0000001e,0x68737570,0x636f6c42, - 0x0000006b,0x00050006,0x0000001e,0x00000000,0x685f6e69,0x00000000,0x00050006,0x0000001e, - 0x00000001,0x775f6e69,0x00000000,0x00050006,0x0000001e,0x00000002,0x5f74756f,0x00000068, - 0x00050006,0x0000001e,0x00000003,0x5f74756f,0x00000077,0x00060006,0x0000001e,0x00000004, - 0x69727473,0x685f6564,0x00000000,0x00060006,0x0000001e,0x00000005,0x69727473,0x775f6564, - 0x00000000,0x00050006,0x0000001e,0x00000006,0x5f646170,0x00000068,0x00050006,0x0000001e, - 0x00000007,0x5f646170,0x00000077,0x00060006,0x0000001e,0x00000008,0x746c6966,0x685f7265, - 0x00000000,0x00060006,0x0000001e,0x00000009,0x746c6966,0x775f7265,0x00000000,0x00060006, - 0x0000001e,0x0000000a,0x616c6964,0x6e6f6974,0x0000685f,0x00060006,0x0000001e,0x0000000b, - 0x616c6964,0x6e6f6974,0x0000775f,0x00060006,0x0000001e,0x0000000c,0x6e616863,0x736c656e, - 0x00000000,0x00050006,0x0000001e,0x0000000d,0x63746162,0x00000068,0x00060006,0x0000001e, - 0x0000000e,0x5f736168,0x73616962,0x00000000,0x00040006,0x0000001e,0x0000000f,0x0000004d, - 0x00040006,0x0000001e,0x00000010,0x0000004b,0x00040006,0x0000001e,0x00000011,0x0000004e, - 0x00090006,0x0000001e,0x00000012,0x69736162,0x68735f63,0x72656461,0x7461625f,0x695f6863, - 0x00007864,0x00090006,0x0000001e,0x00000013,0x69736162,0x68735f63,0x72656461,0x6f72675f, - 0x695f7075,0x00007864,0x00090006,0x0000001e,0x00000014,0x69736162,0x68735f63,0x72656461, - 0x6f72675f,0x735f7075,0x00657a69,0x00030005,0x00000020,0x00000070,0x00030005,0x0000003a, - 0x006d7573,0x00040005,0x0000003c,0x5f67726f,0x00000079,0x00040005,0x00000046,0x5f67726f, - 0x00000078,0x00050005,0x00000050,0x67696577,0x6f5f7468,0x00006666,0x00050005,0x0000005a, - 0x75706e69,0x666f5f74,0x00000066,0x00030005,0x00000072,0x00000079,0x00030005,0x0000007c, - 0x00000078,0x00040005,0x000000b4,0x75706e49,0x00003074,0x00060006,0x000000b4,0x00000000, - 0x625f6e69,0x65666675,0x00000072,0x00030005,0x000000b6,0x00000000,0x00040005,0x000000c1, - 0x75706e49,0x00003374,0x00060006,0x000000c1,0x00000000,0x67696577,0x645f7468,0x00617461, - 0x00030005,0x000000c3,0x00000000,0x00040005,0x000000db,0x7366666f,0x00007465,0x00040005, - 0x000000f7,0x7074754f,0x00007475,0x00060006,0x000000f7,0x00000000,0x5f74756f,0x66667562, - 0x00007265,0x00030005,0x000000f9,0x00000000,0x00040005,0x000000fd,0x75706e49,0x00003174, - 0x00060006,0x000000fd,0x00000000,0x73616962,0x7461645f,0x00000061,0x00030005,0x000000ff, - 0x00000000,0x00040047,0x0000000c,0x0000000b,0x0000001c,0x00050048,0x0000001e,0x00000000, - 0x00000023,0x00000000,0x00050048,0x0000001e,0x00000001,0x00000023,0x00000004,0x00050048, - 0x0000001e,0x00000002,0x00000023,0x00000008,0x00050048,0x0000001e,0x00000003,0x00000023, - 0x0000000c,0x00050048,0x0000001e,0x00000004,0x00000023,0x00000010,0x00050048,0x0000001e, - 0x00000005,0x00000023,0x00000014,0x00050048,0x0000001e,0x00000006,0x00000023,0x00000018, - 0x00050048,0x0000001e,0x00000007,0x00000023,0x0000001c,0x00050048,0x0000001e,0x00000008, - 0x00000023,0x00000020,0x00050048,0x0000001e,0x00000009,0x00000023,0x00000024,0x00050048, - 0x0000001e,0x0000000a,0x00000023,0x00000028,0x00050048,0x0000001e,0x0000000b,0x00000023, - 0x0000002c,0x00050048,0x0000001e,0x0000000c,0x00000023,0x00000030,0x00050048,0x0000001e, - 0x0000000d,0x00000023,0x00000034,0x00050048,0x0000001e,0x0000000e,0x00000023,0x00000038, - 0x00050048,0x0000001e,0x0000000f,0x00000023,0x0000003c,0x00050048,0x0000001e,0x00000010, - 0x00000023,0x00000040,0x00050048,0x0000001e,0x00000011,0x00000023,0x00000044,0x00050048, - 0x0000001e,0x00000012,0x00000023,0x00000048,0x00050048,0x0000001e,0x00000013,0x00000023, - 0x0000004c,0x00050048,0x0000001e,0x00000014,0x00000023,0x00000050,0x00030047,0x0000001e, - 0x00000002,0x00040047,0x000000b3,0x00000006,0x00000004,0x00040048,0x000000b4,0x00000000, - 0x00000018,0x00050048,0x000000b4,0x00000000,0x00000023,0x00000000,0x00030047,0x000000b4, - 0x00000003,0x00040047,0x000000b6,0x00000022,0x00000000,0x00040047,0x000000b6,0x00000021, - 0x00000000,0x00040047,0x000000c0,0x00000006,0x00000004,0x00040048,0x000000c1,0x00000000, - 0x00000018,0x00050048,0x000000c1,0x00000000,0x00000023,0x00000000,0x00030047,0x000000c1, - 0x00000003,0x00040047,0x000000c3,0x00000022,0x00000000,0x00040047,0x000000c3,0x00000021, - 0x00000002,0x00040047,0x000000f6,0x00000006,0x00000004,0x00040048,0x000000f7,0x00000000, - 0x00000019,0x00050048,0x000000f7,0x00000000,0x00000023,0x00000000,0x00030047,0x000000f7, - 0x00000003,0x00040047,0x000000f9,0x00000022,0x00000000,0x00040047,0x000000f9,0x00000021, - 0x00000003,0x00040047,0x000000fc,0x00000006,0x00000004,0x00040048,0x000000fd,0x00000000, - 0x00000018,0x00050048,0x000000fd,0x00000000,0x00000023,0x00000000,0x00030047,0x000000fd, - 0x00000003,0x00040047,0x000000ff,0x00000022,0x00000000,0x00040047,0x000000ff,0x00000021, - 0x00000001,0x00040047,0x0000010a,0x0000000b,0x00000019,0x00020013,0x00000002,0x00030021, - 0x00000003,0x00000002,0x00040015,0x00000006,0x00000020,0x00000001,0x00040020,0x00000007, - 0x00000007,0x00000006,0x00040015,0x00000009,0x00000020,0x00000000,0x00040017,0x0000000a, - 0x00000009,0x00000003,0x00040020,0x0000000b,0x00000001,0x0000000a,0x0004003b,0x0000000b, - 0x0000000c,0x00000001,0x0004002b,0x00000009,0x0000000d,0x00000000,0x00040020,0x0000000e, - 0x00000001,0x00000009,0x0004002b,0x00000009,0x00000013,0x00000001,0x0004002b,0x00000009, - 0x00000018,0x00000002,0x00020014,0x0000001c,0x0017001e,0x0000001e,0x00000006,0x00000006, - 0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006, - 0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006, - 0x00000006,0x00000006,0x00000006,0x00040020,0x0000001f,0x00000009,0x0000001e,0x0004003b, - 0x0000001f,0x00000020,0x00000009,0x0004002b,0x00000006,0x00000021,0x00000003,0x00040020, - 0x00000022,0x00000009,0x00000006,0x0004002b,0x00000006,0x00000029,0x00000002,0x0004002b, - 0x00000006,0x00000031,0x0000000c,0x00030016,0x00000038,0x00000020,0x00040020,0x00000039, - 0x00000007,0x00000038,0x0004002b,0x00000038,0x0000003b,0x00000000,0x0004002b,0x00000006, - 0x0000003e,0x00000004,0x0004002b,0x00000006,0x00000042,0x00000006,0x0004002b,0x00000006, - 0x00000048,0x00000005,0x0004002b,0x00000006,0x0000004c,0x00000007,0x0004002b,0x00000006, - 0x00000052,0x00000008,0x0004002b,0x00000006,0x00000056,0x00000009,0x0004002b,0x00000006, - 0x0000005b,0x00000012,0x0004002b,0x00000006,0x00000063,0x00000000,0x0004002b,0x00000006, - 0x00000067,0x00000001,0x0004002b,0x00000006,0x00000088,0x0000000a,0x0004002b,0x00000006, - 0x0000009e,0x0000000b,0x0003001d,0x000000b3,0x00000038,0x0003001e,0x000000b4,0x000000b3, - 0x00040020,0x000000b5,0x00000002,0x000000b4,0x0004003b,0x000000b5,0x000000b6,0x00000002, - 0x00040020,0x000000bd,0x00000002,0x00000038,0x0003001d,0x000000c0,0x00000038,0x0003001e, - 0x000000c1,0x000000c0,0x00040020,0x000000c2,0x00000002,0x000000c1,0x0004003b,0x000000c2, - 0x000000c3,0x00000002,0x0004002b,0x00000006,0x000000f0,0x0000000e,0x0003001d,0x000000f6, - 0x00000038,0x0003001e,0x000000f7,0x000000f6,0x00040020,0x000000f8,0x00000002,0x000000f7, - 0x0004003b,0x000000f8,0x000000f9,0x00000002,0x0003001d,0x000000fc,0x00000038,0x0003001e, - 0x000000fd,0x000000fc,0x00040020,0x000000fe,0x00000002,0x000000fd,0x0004003b,0x000000fe, - 0x000000ff,0x00000002,0x0004002b,0x00000009,0x00000109,0x00000100,0x0006002c,0x0000000a, - 0x0000010a,0x00000109,0x00000013,0x00000013,0x00050036,0x00000002,0x00000004,0x00000000, - 0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000007,0x00000008,0x00000007,0x0004003b, - 0x00000007,0x00000012,0x00000007,0x0004003b,0x00000007,0x00000017,0x00000007,0x0004003b, - 0x00000039,0x0000003a,0x00000007,0x0004003b,0x00000007,0x0000003c,0x00000007,0x0004003b, - 0x00000007,0x00000046,0x00000007,0x0004003b,0x00000007,0x00000050,0x00000007,0x0004003b, - 0x00000007,0x0000005a,0x00000007,0x0004003b,0x00000007,0x00000072,0x00000007,0x0004003b, - 0x00000007,0x0000007c,0x00000007,0x0004003b,0x00000007,0x000000db,0x00000007,0x00050041, - 0x0000000e,0x0000000f,0x0000000c,0x0000000d,0x0004003d,0x00000009,0x00000010,0x0000000f, - 0x0004007c,0x00000006,0x00000011,0x00000010,0x0003003e,0x00000008,0x00000011,0x00050041, - 0x0000000e,0x00000014,0x0000000c,0x00000013,0x0004003d,0x00000009,0x00000015,0x00000014, - 0x0004007c,0x00000006,0x00000016,0x00000015,0x0003003e,0x00000012,0x00000016,0x00050041, - 0x0000000e,0x00000019,0x0000000c,0x00000018,0x0004003d,0x00000009,0x0000001a,0x00000019, - 0x0004007c,0x00000006,0x0000001b,0x0000001a,0x0003003e,0x00000017,0x0000001b,0x0004003d, - 0x00000006,0x0000001d,0x00000008,0x00050041,0x00000022,0x00000023,0x00000020,0x00000021, - 0x0004003d,0x00000006,0x00000024,0x00000023,0x000500b1,0x0000001c,0x00000025,0x0000001d, - 0x00000024,0x000300f7,0x00000027,0x00000000,0x000400fa,0x00000025,0x00000026,0x00000027, - 0x000200f8,0x00000026,0x0004003d,0x00000006,0x00000028,0x00000012,0x00050041,0x00000022, - 0x0000002a,0x00000020,0x00000029,0x0004003d,0x00000006,0x0000002b,0x0000002a,0x000500b1, - 0x0000001c,0x0000002c,0x00000028,0x0000002b,0x000200f9,0x00000027,0x000200f8,0x00000027, - 0x000700f5,0x0000001c,0x0000002d,0x00000025,0x00000005,0x0000002c,0x00000026,0x000300f7, - 0x0000002f,0x00000000,0x000400fa,0x0000002d,0x0000002e,0x0000002f,0x000200f8,0x0000002e, - 0x0004003d,0x00000006,0x00000030,0x00000017,0x00050041,0x00000022,0x00000032,0x00000020, - 0x00000031,0x0004003d,0x00000006,0x00000033,0x00000032,0x000500b1,0x0000001c,0x00000034, - 0x00000030,0x00000033,0x000200f9,0x0000002f,0x000200f8,0x0000002f,0x000700f5,0x0000001c, - 0x00000035,0x0000002d,0x00000027,0x00000034,0x0000002e,0x000300f7,0x00000037,0x00000000, - 0x000400fa,0x00000035,0x00000036,0x00000037,0x000200f8,0x00000036,0x0003003e,0x0000003a, - 0x0000003b,0x0004003d,0x00000006,0x0000003d,0x00000012,0x00050041,0x00000022,0x0000003f, - 0x00000020,0x0000003e,0x0004003d,0x00000006,0x00000040,0x0000003f,0x00050084,0x00000006, - 0x00000041,0x0000003d,0x00000040,0x00050041,0x00000022,0x00000043,0x00000020,0x00000042, - 0x0004003d,0x00000006,0x00000044,0x00000043,0x00050082,0x00000006,0x00000045,0x00000041, - 0x00000044,0x0003003e,0x0000003c,0x00000045,0x0004003d,0x00000006,0x00000047,0x00000008, - 0x00050041,0x00000022,0x00000049,0x00000020,0x00000048,0x0004003d,0x00000006,0x0000004a, - 0x00000049,0x00050084,0x00000006,0x0000004b,0x00000047,0x0000004a,0x00050041,0x00000022, - 0x0000004d,0x00000020,0x0000004c,0x0004003d,0x00000006,0x0000004e,0x0000004d,0x00050082, - 0x00000006,0x0000004f,0x0000004b,0x0000004e,0x0003003e,0x00000046,0x0000004f,0x0004003d, - 0x00000006,0x00000051,0x00000017,0x00050041,0x00000022,0x00000053,0x00000020,0x00000052, - 0x0004003d,0x00000006,0x00000054,0x00000053,0x00050084,0x00000006,0x00000055,0x00000051, - 0x00000054,0x00050041,0x00000022,0x00000057,0x00000020,0x00000056,0x0004003d,0x00000006, - 0x00000058,0x00000057,0x00050084,0x00000006,0x00000059,0x00000055,0x00000058,0x0003003e, - 0x00000050,0x00000059,0x00050041,0x00000022,0x0000005c,0x00000020,0x0000005b,0x0004003d, - 0x00000006,0x0000005d,0x0000005c,0x00050041,0x00000022,0x0000005e,0x00000020,0x00000031, - 0x0004003d,0x00000006,0x0000005f,0x0000005e,0x00050084,0x00000006,0x00000060,0x0000005d, - 0x0000005f,0x0004003d,0x00000006,0x00000061,0x00000017,0x00050080,0x00000006,0x00000062, - 0x00000060,0x00000061,0x00050041,0x00000022,0x00000064,0x00000020,0x00000063,0x0004003d, - 0x00000006,0x00000065,0x00000064,0x00050084,0x00000006,0x00000066,0x00000062,0x00000065, - 0x00050041,0x00000022,0x00000068,0x00000020,0x00000067,0x0004003d,0x00000006,0x00000069, - 0x00000068,0x00050084,0x00000006,0x0000006a,0x00000066,0x00000069,0x0004003d,0x00000006, - 0x0000006b,0x0000003c,0x00050041,0x00000022,0x0000006c,0x00000020,0x00000067,0x0004003d, - 0x00000006,0x0000006d,0x0000006c,0x00050084,0x00000006,0x0000006e,0x0000006b,0x0000006d, - 0x00050080,0x00000006,0x0000006f,0x0000006a,0x0000006e,0x0004003d,0x00000006,0x00000070, - 0x00000046,0x00050080,0x00000006,0x00000071,0x0000006f,0x00000070,0x0003003e,0x0000005a, - 0x00000071,0x0003003e,0x00000072,0x00000063,0x000200f9,0x00000073,0x000200f8,0x00000073, - 0x000400f6,0x00000075,0x00000076,0x00000000,0x000200f9,0x00000077,0x000200f8,0x00000077, - 0x0004003d,0x00000006,0x00000078,0x00000072,0x00050041,0x00000022,0x00000079,0x00000020, - 0x00000052,0x0004003d,0x00000006,0x0000007a,0x00000079,0x000500b1,0x0000001c,0x0000007b, - 0x00000078,0x0000007a,0x000400fa,0x0000007b,0x00000074,0x00000075,0x000200f8,0x00000074, - 0x0003003e,0x0000007c,0x00000063,0x000200f9,0x0000007d,0x000200f8,0x0000007d,0x000400f6, - 0x0000007f,0x00000080,0x00000000,0x000200f9,0x00000081,0x000200f8,0x00000081,0x0004003d, - 0x00000006,0x00000082,0x0000007c,0x00050041,0x00000022,0x00000083,0x00000020,0x00000056, - 0x0004003d,0x00000006,0x00000084,0x00000083,0x000500b1,0x0000001c,0x00000085,0x00000082, - 0x00000084,0x000400fa,0x00000085,0x0000007e,0x0000007f,0x000200f8,0x0000007e,0x0004003d, - 0x00000006,0x00000086,0x0000003c,0x0004003d,0x00000006,0x00000087,0x00000072,0x00050041, - 0x00000022,0x00000089,0x00000020,0x00000088,0x0004003d,0x00000006,0x0000008a,0x00000089, - 0x00050084,0x00000006,0x0000008b,0x00000087,0x0000008a,0x00050080,0x00000006,0x0000008c, - 0x00000086,0x0000008b,0x000500af,0x0000001c,0x0000008d,0x0000008c,0x00000063,0x000300f7, - 0x0000008f,0x00000000,0x000400fa,0x0000008d,0x0000008e,0x0000008f,0x000200f8,0x0000008e, - 0x0004003d,0x00000006,0x00000090,0x0000003c,0x0004003d,0x00000006,0x00000091,0x00000072, - 0x00050041,0x00000022,0x00000092,0x00000020,0x00000088,0x0004003d,0x00000006,0x00000093, - 0x00000092,0x00050084,0x00000006,0x00000094,0x00000091,0x00000093,0x00050080,0x00000006, - 0x00000095,0x00000090,0x00000094,0x00050041,0x00000022,0x00000096,0x00000020,0x00000063, - 0x0004003d,0x00000006,0x00000097,0x00000096,0x000500b1,0x0000001c,0x00000098,0x00000095, - 0x00000097,0x000200f9,0x0000008f,0x000200f8,0x0000008f,0x000700f5,0x0000001c,0x00000099, - 0x0000008d,0x0000007e,0x00000098,0x0000008e,0x000300f7,0x0000009b,0x00000000,0x000400fa, - 0x00000099,0x0000009a,0x0000009b,0x000200f8,0x0000009a,0x0004003d,0x00000006,0x0000009c, - 0x00000046,0x0004003d,0x00000006,0x0000009d,0x0000007c,0x00050041,0x00000022,0x0000009f, - 0x00000020,0x0000009e,0x0004003d,0x00000006,0x000000a0,0x0000009f,0x00050084,0x00000006, - 0x000000a1,0x0000009d,0x000000a0,0x00050080,0x00000006,0x000000a2,0x0000009c,0x000000a1, - 0x000500af,0x0000001c,0x000000a3,0x000000a2,0x00000063,0x000200f9,0x0000009b,0x000200f8, - 0x0000009b,0x000700f5,0x0000001c,0x000000a4,0x00000099,0x0000008f,0x000000a3,0x0000009a, - 0x000300f7,0x000000a6,0x00000000,0x000400fa,0x000000a4,0x000000a5,0x000000a6,0x000200f8, - 0x000000a5,0x0004003d,0x00000006,0x000000a7,0x00000046,0x0004003d,0x00000006,0x000000a8, - 0x0000007c,0x00050041,0x00000022,0x000000a9,0x00000020,0x0000009e,0x0004003d,0x00000006, - 0x000000aa,0x000000a9,0x00050084,0x00000006,0x000000ab,0x000000a8,0x000000aa,0x00050080, - 0x00000006,0x000000ac,0x000000a7,0x000000ab,0x00050041,0x00000022,0x000000ad,0x00000020, - 0x00000067,0x0004003d,0x00000006,0x000000ae,0x000000ad,0x000500b1,0x0000001c,0x000000af, - 0x000000ac,0x000000ae,0x000200f9,0x000000a6,0x000200f8,0x000000a6,0x000700f5,0x0000001c, - 0x000000b0,0x000000a4,0x0000009b,0x000000af,0x000000a5,0x000300f7,0x000000b2,0x00000000, - 0x000400fa,0x000000b0,0x000000b1,0x000000b2,0x000200f8,0x000000b1,0x0004003d,0x00000006, - 0x000000b7,0x0000005a,0x0004003d,0x00000006,0x000000b8,0x0000007c,0x00050041,0x00000022, - 0x000000b9,0x00000020,0x0000009e,0x0004003d,0x00000006,0x000000ba,0x000000b9,0x00050084, - 0x00000006,0x000000bb,0x000000b8,0x000000ba,0x00050080,0x00000006,0x000000bc,0x000000b7, - 0x000000bb,0x00060041,0x000000bd,0x000000be,0x000000b6,0x00000063,0x000000bc,0x0004003d, - 0x00000038,0x000000bf,0x000000be,0x0004003d,0x00000006,0x000000c4,0x00000050,0x0004003d, - 0x00000006,0x000000c5,0x0000007c,0x00050080,0x00000006,0x000000c6,0x000000c4,0x000000c5, - 0x00060041,0x000000bd,0x000000c7,0x000000c3,0x00000063,0x000000c6,0x0004003d,0x00000038, - 0x000000c8,0x000000c7,0x00050085,0x00000038,0x000000c9,0x000000bf,0x000000c8,0x0004003d, - 0x00000038,0x000000ca,0x0000003a,0x00050081,0x00000038,0x000000cb,0x000000ca,0x000000c9, - 0x0003003e,0x0000003a,0x000000cb,0x000200f9,0x000000b2,0x000200f8,0x000000b2,0x000200f9, - 0x00000080,0x000200f8,0x00000080,0x0004003d,0x00000006,0x000000cc,0x0000007c,0x00050080, - 0x00000006,0x000000cd,0x000000cc,0x00000067,0x0003003e,0x0000007c,0x000000cd,0x000200f9, - 0x0000007d,0x000200f8,0x0000007f,0x00050041,0x00000022,0x000000ce,0x00000020,0x00000056, - 0x0004003d,0x00000006,0x000000cf,0x000000ce,0x0004003d,0x00000006,0x000000d0,0x00000050, - 0x00050080,0x00000006,0x000000d1,0x000000d0,0x000000cf,0x0003003e,0x00000050,0x000000d1, - 0x00050041,0x00000022,0x000000d2,0x00000020,0x00000067,0x0004003d,0x00000006,0x000000d3, - 0x000000d2,0x00050041,0x00000022,0x000000d4,0x00000020,0x00000088,0x0004003d,0x00000006, - 0x000000d5,0x000000d4,0x00050084,0x00000006,0x000000d6,0x000000d3,0x000000d5,0x0004003d, - 0x00000006,0x000000d7,0x0000005a,0x00050080,0x00000006,0x000000d8,0x000000d7,0x000000d6, - 0x0003003e,0x0000005a,0x000000d8,0x000200f9,0x00000076,0x000200f8,0x00000076,0x0004003d, - 0x00000006,0x000000d9,0x00000072,0x00050080,0x00000006,0x000000da,0x000000d9,0x00000067, - 0x0003003e,0x00000072,0x000000da,0x000200f9,0x00000073,0x000200f8,0x00000075,0x00050041, - 0x00000022,0x000000dc,0x00000020,0x0000005b,0x0004003d,0x00000006,0x000000dd,0x000000dc, - 0x00050041,0x00000022,0x000000de,0x00000020,0x00000031,0x0004003d,0x00000006,0x000000df, - 0x000000de,0x00050084,0x00000006,0x000000e0,0x000000dd,0x000000df,0x0004003d,0x00000006, - 0x000000e1,0x00000017,0x00050080,0x00000006,0x000000e2,0x000000e0,0x000000e1,0x00050041, - 0x00000022,0x000000e3,0x00000020,0x00000029,0x0004003d,0x00000006,0x000000e4,0x000000e3, - 0x00050084,0x00000006,0x000000e5,0x000000e2,0x000000e4,0x00050041,0x00000022,0x000000e6, - 0x00000020,0x00000021,0x0004003d,0x00000006,0x000000e7,0x000000e6,0x00050084,0x00000006, - 0x000000e8,0x000000e5,0x000000e7,0x0004003d,0x00000006,0x000000e9,0x00000012,0x00050041, - 0x00000022,0x000000ea,0x00000020,0x00000021,0x0004003d,0x00000006,0x000000eb,0x000000ea, - 0x00050084,0x00000006,0x000000ec,0x000000e9,0x000000eb,0x00050080,0x00000006,0x000000ed, - 0x000000e8,0x000000ec,0x0004003d,0x00000006,0x000000ee,0x00000008,0x00050080,0x00000006, - 0x000000ef,0x000000ed,0x000000ee,0x0003003e,0x000000db,0x000000ef,0x00050041,0x00000022, - 0x000000f1,0x00000020,0x000000f0,0x0004003d,0x00000006,0x000000f2,0x000000f1,0x000500aa, - 0x0000001c,0x000000f3,0x000000f2,0x00000067,0x000300f7,0x000000f5,0x00000000,0x000400fa, - 0x000000f3,0x000000f4,0x00000105,0x000200f8,0x000000f4,0x0004003d,0x00000006,0x000000fa, - 0x000000db,0x0004003d,0x00000038,0x000000fb,0x0000003a,0x0004003d,0x00000006,0x00000100, - 0x00000017,0x00060041,0x000000bd,0x00000101,0x000000ff,0x00000063,0x00000100,0x0004003d, - 0x00000038,0x00000102,0x00000101,0x00050081,0x00000038,0x00000103,0x000000fb,0x00000102, - 0x00060041,0x000000bd,0x00000104,0x000000f9,0x00000063,0x000000fa,0x0003003e,0x00000104, - 0x00000103,0x000200f9,0x000000f5,0x000200f8,0x00000105,0x0004003d,0x00000006,0x00000106, - 0x000000db,0x0004003d,0x00000038,0x00000107,0x0000003a,0x00060041,0x000000bd,0x00000108, - 0x000000f9,0x00000063,0x00000106,0x0003003e,0x00000108,0x00000107,0x000200f9,0x000000f5, - 0x000200f8,0x000000f5,0x000200f9,0x00000037,0x000200f8,0x00000037,0x000100fd,0x00010038 -}; - -}}} // namespace cv::dnn::vkcom diff --git a/modules/dnn/src/vkcom/shader/gemm.comp b/modules/dnn/src/vkcom/shader/gemm.comp new file mode 100644 index 0000000000..eee595cf5b --- /dev/null +++ b/modules/dnn/src/vkcom/shader/gemm.comp @@ -0,0 +1,168 @@ +#version 450 + +#define KSTRIP_LEN 32 +#define BLOCK_SIZE 64 +#define WARP 32 + +#define INNER_THREAD 16 // inner thread +#define ALL_THREAD 256 + +#define A_INSTRIP 8 +#define A_STRIP 8 // (BLOCK_SIZE/A_INSTRIP) + +#define B_INSTRIP 4 // (ALL_THREAD/BLOCK_SIZE) +#define B_STRIP 8 // (KSTRIP_LEN/B_INSTRIP) + +#define MNSTRIP (BLOCK_SIZE/INNER_THREAD) +#define KSTRIP (KSTRIP_LEN/INNER_THREAD) + +#define PER_THREAD (BLOCK_SIZE/INNER_THREAD) + +// Experiment Row major VS column major. + +layout(binding = 0) readonly buffer Input0{ + float image_data[]; +}; +layout(binding = 1) readonly buffer Input1 { + float weight_data[]; +}; +layout(binding = 2) writeonly buffer Output{ + float outMat_data[]; +}; + +layout(binding = 3) uniform pushBlock { + int M; + int K; + int N; + int KStrip; + int KStripRemain; +} p; + +shared float ashare[KSTRIP_LEN][BLOCK_SIZE]; // 2 KB +shared float bshare[BLOCK_SIZE][KSTRIP_LEN]; // 2 KB + +layout(local_size_x = ALL_THREAD, local_size_y = 1, local_size_z = 1) in; +void main() +{ + int mIndex = int(gl_WorkGroupID.x) * BLOCK_SIZE; + int nIndex = int(gl_WorkGroupID.y) * BLOCK_SIZE; + + int local_x = int(gl_LocalInvocationID.x) % 16; // 0~7 + int local_y = int(gl_LocalInvocationID.x) / 16; // 0~31 + + int a_local_x = int(gl_LocalInvocationID.x) % KSTRIP_LEN; // 256 / 32 = 8 + int a_local_y = int(gl_LocalInvocationID.x) / KSTRIP_LEN; + + int b_local_x = int(gl_LocalInvocationID.x) % BLOCK_SIZE; // 256 / 64 = 4 + int b_local_y = int(gl_LocalInvocationID.x) / BLOCK_SIZE; + + int aoffset = p.K * mIndex + a_local_y * p.K + a_local_x; + int boffset = nIndex + b_local_x + b_local_y * p.N; + + float sum[PER_THREAD * PER_THREAD]; + for (int n = 0; n < PER_THREAD * PER_THREAD; n++) + { + sum[n] = 0.f; + } + + float regA[4]; + float regB[4]; + + for (int i = 0; i < p.KStrip; i++) + { + // load A to shared memory A, transpose A + for (int s = 0; s < A_STRIP; s++) + { + ashare[a_local_x][s * A_INSTRIP + a_local_y] = image_data[aoffset + s * A_INSTRIP * p.K + i * KSTRIP_LEN]; + } + + // load B to shared memory B, transpose B + for (int s = 0; s < B_STRIP; s++) + { + bshare[b_local_x][s * B_INSTRIP + b_local_y] = weight_data[boffset + s * B_INSTRIP * p.N + i * KSTRIP_LEN * p.N]; + } + + barrier(); + + for (int j = 0; j < KSTRIP_LEN; j++) + { + // Load shared memory to register. + for (int m = 0; m < 4; m++) + { + regA[m] = ashare[j][local_x*4 + m]; + } + + for (int m = 0; m < 4; m++) + { + regB[m] = bshare[local_y + 16 * m][j]; + } + + for (int m = 0; m < 4; m++) + { + for (int n = 0; n < 4; n++) + { + sum[m*4 + n] += regA[m] * regB[n]; + } + } + } + barrier(); + } + + if (p.KStripRemain > 0) + { + int aoffset2 = aoffset + p.KStrip * KSTRIP_LEN; + int boffset2 = boffset + p.KStrip * KSTRIP_LEN * p.N; + + // load A to shared memory A, transpose A + for (int s = 0; s < A_STRIP; s++) + { + ashare[a_local_x][s * A_INSTRIP + a_local_y] = image_data[aoffset2 + s * A_INSTRIP * p.K]; + } + + // load B to shared memory B, transpose B + for (int s = 0; s < B_STRIP; s++) + { + bshare[b_local_x][s * B_INSTRIP + b_local_y] = weight_data[boffset2 + s * B_INSTRIP * p.N]; + } + + barrier(); + + for (int j = 0; j < p.KStripRemain; j++) + { + // Load shared memory to register. + for (int m = 0; m < 4; m++) + { + regA[m] = ashare[j][local_x*4 + m]; + } + + for (int m = 0; m < 4; m++) + { + regB[m] = bshare[local_y + 16 * m][j]; + } + + for (int m = 0; m < 4; m++) + { + for (int n = 0; n < 4; n++) + { + sum[m*4 + n] += regA[m] * regB[n]; + } + } + } + } + + for (int n = 0; n < PER_THREAD; n++) + { + int nIndex2 = nIndex + n * INNER_THREAD + local_y; + if (nIndex2 < p.N) + { + for (int m = 0; m < PER_THREAD; m++) + { + int mIndex2 = mIndex + local_x * PER_THREAD + m; + if (mIndex2 < p.M) + { + outMat_data[mIndex2 * p.N + nIndex2] = sum[m* PER_THREAD + n]; + } + } + } + } +} diff --git a/modules/dnn/src/vkcom/shader/gemm_spv.cpp b/modules/dnn/src/vkcom/shader/gemm_spv.cpp new file mode 100644 index 0000000000..1c1593f7c0 --- /dev/null +++ b/modules/dnn/src/vkcom/shader/gemm_spv.cpp @@ -0,0 +1,375 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. + +#include "../../precomp.hpp" + +namespace cv { namespace dnn { namespace vkcom { + +extern const unsigned int gemm_spv[2902] = { + 0x07230203,0x00010000,0x0008000b,0x000001ff,0x00000000,0x00020011,0x00000001,0x0006000b, + 0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001, + 0x0007000f,0x00000005,0x00000004,0x6e69616d,0x00000000,0x0000000c,0x0000001b,0x00060010, + 0x00000004,0x00000011,0x00000100,0x00000001,0x00000001,0x00030003,0x00000002,0x000001c2, + 0x00040005,0x00000004,0x6e69616d,0x00000000,0x00040005,0x00000008,0x646e496d,0x00007865, + 0x00060005,0x0000000c,0x575f6c67,0x476b726f,0x70756f72,0x00004449,0x00040005,0x00000014, + 0x646e496e,0x00007865,0x00040005,0x0000001a,0x61636f6c,0x00785f6c,0x00080005,0x0000001b, + 0x4c5f6c67,0x6c61636f,0x6f766e49,0x69746163,0x44496e6f,0x00000000,0x00040005,0x00000021, + 0x61636f6c,0x00795f6c,0x00050005,0x00000026,0x6f6c5f61,0x5f6c6163,0x00000078,0x00050005, + 0x0000002c,0x6f6c5f61,0x5f6c6163,0x00000079,0x00050005,0x00000031,0x6f6c5f62,0x5f6c6163, + 0x00000078,0x00050005,0x00000036,0x6f6c5f62,0x5f6c6163,0x00000079,0x00040005,0x0000003b, + 0x66666f61,0x00746573,0x00050005,0x0000003c,0x68737570,0x636f6c42,0x0000006b,0x00040006, + 0x0000003c,0x00000000,0x0000004d,0x00040006,0x0000003c,0x00000001,0x0000004b,0x00040006, + 0x0000003c,0x00000002,0x0000004e,0x00050006,0x0000003c,0x00000003,0x7274534b,0x00007069, + 0x00070006,0x0000003c,0x00000004,0x7274534b,0x65527069,0x6e69616d,0x00000000,0x00030005, + 0x0000003e,0x00000070,0x00040005,0x0000004c,0x66666f62,0x00746573,0x00030005,0x00000056, + 0x0000006e,0x00030005,0x00000064,0x006d7573,0x00030005,0x0000006b,0x00000069,0x00030005, + 0x00000076,0x00000073,0x00040005,0x00000084,0x61687361,0x00006572,0x00040005,0x0000008b, + 0x75706e49,0x00003074,0x00060006,0x0000008b,0x00000000,0x67616d69,0x61645f65,0x00006174, + 0x00030005,0x0000008d,0x00000000,0x00030005,0x0000009f,0x00000073,0x00040005,0x000000aa, + 0x61687362,0x00006572,0x00040005,0x000000b2,0x75706e49,0x00003174,0x00060006,0x000000b2, + 0x00000000,0x67696577,0x645f7468,0x00617461,0x00030005,0x000000b4,0x00000000,0x00030005, + 0x000000c9,0x0000006a,0x00030005,0x000000d1,0x0000006d,0x00040005,0x000000dc,0x41676572, + 0x00000000,0x00030005,0x000000e8,0x0000006d,0x00040005,0x000000f0,0x42676572,0x00000000, + 0x00030005,0x000000fc,0x0000006d,0x00030005,0x00000104,0x0000006e,0x00050005,0x00000128, + 0x66666f61,0x32746573,0x00000000,0x00050005,0x0000012e,0x66666f62,0x32746573,0x00000000, + 0x00030005,0x00000137,0x00000073,0x00030005,0x00000150,0x00000073,0x00030005,0x00000169, + 0x0000006a,0x00030005,0x00000173,0x0000006d,0x00030005,0x00000186,0x0000006d,0x00030005, + 0x00000199,0x0000006d,0x00030005,0x000001a1,0x0000006e,0x00030005,0x000001be,0x0000006e, + 0x00040005,0x000001c6,0x646e496e,0x00327865,0x00030005,0x000001d3,0x0000006d,0x00040005, + 0x000001db,0x646e496d,0x00327865,0x00040005,0x000001e9,0x7074754f,0x00007475,0x00060006, + 0x000001e9,0x00000000,0x4d74756f,0x645f7461,0x00617461,0x00030005,0x000001eb,0x00000000, + 0x00040047,0x0000000c,0x0000000b,0x0000001a,0x00040047,0x0000001b,0x0000000b,0x0000001b, + 0x00050048,0x0000003c,0x00000000,0x00000023,0x00000000,0x00050048,0x0000003c,0x00000001, + 0x00000023,0x00000004,0x00050048,0x0000003c,0x00000002,0x00000023,0x00000008,0x00050048, + 0x0000003c,0x00000003,0x00000023,0x0000000c,0x00050048,0x0000003c,0x00000004,0x00000023, + 0x00000010,0x00030047,0x0000003c,0x00000002,0x00040047,0x0000003e,0x00000022,0x00000000, + 0x00040047,0x0000003e,0x00000021,0x00000003,0x00040047,0x0000008a,0x00000006,0x00000004, + 0x00040048,0x0000008b,0x00000000,0x00000018,0x00050048,0x0000008b,0x00000000,0x00000023, + 0x00000000,0x00030047,0x0000008b,0x00000003,0x00040047,0x0000008d,0x00000022,0x00000000, + 0x00040047,0x0000008d,0x00000021,0x00000000,0x00040047,0x000000b1,0x00000006,0x00000004, + 0x00040048,0x000000b2,0x00000000,0x00000018,0x00050048,0x000000b2,0x00000000,0x00000023, + 0x00000000,0x00030047,0x000000b2,0x00000003,0x00040047,0x000000b4,0x00000022,0x00000000, + 0x00040047,0x000000b4,0x00000021,0x00000001,0x00040047,0x000001e8,0x00000006,0x00000004, + 0x00040048,0x000001e9,0x00000000,0x00000019,0x00050048,0x000001e9,0x00000000,0x00000023, + 0x00000000,0x00030047,0x000001e9,0x00000003,0x00040047,0x000001eb,0x00000022,0x00000000, + 0x00040047,0x000001eb,0x00000021,0x00000002,0x00040047,0x000001fe,0x0000000b,0x00000019, + 0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,0x00040015,0x00000006,0x00000020, + 0x00000001,0x00040020,0x00000007,0x00000007,0x00000006,0x00040015,0x00000009,0x00000020, + 0x00000000,0x00040017,0x0000000a,0x00000009,0x00000003,0x00040020,0x0000000b,0x00000001, + 0x0000000a,0x0004003b,0x0000000b,0x0000000c,0x00000001,0x0004002b,0x00000009,0x0000000d, + 0x00000000,0x00040020,0x0000000e,0x00000001,0x00000009,0x0004002b,0x00000006,0x00000012, + 0x00000040,0x0004002b,0x00000009,0x00000015,0x00000001,0x0004003b,0x0000000b,0x0000001b, + 0x00000001,0x0004002b,0x00000006,0x0000001f,0x00000010,0x0004002b,0x00000006,0x0000002a, + 0x00000020,0x0007001e,0x0000003c,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006, + 0x00040020,0x0000003d,0x00000002,0x0000003c,0x0004003b,0x0000003d,0x0000003e,0x00000002, + 0x0004002b,0x00000006,0x0000003f,0x00000001,0x00040020,0x00000040,0x00000002,0x00000006, + 0x0004002b,0x00000006,0x00000051,0x00000002,0x0004002b,0x00000006,0x00000057,0x00000000, + 0x00020014,0x0000005e,0x00030016,0x00000060,0x00000020,0x0004002b,0x00000009,0x00000061, + 0x00000010,0x0004001c,0x00000062,0x00000060,0x00000061,0x00040020,0x00000063,0x00000007, + 0x00000062,0x0004002b,0x00000060,0x00000066,0x00000000,0x00040020,0x00000067,0x00000007, + 0x00000060,0x0004002b,0x00000006,0x00000072,0x00000003,0x0004002b,0x00000006,0x0000007d, + 0x00000008,0x0004002b,0x00000009,0x0000007f,0x00000040,0x0004001c,0x00000080,0x00000060, + 0x0000007f,0x0004002b,0x00000009,0x00000081,0x00000020,0x0004001c,0x00000082,0x00000080, + 0x00000081,0x00040020,0x00000083,0x00000004,0x00000082,0x0004003b,0x00000083,0x00000084, + 0x00000004,0x0003001d,0x0000008a,0x00000060,0x0003001e,0x0000008b,0x0000008a,0x00040020, + 0x0000008c,0x00000002,0x0000008b,0x0004003b,0x0000008c,0x0000008d,0x00000002,0x00040020, + 0x00000098,0x00000002,0x00000060,0x00040020,0x0000009b,0x00000004,0x00000060,0x0004001c, + 0x000000a7,0x00000060,0x00000081,0x0004001c,0x000000a8,0x000000a7,0x0000007f,0x00040020, + 0x000000a9,0x00000004,0x000000a8,0x0004003b,0x000000a9,0x000000aa,0x00000004,0x0004002b, + 0x00000006,0x000000ad,0x00000004,0x0003001d,0x000000b1,0x00000060,0x0003001e,0x000000b2, + 0x000000b1,0x00040020,0x000000b3,0x00000002,0x000000b2,0x0004003b,0x000000b3,0x000000b4, + 0x00000002,0x0004002b,0x00000009,0x000000c7,0x00000002,0x0004002b,0x00000009,0x000000c8, + 0x00000108,0x0004002b,0x00000009,0x000000d9,0x00000004,0x0004001c,0x000000da,0x00000060, + 0x000000d9,0x00040020,0x000000db,0x00000007,0x000000da,0x0003001d,0x000001e8,0x00000060, + 0x0003001e,0x000001e9,0x000001e8,0x00040020,0x000001ea,0x00000002,0x000001e9,0x0004003b, + 0x000001ea,0x000001eb,0x00000002,0x0004002b,0x00000009,0x000001fd,0x00000100,0x0006002c, + 0x0000000a,0x000001fe,0x000001fd,0x00000015,0x00000015,0x00050036,0x00000002,0x00000004, + 0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000007,0x00000008,0x00000007, + 0x0004003b,0x00000007,0x00000014,0x00000007,0x0004003b,0x00000007,0x0000001a,0x00000007, + 0x0004003b,0x00000007,0x00000021,0x00000007,0x0004003b,0x00000007,0x00000026,0x00000007, + 0x0004003b,0x00000007,0x0000002c,0x00000007,0x0004003b,0x00000007,0x00000031,0x00000007, + 0x0004003b,0x00000007,0x00000036,0x00000007,0x0004003b,0x00000007,0x0000003b,0x00000007, + 0x0004003b,0x00000007,0x0000004c,0x00000007,0x0004003b,0x00000007,0x00000056,0x00000007, + 0x0004003b,0x00000063,0x00000064,0x00000007,0x0004003b,0x00000007,0x0000006b,0x00000007, + 0x0004003b,0x00000007,0x00000076,0x00000007,0x0004003b,0x00000007,0x0000009f,0x00000007, + 0x0004003b,0x00000007,0x000000c9,0x00000007,0x0004003b,0x00000007,0x000000d1,0x00000007, + 0x0004003b,0x000000db,0x000000dc,0x00000007,0x0004003b,0x00000007,0x000000e8,0x00000007, + 0x0004003b,0x000000db,0x000000f0,0x00000007,0x0004003b,0x00000007,0x000000fc,0x00000007, + 0x0004003b,0x00000007,0x00000104,0x00000007,0x0004003b,0x00000007,0x00000128,0x00000007, + 0x0004003b,0x00000007,0x0000012e,0x00000007,0x0004003b,0x00000007,0x00000137,0x00000007, + 0x0004003b,0x00000007,0x00000150,0x00000007,0x0004003b,0x00000007,0x00000169,0x00000007, + 0x0004003b,0x00000007,0x00000173,0x00000007,0x0004003b,0x00000007,0x00000186,0x00000007, + 0x0004003b,0x00000007,0x00000199,0x00000007,0x0004003b,0x00000007,0x000001a1,0x00000007, + 0x0004003b,0x00000007,0x000001be,0x00000007,0x0004003b,0x00000007,0x000001c6,0x00000007, + 0x0004003b,0x00000007,0x000001d3,0x00000007,0x0004003b,0x00000007,0x000001db,0x00000007, + 0x00050041,0x0000000e,0x0000000f,0x0000000c,0x0000000d,0x0004003d,0x00000009,0x00000010, + 0x0000000f,0x0004007c,0x00000006,0x00000011,0x00000010,0x00050084,0x00000006,0x00000013, + 0x00000011,0x00000012,0x0003003e,0x00000008,0x00000013,0x00050041,0x0000000e,0x00000016, + 0x0000000c,0x00000015,0x0004003d,0x00000009,0x00000017,0x00000016,0x0004007c,0x00000006, + 0x00000018,0x00000017,0x00050084,0x00000006,0x00000019,0x00000018,0x00000012,0x0003003e, + 0x00000014,0x00000019,0x00050041,0x0000000e,0x0000001c,0x0000001b,0x0000000d,0x0004003d, + 0x00000009,0x0000001d,0x0000001c,0x0004007c,0x00000006,0x0000001e,0x0000001d,0x0005008b, + 0x00000006,0x00000020,0x0000001e,0x0000001f,0x0003003e,0x0000001a,0x00000020,0x00050041, + 0x0000000e,0x00000022,0x0000001b,0x0000000d,0x0004003d,0x00000009,0x00000023,0x00000022, + 0x0004007c,0x00000006,0x00000024,0x00000023,0x00050087,0x00000006,0x00000025,0x00000024, + 0x0000001f,0x0003003e,0x00000021,0x00000025,0x00050041,0x0000000e,0x00000027,0x0000001b, + 0x0000000d,0x0004003d,0x00000009,0x00000028,0x00000027,0x0004007c,0x00000006,0x00000029, + 0x00000028,0x0005008b,0x00000006,0x0000002b,0x00000029,0x0000002a,0x0003003e,0x00000026, + 0x0000002b,0x00050041,0x0000000e,0x0000002d,0x0000001b,0x0000000d,0x0004003d,0x00000009, + 0x0000002e,0x0000002d,0x0004007c,0x00000006,0x0000002f,0x0000002e,0x00050087,0x00000006, + 0x00000030,0x0000002f,0x0000002a,0x0003003e,0x0000002c,0x00000030,0x00050041,0x0000000e, + 0x00000032,0x0000001b,0x0000000d,0x0004003d,0x00000009,0x00000033,0x00000032,0x0004007c, + 0x00000006,0x00000034,0x00000033,0x0005008b,0x00000006,0x00000035,0x00000034,0x00000012, + 0x0003003e,0x00000031,0x00000035,0x00050041,0x0000000e,0x00000037,0x0000001b,0x0000000d, + 0x0004003d,0x00000009,0x00000038,0x00000037,0x0004007c,0x00000006,0x00000039,0x00000038, + 0x00050087,0x00000006,0x0000003a,0x00000039,0x00000012,0x0003003e,0x00000036,0x0000003a, + 0x00050041,0x00000040,0x00000041,0x0000003e,0x0000003f,0x0004003d,0x00000006,0x00000042, + 0x00000041,0x0004003d,0x00000006,0x00000043,0x00000008,0x00050084,0x00000006,0x00000044, + 0x00000042,0x00000043,0x0004003d,0x00000006,0x00000045,0x0000002c,0x00050041,0x00000040, + 0x00000046,0x0000003e,0x0000003f,0x0004003d,0x00000006,0x00000047,0x00000046,0x00050084, + 0x00000006,0x00000048,0x00000045,0x00000047,0x00050080,0x00000006,0x00000049,0x00000044, + 0x00000048,0x0004003d,0x00000006,0x0000004a,0x00000026,0x00050080,0x00000006,0x0000004b, + 0x00000049,0x0000004a,0x0003003e,0x0000003b,0x0000004b,0x0004003d,0x00000006,0x0000004d, + 0x00000014,0x0004003d,0x00000006,0x0000004e,0x00000031,0x00050080,0x00000006,0x0000004f, + 0x0000004d,0x0000004e,0x0004003d,0x00000006,0x00000050,0x00000036,0x00050041,0x00000040, + 0x00000052,0x0000003e,0x00000051,0x0004003d,0x00000006,0x00000053,0x00000052,0x00050084, + 0x00000006,0x00000054,0x00000050,0x00000053,0x00050080,0x00000006,0x00000055,0x0000004f, + 0x00000054,0x0003003e,0x0000004c,0x00000055,0x0003003e,0x00000056,0x00000057,0x000200f9, + 0x00000058,0x000200f8,0x00000058,0x000400f6,0x0000005a,0x0000005b,0x00000000,0x000200f9, + 0x0000005c,0x000200f8,0x0000005c,0x0004003d,0x00000006,0x0000005d,0x00000056,0x000500b1, + 0x0000005e,0x0000005f,0x0000005d,0x0000001f,0x000400fa,0x0000005f,0x00000059,0x0000005a, + 0x000200f8,0x00000059,0x0004003d,0x00000006,0x00000065,0x00000056,0x00050041,0x00000067, + 0x00000068,0x00000064,0x00000065,0x0003003e,0x00000068,0x00000066,0x000200f9,0x0000005b, + 0x000200f8,0x0000005b,0x0004003d,0x00000006,0x00000069,0x00000056,0x00050080,0x00000006, + 0x0000006a,0x00000069,0x0000003f,0x0003003e,0x00000056,0x0000006a,0x000200f9,0x00000058, + 0x000200f8,0x0000005a,0x0003003e,0x0000006b,0x00000057,0x000200f9,0x0000006c,0x000200f8, + 0x0000006c,0x000400f6,0x0000006e,0x0000006f,0x00000000,0x000200f9,0x00000070,0x000200f8, + 0x00000070,0x0004003d,0x00000006,0x00000071,0x0000006b,0x00050041,0x00000040,0x00000073, + 0x0000003e,0x00000072,0x0004003d,0x00000006,0x00000074,0x00000073,0x000500b1,0x0000005e, + 0x00000075,0x00000071,0x00000074,0x000400fa,0x00000075,0x0000006d,0x0000006e,0x000200f8, + 0x0000006d,0x0003003e,0x00000076,0x00000057,0x000200f9,0x00000077,0x000200f8,0x00000077, + 0x000400f6,0x00000079,0x0000007a,0x00000000,0x000200f9,0x0000007b,0x000200f8,0x0000007b, + 0x0004003d,0x00000006,0x0000007c,0x00000076,0x000500b1,0x0000005e,0x0000007e,0x0000007c, + 0x0000007d,0x000400fa,0x0000007e,0x00000078,0x00000079,0x000200f8,0x00000078,0x0004003d, + 0x00000006,0x00000085,0x00000026,0x0004003d,0x00000006,0x00000086,0x00000076,0x00050084, + 0x00000006,0x00000087,0x00000086,0x0000007d,0x0004003d,0x00000006,0x00000088,0x0000002c, + 0x00050080,0x00000006,0x00000089,0x00000087,0x00000088,0x0004003d,0x00000006,0x0000008e, + 0x0000003b,0x0004003d,0x00000006,0x0000008f,0x00000076,0x00050084,0x00000006,0x00000090, + 0x0000008f,0x0000007d,0x00050041,0x00000040,0x00000091,0x0000003e,0x0000003f,0x0004003d, + 0x00000006,0x00000092,0x00000091,0x00050084,0x00000006,0x00000093,0x00000090,0x00000092, + 0x00050080,0x00000006,0x00000094,0x0000008e,0x00000093,0x0004003d,0x00000006,0x00000095, + 0x0000006b,0x00050084,0x00000006,0x00000096,0x00000095,0x0000002a,0x00050080,0x00000006, + 0x00000097,0x00000094,0x00000096,0x00060041,0x00000098,0x00000099,0x0000008d,0x00000057, + 0x00000097,0x0004003d,0x00000060,0x0000009a,0x00000099,0x00060041,0x0000009b,0x0000009c, + 0x00000084,0x00000085,0x00000089,0x0003003e,0x0000009c,0x0000009a,0x000200f9,0x0000007a, + 0x000200f8,0x0000007a,0x0004003d,0x00000006,0x0000009d,0x00000076,0x00050080,0x00000006, + 0x0000009e,0x0000009d,0x0000003f,0x0003003e,0x00000076,0x0000009e,0x000200f9,0x00000077, + 0x000200f8,0x00000079,0x0003003e,0x0000009f,0x00000057,0x000200f9,0x000000a0,0x000200f8, + 0x000000a0,0x000400f6,0x000000a2,0x000000a3,0x00000000,0x000200f9,0x000000a4,0x000200f8, + 0x000000a4,0x0004003d,0x00000006,0x000000a5,0x0000009f,0x000500b1,0x0000005e,0x000000a6, + 0x000000a5,0x0000007d,0x000400fa,0x000000a6,0x000000a1,0x000000a2,0x000200f8,0x000000a1, + 0x0004003d,0x00000006,0x000000ab,0x00000031,0x0004003d,0x00000006,0x000000ac,0x0000009f, + 0x00050084,0x00000006,0x000000ae,0x000000ac,0x000000ad,0x0004003d,0x00000006,0x000000af, + 0x00000036,0x00050080,0x00000006,0x000000b0,0x000000ae,0x000000af,0x0004003d,0x00000006, + 0x000000b5,0x0000004c,0x0004003d,0x00000006,0x000000b6,0x0000009f,0x00050084,0x00000006, + 0x000000b7,0x000000b6,0x000000ad,0x00050041,0x00000040,0x000000b8,0x0000003e,0x00000051, + 0x0004003d,0x00000006,0x000000b9,0x000000b8,0x00050084,0x00000006,0x000000ba,0x000000b7, + 0x000000b9,0x00050080,0x00000006,0x000000bb,0x000000b5,0x000000ba,0x0004003d,0x00000006, + 0x000000bc,0x0000006b,0x00050084,0x00000006,0x000000bd,0x000000bc,0x0000002a,0x00050041, + 0x00000040,0x000000be,0x0000003e,0x00000051,0x0004003d,0x00000006,0x000000bf,0x000000be, + 0x00050084,0x00000006,0x000000c0,0x000000bd,0x000000bf,0x00050080,0x00000006,0x000000c1, + 0x000000bb,0x000000c0,0x00060041,0x00000098,0x000000c2,0x000000b4,0x00000057,0x000000c1, + 0x0004003d,0x00000060,0x000000c3,0x000000c2,0x00060041,0x0000009b,0x000000c4,0x000000aa, + 0x000000ab,0x000000b0,0x0003003e,0x000000c4,0x000000c3,0x000200f9,0x000000a3,0x000200f8, + 0x000000a3,0x0004003d,0x00000006,0x000000c5,0x0000009f,0x00050080,0x00000006,0x000000c6, + 0x000000c5,0x0000003f,0x0003003e,0x0000009f,0x000000c6,0x000200f9,0x000000a0,0x000200f8, + 0x000000a2,0x000400e0,0x000000c7,0x000000c7,0x000000c8,0x0003003e,0x000000c9,0x00000057, + 0x000200f9,0x000000ca,0x000200f8,0x000000ca,0x000400f6,0x000000cc,0x000000cd,0x00000000, + 0x000200f9,0x000000ce,0x000200f8,0x000000ce,0x0004003d,0x00000006,0x000000cf,0x000000c9, + 0x000500b1,0x0000005e,0x000000d0,0x000000cf,0x0000002a,0x000400fa,0x000000d0,0x000000cb, + 0x000000cc,0x000200f8,0x000000cb,0x0003003e,0x000000d1,0x00000057,0x000200f9,0x000000d2, + 0x000200f8,0x000000d2,0x000400f6,0x000000d4,0x000000d5,0x00000000,0x000200f9,0x000000d6, + 0x000200f8,0x000000d6,0x0004003d,0x00000006,0x000000d7,0x000000d1,0x000500b1,0x0000005e, + 0x000000d8,0x000000d7,0x000000ad,0x000400fa,0x000000d8,0x000000d3,0x000000d4,0x000200f8, + 0x000000d3,0x0004003d,0x00000006,0x000000dd,0x000000d1,0x0004003d,0x00000006,0x000000de, + 0x000000c9,0x0004003d,0x00000006,0x000000df,0x0000001a,0x00050084,0x00000006,0x000000e0, + 0x000000df,0x000000ad,0x0004003d,0x00000006,0x000000e1,0x000000d1,0x00050080,0x00000006, + 0x000000e2,0x000000e0,0x000000e1,0x00060041,0x0000009b,0x000000e3,0x00000084,0x000000de, + 0x000000e2,0x0004003d,0x00000060,0x000000e4,0x000000e3,0x00050041,0x00000067,0x000000e5, + 0x000000dc,0x000000dd,0x0003003e,0x000000e5,0x000000e4,0x000200f9,0x000000d5,0x000200f8, + 0x000000d5,0x0004003d,0x00000006,0x000000e6,0x000000d1,0x00050080,0x00000006,0x000000e7, + 0x000000e6,0x0000003f,0x0003003e,0x000000d1,0x000000e7,0x000200f9,0x000000d2,0x000200f8, + 0x000000d4,0x0003003e,0x000000e8,0x00000057,0x000200f9,0x000000e9,0x000200f8,0x000000e9, + 0x000400f6,0x000000eb,0x000000ec,0x00000000,0x000200f9,0x000000ed,0x000200f8,0x000000ed, + 0x0004003d,0x00000006,0x000000ee,0x000000e8,0x000500b1,0x0000005e,0x000000ef,0x000000ee, + 0x000000ad,0x000400fa,0x000000ef,0x000000ea,0x000000eb,0x000200f8,0x000000ea,0x0004003d, + 0x00000006,0x000000f1,0x000000e8,0x0004003d,0x00000006,0x000000f2,0x00000021,0x0004003d, + 0x00000006,0x000000f3,0x000000e8,0x00050084,0x00000006,0x000000f4,0x0000001f,0x000000f3, + 0x00050080,0x00000006,0x000000f5,0x000000f2,0x000000f4,0x0004003d,0x00000006,0x000000f6, + 0x000000c9,0x00060041,0x0000009b,0x000000f7,0x000000aa,0x000000f5,0x000000f6,0x0004003d, + 0x00000060,0x000000f8,0x000000f7,0x00050041,0x00000067,0x000000f9,0x000000f0,0x000000f1, + 0x0003003e,0x000000f9,0x000000f8,0x000200f9,0x000000ec,0x000200f8,0x000000ec,0x0004003d, + 0x00000006,0x000000fa,0x000000e8,0x00050080,0x00000006,0x000000fb,0x000000fa,0x0000003f, + 0x0003003e,0x000000e8,0x000000fb,0x000200f9,0x000000e9,0x000200f8,0x000000eb,0x0003003e, + 0x000000fc,0x00000057,0x000200f9,0x000000fd,0x000200f8,0x000000fd,0x000400f6,0x000000ff, + 0x00000100,0x00000000,0x000200f9,0x00000101,0x000200f8,0x00000101,0x0004003d,0x00000006, + 0x00000102,0x000000fc,0x000500b1,0x0000005e,0x00000103,0x00000102,0x000000ad,0x000400fa, + 0x00000103,0x000000fe,0x000000ff,0x000200f8,0x000000fe,0x0003003e,0x00000104,0x00000057, + 0x000200f9,0x00000105,0x000200f8,0x00000105,0x000400f6,0x00000107,0x00000108,0x00000000, + 0x000200f9,0x00000109,0x000200f8,0x00000109,0x0004003d,0x00000006,0x0000010a,0x00000104, + 0x000500b1,0x0000005e,0x0000010b,0x0000010a,0x000000ad,0x000400fa,0x0000010b,0x00000106, + 0x00000107,0x000200f8,0x00000106,0x0004003d,0x00000006,0x0000010c,0x000000fc,0x00050084, + 0x00000006,0x0000010d,0x0000010c,0x000000ad,0x0004003d,0x00000006,0x0000010e,0x00000104, + 0x00050080,0x00000006,0x0000010f,0x0000010d,0x0000010e,0x0004003d,0x00000006,0x00000110, + 0x000000fc,0x00050041,0x00000067,0x00000111,0x000000dc,0x00000110,0x0004003d,0x00000060, + 0x00000112,0x00000111,0x0004003d,0x00000006,0x00000113,0x00000104,0x00050041,0x00000067, + 0x00000114,0x000000f0,0x00000113,0x0004003d,0x00000060,0x00000115,0x00000114,0x00050085, + 0x00000060,0x00000116,0x00000112,0x00000115,0x00050041,0x00000067,0x00000117,0x00000064, + 0x0000010f,0x0004003d,0x00000060,0x00000118,0x00000117,0x00050081,0x00000060,0x00000119, + 0x00000118,0x00000116,0x00050041,0x00000067,0x0000011a,0x00000064,0x0000010f,0x0003003e, + 0x0000011a,0x00000119,0x000200f9,0x00000108,0x000200f8,0x00000108,0x0004003d,0x00000006, + 0x0000011b,0x00000104,0x00050080,0x00000006,0x0000011c,0x0000011b,0x0000003f,0x0003003e, + 0x00000104,0x0000011c,0x000200f9,0x00000105,0x000200f8,0x00000107,0x000200f9,0x00000100, + 0x000200f8,0x00000100,0x0004003d,0x00000006,0x0000011d,0x000000fc,0x00050080,0x00000006, + 0x0000011e,0x0000011d,0x0000003f,0x0003003e,0x000000fc,0x0000011e,0x000200f9,0x000000fd, + 0x000200f8,0x000000ff,0x000200f9,0x000000cd,0x000200f8,0x000000cd,0x0004003d,0x00000006, + 0x0000011f,0x000000c9,0x00050080,0x00000006,0x00000120,0x0000011f,0x0000003f,0x0003003e, + 0x000000c9,0x00000120,0x000200f9,0x000000ca,0x000200f8,0x000000cc,0x000400e0,0x000000c7, + 0x000000c7,0x000000c8,0x000200f9,0x0000006f,0x000200f8,0x0000006f,0x0004003d,0x00000006, + 0x00000121,0x0000006b,0x00050080,0x00000006,0x00000122,0x00000121,0x0000003f,0x0003003e, + 0x0000006b,0x00000122,0x000200f9,0x0000006c,0x000200f8,0x0000006e,0x00050041,0x00000040, + 0x00000123,0x0000003e,0x000000ad,0x0004003d,0x00000006,0x00000124,0x00000123,0x000500ad, + 0x0000005e,0x00000125,0x00000124,0x00000057,0x000300f7,0x00000127,0x00000000,0x000400fa, + 0x00000125,0x00000126,0x00000127,0x000200f8,0x00000126,0x0004003d,0x00000006,0x00000129, + 0x0000003b,0x00050041,0x00000040,0x0000012a,0x0000003e,0x00000072,0x0004003d,0x00000006, + 0x0000012b,0x0000012a,0x00050084,0x00000006,0x0000012c,0x0000012b,0x0000002a,0x00050080, + 0x00000006,0x0000012d,0x00000129,0x0000012c,0x0003003e,0x00000128,0x0000012d,0x0004003d, + 0x00000006,0x0000012f,0x0000004c,0x00050041,0x00000040,0x00000130,0x0000003e,0x00000072, + 0x0004003d,0x00000006,0x00000131,0x00000130,0x00050084,0x00000006,0x00000132,0x00000131, + 0x0000002a,0x00050041,0x00000040,0x00000133,0x0000003e,0x00000051,0x0004003d,0x00000006, + 0x00000134,0x00000133,0x00050084,0x00000006,0x00000135,0x00000132,0x00000134,0x00050080, + 0x00000006,0x00000136,0x0000012f,0x00000135,0x0003003e,0x0000012e,0x00000136,0x0003003e, + 0x00000137,0x00000057,0x000200f9,0x00000138,0x000200f8,0x00000138,0x000400f6,0x0000013a, + 0x0000013b,0x00000000,0x000200f9,0x0000013c,0x000200f8,0x0000013c,0x0004003d,0x00000006, + 0x0000013d,0x00000137,0x000500b1,0x0000005e,0x0000013e,0x0000013d,0x0000007d,0x000400fa, + 0x0000013e,0x00000139,0x0000013a,0x000200f8,0x00000139,0x0004003d,0x00000006,0x0000013f, + 0x00000026,0x0004003d,0x00000006,0x00000140,0x00000137,0x00050084,0x00000006,0x00000141, + 0x00000140,0x0000007d,0x0004003d,0x00000006,0x00000142,0x0000002c,0x00050080,0x00000006, + 0x00000143,0x00000141,0x00000142,0x0004003d,0x00000006,0x00000144,0x00000128,0x0004003d, + 0x00000006,0x00000145,0x00000137,0x00050084,0x00000006,0x00000146,0x00000145,0x0000007d, + 0x00050041,0x00000040,0x00000147,0x0000003e,0x0000003f,0x0004003d,0x00000006,0x00000148, + 0x00000147,0x00050084,0x00000006,0x00000149,0x00000146,0x00000148,0x00050080,0x00000006, + 0x0000014a,0x00000144,0x00000149,0x00060041,0x00000098,0x0000014b,0x0000008d,0x00000057, + 0x0000014a,0x0004003d,0x00000060,0x0000014c,0x0000014b,0x00060041,0x0000009b,0x0000014d, + 0x00000084,0x0000013f,0x00000143,0x0003003e,0x0000014d,0x0000014c,0x000200f9,0x0000013b, + 0x000200f8,0x0000013b,0x0004003d,0x00000006,0x0000014e,0x00000137,0x00050080,0x00000006, + 0x0000014f,0x0000014e,0x0000003f,0x0003003e,0x00000137,0x0000014f,0x000200f9,0x00000138, + 0x000200f8,0x0000013a,0x0003003e,0x00000150,0x00000057,0x000200f9,0x00000151,0x000200f8, + 0x00000151,0x000400f6,0x00000153,0x00000154,0x00000000,0x000200f9,0x00000155,0x000200f8, + 0x00000155,0x0004003d,0x00000006,0x00000156,0x00000150,0x000500b1,0x0000005e,0x00000157, + 0x00000156,0x0000007d,0x000400fa,0x00000157,0x00000152,0x00000153,0x000200f8,0x00000152, + 0x0004003d,0x00000006,0x00000158,0x00000031,0x0004003d,0x00000006,0x00000159,0x00000150, + 0x00050084,0x00000006,0x0000015a,0x00000159,0x000000ad,0x0004003d,0x00000006,0x0000015b, + 0x00000036,0x00050080,0x00000006,0x0000015c,0x0000015a,0x0000015b,0x0004003d,0x00000006, + 0x0000015d,0x0000012e,0x0004003d,0x00000006,0x0000015e,0x00000150,0x00050084,0x00000006, + 0x0000015f,0x0000015e,0x000000ad,0x00050041,0x00000040,0x00000160,0x0000003e,0x00000051, + 0x0004003d,0x00000006,0x00000161,0x00000160,0x00050084,0x00000006,0x00000162,0x0000015f, + 0x00000161,0x00050080,0x00000006,0x00000163,0x0000015d,0x00000162,0x00060041,0x00000098, + 0x00000164,0x000000b4,0x00000057,0x00000163,0x0004003d,0x00000060,0x00000165,0x00000164, + 0x00060041,0x0000009b,0x00000166,0x000000aa,0x00000158,0x0000015c,0x0003003e,0x00000166, + 0x00000165,0x000200f9,0x00000154,0x000200f8,0x00000154,0x0004003d,0x00000006,0x00000167, + 0x00000150,0x00050080,0x00000006,0x00000168,0x00000167,0x0000003f,0x0003003e,0x00000150, + 0x00000168,0x000200f9,0x00000151,0x000200f8,0x00000153,0x000400e0,0x000000c7,0x000000c7, + 0x000000c8,0x0003003e,0x00000169,0x00000057,0x000200f9,0x0000016a,0x000200f8,0x0000016a, + 0x000400f6,0x0000016c,0x0000016d,0x00000000,0x000200f9,0x0000016e,0x000200f8,0x0000016e, + 0x0004003d,0x00000006,0x0000016f,0x00000169,0x00050041,0x00000040,0x00000170,0x0000003e, + 0x000000ad,0x0004003d,0x00000006,0x00000171,0x00000170,0x000500b1,0x0000005e,0x00000172, + 0x0000016f,0x00000171,0x000400fa,0x00000172,0x0000016b,0x0000016c,0x000200f8,0x0000016b, + 0x0003003e,0x00000173,0x00000057,0x000200f9,0x00000174,0x000200f8,0x00000174,0x000400f6, + 0x00000176,0x00000177,0x00000000,0x000200f9,0x00000178,0x000200f8,0x00000178,0x0004003d, + 0x00000006,0x00000179,0x00000173,0x000500b1,0x0000005e,0x0000017a,0x00000179,0x000000ad, + 0x000400fa,0x0000017a,0x00000175,0x00000176,0x000200f8,0x00000175,0x0004003d,0x00000006, + 0x0000017b,0x00000173,0x0004003d,0x00000006,0x0000017c,0x00000169,0x0004003d,0x00000006, + 0x0000017d,0x0000001a,0x00050084,0x00000006,0x0000017e,0x0000017d,0x000000ad,0x0004003d, + 0x00000006,0x0000017f,0x00000173,0x00050080,0x00000006,0x00000180,0x0000017e,0x0000017f, + 0x00060041,0x0000009b,0x00000181,0x00000084,0x0000017c,0x00000180,0x0004003d,0x00000060, + 0x00000182,0x00000181,0x00050041,0x00000067,0x00000183,0x000000dc,0x0000017b,0x0003003e, + 0x00000183,0x00000182,0x000200f9,0x00000177,0x000200f8,0x00000177,0x0004003d,0x00000006, + 0x00000184,0x00000173,0x00050080,0x00000006,0x00000185,0x00000184,0x0000003f,0x0003003e, + 0x00000173,0x00000185,0x000200f9,0x00000174,0x000200f8,0x00000176,0x0003003e,0x00000186, + 0x00000057,0x000200f9,0x00000187,0x000200f8,0x00000187,0x000400f6,0x00000189,0x0000018a, + 0x00000000,0x000200f9,0x0000018b,0x000200f8,0x0000018b,0x0004003d,0x00000006,0x0000018c, + 0x00000186,0x000500b1,0x0000005e,0x0000018d,0x0000018c,0x000000ad,0x000400fa,0x0000018d, + 0x00000188,0x00000189,0x000200f8,0x00000188,0x0004003d,0x00000006,0x0000018e,0x00000186, + 0x0004003d,0x00000006,0x0000018f,0x00000021,0x0004003d,0x00000006,0x00000190,0x00000186, + 0x00050084,0x00000006,0x00000191,0x0000001f,0x00000190,0x00050080,0x00000006,0x00000192, + 0x0000018f,0x00000191,0x0004003d,0x00000006,0x00000193,0x00000169,0x00060041,0x0000009b, + 0x00000194,0x000000aa,0x00000192,0x00000193,0x0004003d,0x00000060,0x00000195,0x00000194, + 0x00050041,0x00000067,0x00000196,0x000000f0,0x0000018e,0x0003003e,0x00000196,0x00000195, + 0x000200f9,0x0000018a,0x000200f8,0x0000018a,0x0004003d,0x00000006,0x00000197,0x00000186, + 0x00050080,0x00000006,0x00000198,0x00000197,0x0000003f,0x0003003e,0x00000186,0x00000198, + 0x000200f9,0x00000187,0x000200f8,0x00000189,0x0003003e,0x00000199,0x00000057,0x000200f9, + 0x0000019a,0x000200f8,0x0000019a,0x000400f6,0x0000019c,0x0000019d,0x00000000,0x000200f9, + 0x0000019e,0x000200f8,0x0000019e,0x0004003d,0x00000006,0x0000019f,0x00000199,0x000500b1, + 0x0000005e,0x000001a0,0x0000019f,0x000000ad,0x000400fa,0x000001a0,0x0000019b,0x0000019c, + 0x000200f8,0x0000019b,0x0003003e,0x000001a1,0x00000057,0x000200f9,0x000001a2,0x000200f8, + 0x000001a2,0x000400f6,0x000001a4,0x000001a5,0x00000000,0x000200f9,0x000001a6,0x000200f8, + 0x000001a6,0x0004003d,0x00000006,0x000001a7,0x000001a1,0x000500b1,0x0000005e,0x000001a8, + 0x000001a7,0x000000ad,0x000400fa,0x000001a8,0x000001a3,0x000001a4,0x000200f8,0x000001a3, + 0x0004003d,0x00000006,0x000001a9,0x00000199,0x00050084,0x00000006,0x000001aa,0x000001a9, + 0x000000ad,0x0004003d,0x00000006,0x000001ab,0x000001a1,0x00050080,0x00000006,0x000001ac, + 0x000001aa,0x000001ab,0x0004003d,0x00000006,0x000001ad,0x00000199,0x00050041,0x00000067, + 0x000001ae,0x000000dc,0x000001ad,0x0004003d,0x00000060,0x000001af,0x000001ae,0x0004003d, + 0x00000006,0x000001b0,0x000001a1,0x00050041,0x00000067,0x000001b1,0x000000f0,0x000001b0, + 0x0004003d,0x00000060,0x000001b2,0x000001b1,0x00050085,0x00000060,0x000001b3,0x000001af, + 0x000001b2,0x00050041,0x00000067,0x000001b4,0x00000064,0x000001ac,0x0004003d,0x00000060, + 0x000001b5,0x000001b4,0x00050081,0x00000060,0x000001b6,0x000001b5,0x000001b3,0x00050041, + 0x00000067,0x000001b7,0x00000064,0x000001ac,0x0003003e,0x000001b7,0x000001b6,0x000200f9, + 0x000001a5,0x000200f8,0x000001a5,0x0004003d,0x00000006,0x000001b8,0x000001a1,0x00050080, + 0x00000006,0x000001b9,0x000001b8,0x0000003f,0x0003003e,0x000001a1,0x000001b9,0x000200f9, + 0x000001a2,0x000200f8,0x000001a4,0x000200f9,0x0000019d,0x000200f8,0x0000019d,0x0004003d, + 0x00000006,0x000001ba,0x00000199,0x00050080,0x00000006,0x000001bb,0x000001ba,0x0000003f, + 0x0003003e,0x00000199,0x000001bb,0x000200f9,0x0000019a,0x000200f8,0x0000019c,0x000200f9, + 0x0000016d,0x000200f8,0x0000016d,0x0004003d,0x00000006,0x000001bc,0x00000169,0x00050080, + 0x00000006,0x000001bd,0x000001bc,0x0000003f,0x0003003e,0x00000169,0x000001bd,0x000200f9, + 0x0000016a,0x000200f8,0x0000016c,0x000200f9,0x00000127,0x000200f8,0x00000127,0x0003003e, + 0x000001be,0x00000057,0x000200f9,0x000001bf,0x000200f8,0x000001bf,0x000400f6,0x000001c1, + 0x000001c2,0x00000000,0x000200f9,0x000001c3,0x000200f8,0x000001c3,0x0004003d,0x00000006, + 0x000001c4,0x000001be,0x000500b1,0x0000005e,0x000001c5,0x000001c4,0x000000ad,0x000400fa, + 0x000001c5,0x000001c0,0x000001c1,0x000200f8,0x000001c0,0x0004003d,0x00000006,0x000001c7, + 0x00000014,0x0004003d,0x00000006,0x000001c8,0x000001be,0x00050084,0x00000006,0x000001c9, + 0x000001c8,0x0000001f,0x00050080,0x00000006,0x000001ca,0x000001c7,0x000001c9,0x0004003d, + 0x00000006,0x000001cb,0x00000021,0x00050080,0x00000006,0x000001cc,0x000001ca,0x000001cb, + 0x0003003e,0x000001c6,0x000001cc,0x0004003d,0x00000006,0x000001cd,0x000001c6,0x00050041, + 0x00000040,0x000001ce,0x0000003e,0x00000051,0x0004003d,0x00000006,0x000001cf,0x000001ce, + 0x000500b1,0x0000005e,0x000001d0,0x000001cd,0x000001cf,0x000300f7,0x000001d2,0x00000000, + 0x000400fa,0x000001d0,0x000001d1,0x000001d2,0x000200f8,0x000001d1,0x0003003e,0x000001d3, + 0x00000057,0x000200f9,0x000001d4,0x000200f8,0x000001d4,0x000400f6,0x000001d6,0x000001d7, + 0x00000000,0x000200f9,0x000001d8,0x000200f8,0x000001d8,0x0004003d,0x00000006,0x000001d9, + 0x000001d3,0x000500b1,0x0000005e,0x000001da,0x000001d9,0x000000ad,0x000400fa,0x000001da, + 0x000001d5,0x000001d6,0x000200f8,0x000001d5,0x0004003d,0x00000006,0x000001dc,0x00000008, + 0x0004003d,0x00000006,0x000001dd,0x0000001a,0x00050084,0x00000006,0x000001de,0x000001dd, + 0x000000ad,0x00050080,0x00000006,0x000001df,0x000001dc,0x000001de,0x0004003d,0x00000006, + 0x000001e0,0x000001d3,0x00050080,0x00000006,0x000001e1,0x000001df,0x000001e0,0x0003003e, + 0x000001db,0x000001e1,0x0004003d,0x00000006,0x000001e2,0x000001db,0x00050041,0x00000040, + 0x000001e3,0x0000003e,0x00000057,0x0004003d,0x00000006,0x000001e4,0x000001e3,0x000500b1, + 0x0000005e,0x000001e5,0x000001e2,0x000001e4,0x000300f7,0x000001e7,0x00000000,0x000400fa, + 0x000001e5,0x000001e6,0x000001e7,0x000200f8,0x000001e6,0x0004003d,0x00000006,0x000001ec, + 0x000001db,0x00050041,0x00000040,0x000001ed,0x0000003e,0x00000051,0x0004003d,0x00000006, + 0x000001ee,0x000001ed,0x00050084,0x00000006,0x000001ef,0x000001ec,0x000001ee,0x0004003d, + 0x00000006,0x000001f0,0x000001c6,0x00050080,0x00000006,0x000001f1,0x000001ef,0x000001f0, + 0x0004003d,0x00000006,0x000001f2,0x000001d3,0x00050084,0x00000006,0x000001f3,0x000001f2, + 0x000000ad,0x0004003d,0x00000006,0x000001f4,0x000001be,0x00050080,0x00000006,0x000001f5, + 0x000001f3,0x000001f4,0x00050041,0x00000067,0x000001f6,0x00000064,0x000001f5,0x0004003d, + 0x00000060,0x000001f7,0x000001f6,0x00060041,0x00000098,0x000001f8,0x000001eb,0x00000057, + 0x000001f1,0x0003003e,0x000001f8,0x000001f7,0x000200f9,0x000001e7,0x000200f8,0x000001e7, + 0x000200f9,0x000001d7,0x000200f8,0x000001d7,0x0004003d,0x00000006,0x000001f9,0x000001d3, + 0x00050080,0x00000006,0x000001fa,0x000001f9,0x0000003f,0x0003003e,0x000001d3,0x000001fa, + 0x000200f9,0x000001d4,0x000200f8,0x000001d6,0x000200f9,0x000001d2,0x000200f8,0x000001d2, + 0x000200f9,0x000001c2,0x000200f8,0x000001c2,0x0004003d,0x00000006,0x000001fb,0x000001be, + 0x00050080,0x00000006,0x000001fc,0x000001fb,0x0000003f,0x0003003e,0x000001be,0x000001fc, + 0x000200f9,0x000001bf,0x000200f8,0x000001c1,0x000100fd,0x00010038 +}; + +}}} // namespace cv::dnn::vkcom diff --git a/modules/dnn/src/vkcom/shader/lrn.comp b/modules/dnn/src/vkcom/shader/lrn.comp deleted file mode 100644 index ac8edadf1d..0000000000 --- a/modules/dnn/src/vkcom/shader/lrn.comp +++ /dev/null @@ -1,63 +0,0 @@ -#version 450 -#define LOCAL_SZ_X 256 -layout(push_constant) uniform pushBlock { - int thread_num; - int channels; - int height; - int width; - int filter_len; - int radius; - float alpha; - float bias; - float negative_beta; -} p; - -layout(binding = 0) readonly buffer Input0{ - float in_buffer[]; -}; -layout(binding = 1) writeonly buffer Output{ - float dst_buffer[]; -}; -layout(local_size_x = LOCAL_SZ_X, local_size_y = 1, local_size_z = 1) in; -void main() -{ - int gid = int(gl_GlobalInvocationID.x); - int gsz = int(gl_NumWorkGroups.x * gl_WorkGroupSize.x); - for (int index = gid; index < p.thread_num; index += gsz) - { - int x = index % p.width; - int y = (index / p.width) % p.height; - int b = index / (p.width * p.height); - int offset = b * p.channels * p.height * p.width + y * p.width + x; - int channel_off = p.height * p.width; - float scale_val; - int head = 0; - float accum_scale = 0.0f; - int min_val = p.radius < p.channels ? p.radius : p.channels; - while (head < min_val) { - accum_scale += in_buffer[offset + head * channel_off] * in_buffer[offset + head * channel_off]; - ++head; - } - while (head < p.channels) { - accum_scale += in_buffer[offset + head * channel_off] * in_buffer[offset + head * channel_off]; - if (head - p.filter_len >= 0) { - accum_scale -= in_buffer[offset + (head - p.filter_len) * channel_off] - * in_buffer[offset + (head - p.filter_len) * channel_off]; - } - scale_val = p.bias + accum_scale * p.alpha; - dst_buffer[offset + (head - p.radius) * channel_off] = in_buffer[offset + (head - p.radius) * channel_off] * pow(scale_val, p.negative_beta); - ++head; - } - int pos = head - min_val; - while (pos >= 0 && pos < p.channels) { - if (head - p.filter_len >= 0) { - accum_scale -= in_buffer[offset + (head - p.filter_len) * channel_off] - * in_buffer[offset + (head - p.filter_len) * channel_off]; - } - scale_val = p.bias + accum_scale * p.alpha; - dst_buffer[offset + pos * channel_off] = in_buffer[offset + pos * channel_off] * pow(scale_val, p.negative_beta); - ++head; - ++pos; - } - } -} diff --git a/modules/dnn/src/vkcom/shader/lrn_spv.cpp b/modules/dnn/src/vkcom/shader/lrn_spv.cpp deleted file mode 100644 index 06159d05bb..0000000000 --- a/modules/dnn/src/vkcom/shader/lrn_spv.cpp +++ /dev/null @@ -1,246 +0,0 @@ -// This file is part of OpenCV project. -// It is subject to the license terms in the LICENSE file found in the top-level directory -// of this distribution and at http://opencv.org/license.html. -// -// Copyright (C) 2018, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. - -#include "../../precomp.hpp" - -namespace cv { namespace dnn { namespace vkcom { - -extern const unsigned int lrn_spv[1845] = { - 0x07230203,0x00010000,0x00080001,0x00000144,0x00000000,0x00020011,0x00000001,0x0006000b, - 0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001, - 0x0007000f,0x00000005,0x00000004,0x6e69616d,0x00000000,0x0000000c,0x00000013,0x00060010, - 0x00000004,0x00000011,0x00000100,0x00000001,0x00000001,0x00030003,0x00000002,0x000001c2, - 0x00040005,0x00000004,0x6e69616d,0x00000000,0x00030005,0x00000008,0x00646967,0x00080005, - 0x0000000c,0x475f6c67,0x61626f6c,0x766e496c,0x7461636f,0x496e6f69,0x00000044,0x00030005, - 0x00000012,0x007a7367,0x00070005,0x00000013,0x4e5f6c67,0x6f576d75,0x72476b72,0x7370756f, - 0x00000000,0x00040005,0x00000019,0x65646e69,0x00000078,0x00050005,0x00000022,0x68737570, - 0x636f6c42,0x0000006b,0x00060006,0x00000022,0x00000000,0x65726874,0x6e5f6461,0x00006d75, - 0x00060006,0x00000022,0x00000001,0x6e616863,0x736c656e,0x00000000,0x00050006,0x00000022, - 0x00000002,0x67696568,0x00007468,0x00050006,0x00000022,0x00000003,0x74646977,0x00000068, - 0x00060006,0x00000022,0x00000004,0x746c6966,0x6c5f7265,0x00006e65,0x00050006,0x00000022, - 0x00000005,0x69646172,0x00007375,0x00050006,0x00000022,0x00000006,0x68706c61,0x00000061, - 0x00050006,0x00000022,0x00000007,0x73616962,0x00000000,0x00070006,0x00000022,0x00000008, - 0x6167656e,0x65766974,0x7465625f,0x00000061,0x00030005,0x00000024,0x00000070,0x00030005, - 0x0000002b,0x00000078,0x00030005,0x00000031,0x00000079,0x00030005,0x0000003a,0x00000062, - 0x00040005,0x00000042,0x7366666f,0x00007465,0x00050005,0x00000055,0x6e616863,0x5f6c656e, - 0x0066666f,0x00040005,0x0000005b,0x64616568,0x00000000,0x00050005,0x0000005d,0x75636361, - 0x63735f6d,0x00656c61,0x00040005,0x0000005f,0x5f6e696d,0x006c6176,0x00040005,0x00000078, - 0x75706e49,0x00003074,0x00060006,0x00000078,0x00000000,0x625f6e69,0x65666675,0x00000072, - 0x00030005,0x0000007a,0x00000000,0x00050005,0x000000c8,0x6c616373,0x61765f65,0x0000006c, - 0x00040005,0x000000d4,0x7074754f,0x00007475,0x00060006,0x000000d4,0x00000000,0x5f747364, - 0x66667562,0x00007265,0x00030005,0x000000d6,0x00000000,0x00030005,0x000000f2,0x00736f70, - 0x00040047,0x0000000c,0x0000000b,0x0000001c,0x00040047,0x00000013,0x0000000b,0x00000018, - 0x00050048,0x00000022,0x00000000,0x00000023,0x00000000,0x00050048,0x00000022,0x00000001, - 0x00000023,0x00000004,0x00050048,0x00000022,0x00000002,0x00000023,0x00000008,0x00050048, - 0x00000022,0x00000003,0x00000023,0x0000000c,0x00050048,0x00000022,0x00000004,0x00000023, - 0x00000010,0x00050048,0x00000022,0x00000005,0x00000023,0x00000014,0x00050048,0x00000022, - 0x00000006,0x00000023,0x00000018,0x00050048,0x00000022,0x00000007,0x00000023,0x0000001c, - 0x00050048,0x00000022,0x00000008,0x00000023,0x00000020,0x00030047,0x00000022,0x00000002, - 0x00040047,0x00000077,0x00000006,0x00000004,0x00040048,0x00000078,0x00000000,0x00000018, - 0x00050048,0x00000078,0x00000000,0x00000023,0x00000000,0x00030047,0x00000078,0x00000003, - 0x00040047,0x0000007a,0x00000022,0x00000000,0x00040047,0x0000007a,0x00000021,0x00000000, - 0x00040047,0x000000d3,0x00000006,0x00000004,0x00040048,0x000000d4,0x00000000,0x00000019, - 0x00050048,0x000000d4,0x00000000,0x00000023,0x00000000,0x00030047,0x000000d4,0x00000003, - 0x00040047,0x000000d6,0x00000022,0x00000000,0x00040047,0x000000d6,0x00000021,0x00000001, - 0x00040047,0x00000143,0x0000000b,0x00000019,0x00020013,0x00000002,0x00030021,0x00000003, - 0x00000002,0x00040015,0x00000006,0x00000020,0x00000001,0x00040020,0x00000007,0x00000007, - 0x00000006,0x00040015,0x00000009,0x00000020,0x00000000,0x00040017,0x0000000a,0x00000009, - 0x00000003,0x00040020,0x0000000b,0x00000001,0x0000000a,0x0004003b,0x0000000b,0x0000000c, - 0x00000001,0x0004002b,0x00000009,0x0000000d,0x00000000,0x00040020,0x0000000e,0x00000001, - 0x00000009,0x0004003b,0x0000000b,0x00000013,0x00000001,0x0004002b,0x00000009,0x00000016, - 0x00000100,0x00030016,0x00000021,0x00000020,0x000b001e,0x00000022,0x00000006,0x00000006, - 0x00000006,0x00000006,0x00000006,0x00000006,0x00000021,0x00000021,0x00000021,0x00040020, - 0x00000023,0x00000009,0x00000022,0x0004003b,0x00000023,0x00000024,0x00000009,0x0004002b, - 0x00000006,0x00000025,0x00000000,0x00040020,0x00000026,0x00000009,0x00000006,0x00020014, - 0x00000029,0x0004002b,0x00000006,0x0000002d,0x00000003,0x0004002b,0x00000006,0x00000036, - 0x00000002,0x0004002b,0x00000006,0x00000044,0x00000001,0x00040020,0x0000005c,0x00000007, - 0x00000021,0x0004002b,0x00000021,0x0000005e,0x00000000,0x0004002b,0x00000006,0x00000061, - 0x00000005,0x0003001d,0x00000077,0x00000021,0x0003001e,0x00000078,0x00000077,0x00040020, - 0x00000079,0x00000002,0x00000078,0x0004003b,0x00000079,0x0000007a,0x00000002,0x00040020, - 0x00000080,0x00000002,0x00000021,0x0004002b,0x00000006,0x000000aa,0x00000004,0x0004002b, - 0x00000006,0x000000c9,0x00000007,0x00040020,0x000000ca,0x00000009,0x00000021,0x0004002b, - 0x00000006,0x000000ce,0x00000006,0x0003001d,0x000000d3,0x00000021,0x0003001e,0x000000d4, - 0x000000d3,0x00040020,0x000000d5,0x00000002,0x000000d4,0x0004003b,0x000000d5,0x000000d6, - 0x00000002,0x0004002b,0x00000006,0x000000ea,0x00000008,0x0004002b,0x00000009,0x00000142, - 0x00000001,0x0006002c,0x0000000a,0x00000143,0x00000016,0x00000142,0x00000142,0x00050036, - 0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000007, - 0x00000008,0x00000007,0x0004003b,0x00000007,0x00000012,0x00000007,0x0004003b,0x00000007, - 0x00000019,0x00000007,0x0004003b,0x00000007,0x0000002b,0x00000007,0x0004003b,0x00000007, - 0x00000031,0x00000007,0x0004003b,0x00000007,0x0000003a,0x00000007,0x0004003b,0x00000007, - 0x00000042,0x00000007,0x0004003b,0x00000007,0x00000055,0x00000007,0x0004003b,0x00000007, - 0x0000005b,0x00000007,0x0004003b,0x0000005c,0x0000005d,0x00000007,0x0004003b,0x00000007, - 0x0000005f,0x00000007,0x0004003b,0x00000007,0x00000060,0x00000007,0x0004003b,0x0000005c, - 0x000000c8,0x00000007,0x0004003b,0x00000007,0x000000f2,0x00000007,0x00050041,0x0000000e, - 0x0000000f,0x0000000c,0x0000000d,0x0004003d,0x00000009,0x00000010,0x0000000f,0x0004007c, - 0x00000006,0x00000011,0x00000010,0x0003003e,0x00000008,0x00000011,0x00050041,0x0000000e, - 0x00000014,0x00000013,0x0000000d,0x0004003d,0x00000009,0x00000015,0x00000014,0x00050084, - 0x00000009,0x00000017,0x00000015,0x00000016,0x0004007c,0x00000006,0x00000018,0x00000017, - 0x0003003e,0x00000012,0x00000018,0x0004003d,0x00000006,0x0000001a,0x00000008,0x0003003e, - 0x00000019,0x0000001a,0x000200f9,0x0000001b,0x000200f8,0x0000001b,0x000400f6,0x0000001d, - 0x0000001e,0x00000000,0x000200f9,0x0000001f,0x000200f8,0x0000001f,0x0004003d,0x00000006, - 0x00000020,0x00000019,0x00050041,0x00000026,0x00000027,0x00000024,0x00000025,0x0004003d, - 0x00000006,0x00000028,0x00000027,0x000500b1,0x00000029,0x0000002a,0x00000020,0x00000028, - 0x000400fa,0x0000002a,0x0000001c,0x0000001d,0x000200f8,0x0000001c,0x0004003d,0x00000006, - 0x0000002c,0x00000019,0x00050041,0x00000026,0x0000002e,0x00000024,0x0000002d,0x0004003d, - 0x00000006,0x0000002f,0x0000002e,0x0005008b,0x00000006,0x00000030,0x0000002c,0x0000002f, - 0x0003003e,0x0000002b,0x00000030,0x0004003d,0x00000006,0x00000032,0x00000019,0x00050041, - 0x00000026,0x00000033,0x00000024,0x0000002d,0x0004003d,0x00000006,0x00000034,0x00000033, - 0x00050087,0x00000006,0x00000035,0x00000032,0x00000034,0x00050041,0x00000026,0x00000037, - 0x00000024,0x00000036,0x0004003d,0x00000006,0x00000038,0x00000037,0x0005008b,0x00000006, - 0x00000039,0x00000035,0x00000038,0x0003003e,0x00000031,0x00000039,0x0004003d,0x00000006, - 0x0000003b,0x00000019,0x00050041,0x00000026,0x0000003c,0x00000024,0x0000002d,0x0004003d, - 0x00000006,0x0000003d,0x0000003c,0x00050041,0x00000026,0x0000003e,0x00000024,0x00000036, - 0x0004003d,0x00000006,0x0000003f,0x0000003e,0x00050084,0x00000006,0x00000040,0x0000003d, - 0x0000003f,0x00050087,0x00000006,0x00000041,0x0000003b,0x00000040,0x0003003e,0x0000003a, - 0x00000041,0x0004003d,0x00000006,0x00000043,0x0000003a,0x00050041,0x00000026,0x00000045, - 0x00000024,0x00000044,0x0004003d,0x00000006,0x00000046,0x00000045,0x00050084,0x00000006, - 0x00000047,0x00000043,0x00000046,0x00050041,0x00000026,0x00000048,0x00000024,0x00000036, - 0x0004003d,0x00000006,0x00000049,0x00000048,0x00050084,0x00000006,0x0000004a,0x00000047, - 0x00000049,0x00050041,0x00000026,0x0000004b,0x00000024,0x0000002d,0x0004003d,0x00000006, - 0x0000004c,0x0000004b,0x00050084,0x00000006,0x0000004d,0x0000004a,0x0000004c,0x0004003d, - 0x00000006,0x0000004e,0x00000031,0x00050041,0x00000026,0x0000004f,0x00000024,0x0000002d, - 0x0004003d,0x00000006,0x00000050,0x0000004f,0x00050084,0x00000006,0x00000051,0x0000004e, - 0x00000050,0x00050080,0x00000006,0x00000052,0x0000004d,0x00000051,0x0004003d,0x00000006, - 0x00000053,0x0000002b,0x00050080,0x00000006,0x00000054,0x00000052,0x00000053,0x0003003e, - 0x00000042,0x00000054,0x00050041,0x00000026,0x00000056,0x00000024,0x00000036,0x0004003d, - 0x00000006,0x00000057,0x00000056,0x00050041,0x00000026,0x00000058,0x00000024,0x0000002d, - 0x0004003d,0x00000006,0x00000059,0x00000058,0x00050084,0x00000006,0x0000005a,0x00000057, - 0x00000059,0x0003003e,0x00000055,0x0000005a,0x0003003e,0x0000005b,0x00000025,0x0003003e, - 0x0000005d,0x0000005e,0x00050041,0x00000026,0x00000062,0x00000024,0x00000061,0x0004003d, - 0x00000006,0x00000063,0x00000062,0x00050041,0x00000026,0x00000064,0x00000024,0x00000044, - 0x0004003d,0x00000006,0x00000065,0x00000064,0x000500b1,0x00000029,0x00000066,0x00000063, - 0x00000065,0x000300f7,0x00000068,0x00000000,0x000400fa,0x00000066,0x00000067,0x0000006b, - 0x000200f8,0x00000067,0x00050041,0x00000026,0x00000069,0x00000024,0x00000061,0x0004003d, - 0x00000006,0x0000006a,0x00000069,0x0003003e,0x00000060,0x0000006a,0x000200f9,0x00000068, - 0x000200f8,0x0000006b,0x00050041,0x00000026,0x0000006c,0x00000024,0x00000044,0x0004003d, - 0x00000006,0x0000006d,0x0000006c,0x0003003e,0x00000060,0x0000006d,0x000200f9,0x00000068, - 0x000200f8,0x00000068,0x0004003d,0x00000006,0x0000006e,0x00000060,0x0003003e,0x0000005f, - 0x0000006e,0x000200f9,0x0000006f,0x000200f8,0x0000006f,0x000400f6,0x00000071,0x00000072, - 0x00000000,0x000200f9,0x00000073,0x000200f8,0x00000073,0x0004003d,0x00000006,0x00000074, - 0x0000005b,0x0004003d,0x00000006,0x00000075,0x0000005f,0x000500b1,0x00000029,0x00000076, - 0x00000074,0x00000075,0x000400fa,0x00000076,0x00000070,0x00000071,0x000200f8,0x00000070, - 0x0004003d,0x00000006,0x0000007b,0x00000042,0x0004003d,0x00000006,0x0000007c,0x0000005b, - 0x0004003d,0x00000006,0x0000007d,0x00000055,0x00050084,0x00000006,0x0000007e,0x0000007c, - 0x0000007d,0x00050080,0x00000006,0x0000007f,0x0000007b,0x0000007e,0x00060041,0x00000080, - 0x00000081,0x0000007a,0x00000025,0x0000007f,0x0004003d,0x00000021,0x00000082,0x00000081, - 0x0004003d,0x00000006,0x00000083,0x00000042,0x0004003d,0x00000006,0x00000084,0x0000005b, - 0x0004003d,0x00000006,0x00000085,0x00000055,0x00050084,0x00000006,0x00000086,0x00000084, - 0x00000085,0x00050080,0x00000006,0x00000087,0x00000083,0x00000086,0x00060041,0x00000080, - 0x00000088,0x0000007a,0x00000025,0x00000087,0x0004003d,0x00000021,0x00000089,0x00000088, - 0x00050085,0x00000021,0x0000008a,0x00000082,0x00000089,0x0004003d,0x00000021,0x0000008b, - 0x0000005d,0x00050081,0x00000021,0x0000008c,0x0000008b,0x0000008a,0x0003003e,0x0000005d, - 0x0000008c,0x0004003d,0x00000006,0x0000008d,0x0000005b,0x00050080,0x00000006,0x0000008e, - 0x0000008d,0x00000044,0x0003003e,0x0000005b,0x0000008e,0x000200f9,0x00000072,0x000200f8, - 0x00000072,0x000200f9,0x0000006f,0x000200f8,0x00000071,0x000200f9,0x0000008f,0x000200f8, - 0x0000008f,0x000400f6,0x00000091,0x00000092,0x00000000,0x000200f9,0x00000093,0x000200f8, - 0x00000093,0x0004003d,0x00000006,0x00000094,0x0000005b,0x00050041,0x00000026,0x00000095, - 0x00000024,0x00000044,0x0004003d,0x00000006,0x00000096,0x00000095,0x000500b1,0x00000029, - 0x00000097,0x00000094,0x00000096,0x000400fa,0x00000097,0x00000090,0x00000091,0x000200f8, - 0x00000090,0x0004003d,0x00000006,0x00000098,0x00000042,0x0004003d,0x00000006,0x00000099, - 0x0000005b,0x0004003d,0x00000006,0x0000009a,0x00000055,0x00050084,0x00000006,0x0000009b, - 0x00000099,0x0000009a,0x00050080,0x00000006,0x0000009c,0x00000098,0x0000009b,0x00060041, - 0x00000080,0x0000009d,0x0000007a,0x00000025,0x0000009c,0x0004003d,0x00000021,0x0000009e, - 0x0000009d,0x0004003d,0x00000006,0x0000009f,0x00000042,0x0004003d,0x00000006,0x000000a0, - 0x0000005b,0x0004003d,0x00000006,0x000000a1,0x00000055,0x00050084,0x00000006,0x000000a2, - 0x000000a0,0x000000a1,0x00050080,0x00000006,0x000000a3,0x0000009f,0x000000a2,0x00060041, - 0x00000080,0x000000a4,0x0000007a,0x00000025,0x000000a3,0x0004003d,0x00000021,0x000000a5, - 0x000000a4,0x00050085,0x00000021,0x000000a6,0x0000009e,0x000000a5,0x0004003d,0x00000021, - 0x000000a7,0x0000005d,0x00050081,0x00000021,0x000000a8,0x000000a7,0x000000a6,0x0003003e, - 0x0000005d,0x000000a8,0x0004003d,0x00000006,0x000000a9,0x0000005b,0x00050041,0x00000026, - 0x000000ab,0x00000024,0x000000aa,0x0004003d,0x00000006,0x000000ac,0x000000ab,0x00050082, - 0x00000006,0x000000ad,0x000000a9,0x000000ac,0x000500af,0x00000029,0x000000ae,0x000000ad, - 0x00000025,0x000300f7,0x000000b0,0x00000000,0x000400fa,0x000000ae,0x000000af,0x000000b0, - 0x000200f8,0x000000af,0x0004003d,0x00000006,0x000000b1,0x00000042,0x0004003d,0x00000006, - 0x000000b2,0x0000005b,0x00050041,0x00000026,0x000000b3,0x00000024,0x000000aa,0x0004003d, - 0x00000006,0x000000b4,0x000000b3,0x00050082,0x00000006,0x000000b5,0x000000b2,0x000000b4, - 0x0004003d,0x00000006,0x000000b6,0x00000055,0x00050084,0x00000006,0x000000b7,0x000000b5, - 0x000000b6,0x00050080,0x00000006,0x000000b8,0x000000b1,0x000000b7,0x00060041,0x00000080, - 0x000000b9,0x0000007a,0x00000025,0x000000b8,0x0004003d,0x00000021,0x000000ba,0x000000b9, - 0x0004003d,0x00000006,0x000000bb,0x00000042,0x0004003d,0x00000006,0x000000bc,0x0000005b, - 0x00050041,0x00000026,0x000000bd,0x00000024,0x000000aa,0x0004003d,0x00000006,0x000000be, - 0x000000bd,0x00050082,0x00000006,0x000000bf,0x000000bc,0x000000be,0x0004003d,0x00000006, - 0x000000c0,0x00000055,0x00050084,0x00000006,0x000000c1,0x000000bf,0x000000c0,0x00050080, - 0x00000006,0x000000c2,0x000000bb,0x000000c1,0x00060041,0x00000080,0x000000c3,0x0000007a, - 0x00000025,0x000000c2,0x0004003d,0x00000021,0x000000c4,0x000000c3,0x00050085,0x00000021, - 0x000000c5,0x000000ba,0x000000c4,0x0004003d,0x00000021,0x000000c6,0x0000005d,0x00050083, - 0x00000021,0x000000c7,0x000000c6,0x000000c5,0x0003003e,0x0000005d,0x000000c7,0x000200f9, - 0x000000b0,0x000200f8,0x000000b0,0x00050041,0x000000ca,0x000000cb,0x00000024,0x000000c9, - 0x0004003d,0x00000021,0x000000cc,0x000000cb,0x0004003d,0x00000021,0x000000cd,0x0000005d, - 0x00050041,0x000000ca,0x000000cf,0x00000024,0x000000ce,0x0004003d,0x00000021,0x000000d0, - 0x000000cf,0x00050085,0x00000021,0x000000d1,0x000000cd,0x000000d0,0x00050081,0x00000021, - 0x000000d2,0x000000cc,0x000000d1,0x0003003e,0x000000c8,0x000000d2,0x0004003d,0x00000006, - 0x000000d7,0x00000042,0x0004003d,0x00000006,0x000000d8,0x0000005b,0x00050041,0x00000026, - 0x000000d9,0x00000024,0x00000061,0x0004003d,0x00000006,0x000000da,0x000000d9,0x00050082, - 0x00000006,0x000000db,0x000000d8,0x000000da,0x0004003d,0x00000006,0x000000dc,0x00000055, - 0x00050084,0x00000006,0x000000dd,0x000000db,0x000000dc,0x00050080,0x00000006,0x000000de, - 0x000000d7,0x000000dd,0x0004003d,0x00000006,0x000000df,0x00000042,0x0004003d,0x00000006, - 0x000000e0,0x0000005b,0x00050041,0x00000026,0x000000e1,0x00000024,0x00000061,0x0004003d, - 0x00000006,0x000000e2,0x000000e1,0x00050082,0x00000006,0x000000e3,0x000000e0,0x000000e2, - 0x0004003d,0x00000006,0x000000e4,0x00000055,0x00050084,0x00000006,0x000000e5,0x000000e3, - 0x000000e4,0x00050080,0x00000006,0x000000e6,0x000000df,0x000000e5,0x00060041,0x00000080, - 0x000000e7,0x0000007a,0x00000025,0x000000e6,0x0004003d,0x00000021,0x000000e8,0x000000e7, - 0x0004003d,0x00000021,0x000000e9,0x000000c8,0x00050041,0x000000ca,0x000000eb,0x00000024, - 0x000000ea,0x0004003d,0x00000021,0x000000ec,0x000000eb,0x0007000c,0x00000021,0x000000ed, - 0x00000001,0x0000001a,0x000000e9,0x000000ec,0x00050085,0x00000021,0x000000ee,0x000000e8, - 0x000000ed,0x00060041,0x00000080,0x000000ef,0x000000d6,0x00000025,0x000000de,0x0003003e, - 0x000000ef,0x000000ee,0x0004003d,0x00000006,0x000000f0,0x0000005b,0x00050080,0x00000006, - 0x000000f1,0x000000f0,0x00000044,0x0003003e,0x0000005b,0x000000f1,0x000200f9,0x00000092, - 0x000200f8,0x00000092,0x000200f9,0x0000008f,0x000200f8,0x00000091,0x0004003d,0x00000006, - 0x000000f3,0x0000005b,0x0004003d,0x00000006,0x000000f4,0x0000005f,0x00050082,0x00000006, - 0x000000f5,0x000000f3,0x000000f4,0x0003003e,0x000000f2,0x000000f5,0x000200f9,0x000000f6, - 0x000200f8,0x000000f6,0x000400f6,0x000000f8,0x000000f9,0x00000000,0x000200f9,0x000000fa, - 0x000200f8,0x000000fa,0x0004003d,0x00000006,0x000000fb,0x000000f2,0x000500af,0x00000029, - 0x000000fc,0x000000fb,0x00000025,0x000300f7,0x000000fe,0x00000000,0x000400fa,0x000000fc, - 0x000000fd,0x000000fe,0x000200f8,0x000000fd,0x0004003d,0x00000006,0x000000ff,0x000000f2, - 0x00050041,0x00000026,0x00000100,0x00000024,0x00000044,0x0004003d,0x00000006,0x00000101, - 0x00000100,0x000500b1,0x00000029,0x00000102,0x000000ff,0x00000101,0x000200f9,0x000000fe, - 0x000200f8,0x000000fe,0x000700f5,0x00000029,0x00000103,0x000000fc,0x000000fa,0x00000102, - 0x000000fd,0x000400fa,0x00000103,0x000000f7,0x000000f8,0x000200f8,0x000000f7,0x0004003d, - 0x00000006,0x00000104,0x0000005b,0x00050041,0x00000026,0x00000105,0x00000024,0x000000aa, - 0x0004003d,0x00000006,0x00000106,0x00000105,0x00050082,0x00000006,0x00000107,0x00000104, - 0x00000106,0x000500af,0x00000029,0x00000108,0x00000107,0x00000025,0x000300f7,0x0000010a, - 0x00000000,0x000400fa,0x00000108,0x00000109,0x0000010a,0x000200f8,0x00000109,0x0004003d, - 0x00000006,0x0000010b,0x00000042,0x0004003d,0x00000006,0x0000010c,0x0000005b,0x00050041, - 0x00000026,0x0000010d,0x00000024,0x000000aa,0x0004003d,0x00000006,0x0000010e,0x0000010d, - 0x00050082,0x00000006,0x0000010f,0x0000010c,0x0000010e,0x0004003d,0x00000006,0x00000110, - 0x00000055,0x00050084,0x00000006,0x00000111,0x0000010f,0x00000110,0x00050080,0x00000006, - 0x00000112,0x0000010b,0x00000111,0x00060041,0x00000080,0x00000113,0x0000007a,0x00000025, - 0x00000112,0x0004003d,0x00000021,0x00000114,0x00000113,0x0004003d,0x00000006,0x00000115, - 0x00000042,0x0004003d,0x00000006,0x00000116,0x0000005b,0x00050041,0x00000026,0x00000117, - 0x00000024,0x000000aa,0x0004003d,0x00000006,0x00000118,0x00000117,0x00050082,0x00000006, - 0x00000119,0x00000116,0x00000118,0x0004003d,0x00000006,0x0000011a,0x00000055,0x00050084, - 0x00000006,0x0000011b,0x00000119,0x0000011a,0x00050080,0x00000006,0x0000011c,0x00000115, - 0x0000011b,0x00060041,0x00000080,0x0000011d,0x0000007a,0x00000025,0x0000011c,0x0004003d, - 0x00000021,0x0000011e,0x0000011d,0x00050085,0x00000021,0x0000011f,0x00000114,0x0000011e, - 0x0004003d,0x00000021,0x00000120,0x0000005d,0x00050083,0x00000021,0x00000121,0x00000120, - 0x0000011f,0x0003003e,0x0000005d,0x00000121,0x000200f9,0x0000010a,0x000200f8,0x0000010a, - 0x00050041,0x000000ca,0x00000122,0x00000024,0x000000c9,0x0004003d,0x00000021,0x00000123, - 0x00000122,0x0004003d,0x00000021,0x00000124,0x0000005d,0x00050041,0x000000ca,0x00000125, - 0x00000024,0x000000ce,0x0004003d,0x00000021,0x00000126,0x00000125,0x00050085,0x00000021, - 0x00000127,0x00000124,0x00000126,0x00050081,0x00000021,0x00000128,0x00000123,0x00000127, - 0x0003003e,0x000000c8,0x00000128,0x0004003d,0x00000006,0x00000129,0x00000042,0x0004003d, - 0x00000006,0x0000012a,0x000000f2,0x0004003d,0x00000006,0x0000012b,0x00000055,0x00050084, - 0x00000006,0x0000012c,0x0000012a,0x0000012b,0x00050080,0x00000006,0x0000012d,0x00000129, - 0x0000012c,0x0004003d,0x00000006,0x0000012e,0x00000042,0x0004003d,0x00000006,0x0000012f, - 0x000000f2,0x0004003d,0x00000006,0x00000130,0x00000055,0x00050084,0x00000006,0x00000131, - 0x0000012f,0x00000130,0x00050080,0x00000006,0x00000132,0x0000012e,0x00000131,0x00060041, - 0x00000080,0x00000133,0x0000007a,0x00000025,0x00000132,0x0004003d,0x00000021,0x00000134, - 0x00000133,0x0004003d,0x00000021,0x00000135,0x000000c8,0x00050041,0x000000ca,0x00000136, - 0x00000024,0x000000ea,0x0004003d,0x00000021,0x00000137,0x00000136,0x0007000c,0x00000021, - 0x00000138,0x00000001,0x0000001a,0x00000135,0x00000137,0x00050085,0x00000021,0x00000139, - 0x00000134,0x00000138,0x00060041,0x00000080,0x0000013a,0x000000d6,0x00000025,0x0000012d, - 0x0003003e,0x0000013a,0x00000139,0x0004003d,0x00000006,0x0000013b,0x0000005b,0x00050080, - 0x00000006,0x0000013c,0x0000013b,0x00000044,0x0003003e,0x0000005b,0x0000013c,0x0004003d, - 0x00000006,0x0000013d,0x000000f2,0x00050080,0x00000006,0x0000013e,0x0000013d,0x00000044, - 0x0003003e,0x000000f2,0x0000013e,0x000200f9,0x000000f9,0x000200f8,0x000000f9,0x000200f9, - 0x000000f6,0x000200f8,0x000000f8,0x000200f9,0x0000001e,0x000200f8,0x0000001e,0x0004003d, - 0x00000006,0x0000013f,0x00000012,0x0004003d,0x00000006,0x00000140,0x00000019,0x00050080, - 0x00000006,0x00000141,0x00000140,0x0000013f,0x0003003e,0x00000019,0x00000141,0x000200f9, - 0x0000001b,0x000200f8,0x0000001d,0x000100fd,0x00010038 -}; - -}}} // namespace cv::dnn::vkcom diff --git a/modules/dnn/src/vkcom/shader/max_pool.comp b/modules/dnn/src/vkcom/shader/max_pool.comp deleted file mode 100644 index 0bf2ce55af..0000000000 --- a/modules/dnn/src/vkcom/shader/max_pool.comp +++ /dev/null @@ -1,64 +0,0 @@ -#version 450 -#define LOCAL_SZ_X 256 -layout(push_constant) uniform pushBlock { - int channels; - int in_h; - int in_w; - int out_h; - int out_w; - int padding_h; - int padding_w; - int filter_h; - int filter_w; - int stride_h; - int stride_w; - int total; - int need_mask; -} p; - -layout(binding = 0) readonly buffer Input0{ - float in_buffer[]; -}; - -layout(binding = 1) writeonly buffer Output{ - float out_buffer[]; -}; - -layout(binding = 2) writeonly buffer Mask{ - float mask_buffer[]; -}; - -layout(local_size_x = LOCAL_SZ_X, local_size_y = 1, local_size_z = 1) in; - -void main() -{ - int global_size = int(gl_WorkGroupSize.x * gl_NumWorkGroups.x); - int gid = int(gl_GlobalInvocationID.x); - for (int index = gid; index < p.total; index += global_size) - { - const int pw = index % p.out_w; - const int ph = (index / p.out_w) % p.out_h; - const int c = (index / p.out_w / p.out_h) % p.channels; - const int n = index / p.out_w / p.out_h / p.channels; - int hstart = ph * p.stride_h - p.padding_h; - int wstart = pw * p.stride_w - p.padding_w; - const int hend = min(hstart + p.filter_h, p.in_h); - const int wend = min(wstart + p.filter_w, p.in_w); - hstart = max(hstart, 0); - wstart = max(wstart, 0); - float maxval = -1./0.; - int maxidx = -1; - int off = (n * p.channels + c) * p.in_h * p.in_w; - for (int h = hstart; h < hend; ++h) { - for (int w = wstart; w < wend; ++w) { - if (in_buffer[off + h * p.in_w + w] > maxval) { - maxidx = h * p.in_w + w; - maxval = in_buffer[off + maxidx]; - } - } - } - out_buffer[index] = maxval; - if (p.need_mask == 1) - mask_buffer[index] = maxidx; - } -} diff --git a/modules/dnn/src/vkcom/shader/max_pool_spv.cpp b/modules/dnn/src/vkcom/shader/max_pool_spv.cpp deleted file mode 100644 index 6e4809d8cf..0000000000 --- a/modules/dnn/src/vkcom/shader/max_pool_spv.cpp +++ /dev/null @@ -1,197 +0,0 @@ -// This file is part of OpenCV project. -// It is subject to the license terms in the LICENSE file found in the top-level directory -// of this distribution and at http://opencv.org/license.html. -// -// Copyright (C) 2018, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. - -#include "../../precomp.hpp" - -namespace cv { namespace dnn { namespace vkcom { - -extern const unsigned int max_pool_spv[1449] = { - 0x07230203,0x00010000,0x00080001,0x000000df,0x00000000,0x00020011,0x00000001,0x0006000b, - 0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001, - 0x0007000f,0x00000005,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x00000015,0x00060010, - 0x00000004,0x00000011,0x00000100,0x00000001,0x00000001,0x00030003,0x00000002,0x000001c2, - 0x00040005,0x00000004,0x6e69616d,0x00000000,0x00050005,0x00000008,0x626f6c67,0x735f6c61, - 0x00657a69,0x00070005,0x0000000d,0x4e5f6c67,0x6f576d75,0x72476b72,0x7370756f,0x00000000, - 0x00030005,0x00000014,0x00646967,0x00080005,0x00000015,0x475f6c67,0x61626f6c,0x766e496c, - 0x7461636f,0x496e6f69,0x00000044,0x00040005,0x00000019,0x65646e69,0x00000078,0x00050005, - 0x00000021,0x68737570,0x636f6c42,0x0000006b,0x00060006,0x00000021,0x00000000,0x6e616863, - 0x736c656e,0x00000000,0x00050006,0x00000021,0x00000001,0x685f6e69,0x00000000,0x00050006, - 0x00000021,0x00000002,0x775f6e69,0x00000000,0x00050006,0x00000021,0x00000003,0x5f74756f, - 0x00000068,0x00050006,0x00000021,0x00000004,0x5f74756f,0x00000077,0x00060006,0x00000021, - 0x00000005,0x64646170,0x5f676e69,0x00000068,0x00060006,0x00000021,0x00000006,0x64646170, - 0x5f676e69,0x00000077,0x00060006,0x00000021,0x00000007,0x746c6966,0x685f7265,0x00000000, - 0x00060006,0x00000021,0x00000008,0x746c6966,0x775f7265,0x00000000,0x00060006,0x00000021, - 0x00000009,0x69727473,0x685f6564,0x00000000,0x00060006,0x00000021,0x0000000a,0x69727473, - 0x775f6564,0x00000000,0x00050006,0x00000021,0x0000000b,0x61746f74,0x0000006c,0x00060006, - 0x00000021,0x0000000c,0x6465656e,0x73616d5f,0x0000006b,0x00030005,0x00000023,0x00000070, - 0x00030005,0x0000002a,0x00007770,0x00030005,0x00000030,0x00006870,0x00030005,0x00000039, - 0x00000063,0x00030005,0x00000045,0x0000006e,0x00040005,0x00000050,0x61747368,0x00007472, - 0x00040005,0x0000005a,0x61747377,0x00007472,0x00040005,0x00000064,0x646e6568,0x00000000, - 0x00040005,0x0000006e,0x646e6577,0x00000000,0x00040005,0x0000007e,0x7678616d,0x00006c61, - 0x00040005,0x00000080,0x6978616d,0x00007864,0x00030005,0x00000082,0x0066666f,0x00030005, - 0x0000008f,0x00000068,0x00030005,0x00000099,0x00000077,0x00040005,0x000000a4,0x75706e49, - 0x00003074,0x00060006,0x000000a4,0x00000000,0x625f6e69,0x65666675,0x00000072,0x00030005, - 0x000000a6,0x00000000,0x00040005,0x000000c6,0x7074754f,0x00007475,0x00060006,0x000000c6, - 0x00000000,0x5f74756f,0x66667562,0x00007265,0x00030005,0x000000c8,0x00000000,0x00040005, - 0x000000d3,0x6b73614d,0x00000000,0x00060006,0x000000d3,0x00000000,0x6b73616d,0x6675625f, - 0x00726566,0x00030005,0x000000d5,0x00000000,0x00040047,0x0000000d,0x0000000b,0x00000018, - 0x00040047,0x00000015,0x0000000b,0x0000001c,0x00050048,0x00000021,0x00000000,0x00000023, - 0x00000000,0x00050048,0x00000021,0x00000001,0x00000023,0x00000004,0x00050048,0x00000021, - 0x00000002,0x00000023,0x00000008,0x00050048,0x00000021,0x00000003,0x00000023,0x0000000c, - 0x00050048,0x00000021,0x00000004,0x00000023,0x00000010,0x00050048,0x00000021,0x00000005, - 0x00000023,0x00000014,0x00050048,0x00000021,0x00000006,0x00000023,0x00000018,0x00050048, - 0x00000021,0x00000007,0x00000023,0x0000001c,0x00050048,0x00000021,0x00000008,0x00000023, - 0x00000020,0x00050048,0x00000021,0x00000009,0x00000023,0x00000024,0x00050048,0x00000021, - 0x0000000a,0x00000023,0x00000028,0x00050048,0x00000021,0x0000000b,0x00000023,0x0000002c, - 0x00050048,0x00000021,0x0000000c,0x00000023,0x00000030,0x00030047,0x00000021,0x00000002, - 0x00040047,0x000000a3,0x00000006,0x00000004,0x00040048,0x000000a4,0x00000000,0x00000018, - 0x00050048,0x000000a4,0x00000000,0x00000023,0x00000000,0x00030047,0x000000a4,0x00000003, - 0x00040047,0x000000a6,0x00000022,0x00000000,0x00040047,0x000000a6,0x00000021,0x00000000, - 0x00040047,0x000000c5,0x00000006,0x00000004,0x00040048,0x000000c6,0x00000000,0x00000019, - 0x00050048,0x000000c6,0x00000000,0x00000023,0x00000000,0x00030047,0x000000c6,0x00000003, - 0x00040047,0x000000c8,0x00000022,0x00000000,0x00040047,0x000000c8,0x00000021,0x00000001, - 0x00040047,0x000000d2,0x00000006,0x00000004,0x00040048,0x000000d3,0x00000000,0x00000019, - 0x00050048,0x000000d3,0x00000000,0x00000023,0x00000000,0x00030047,0x000000d3,0x00000003, - 0x00040047,0x000000d5,0x00000022,0x00000000,0x00040047,0x000000d5,0x00000021,0x00000002, - 0x00040047,0x000000de,0x0000000b,0x00000019,0x00020013,0x00000002,0x00030021,0x00000003, - 0x00000002,0x00040015,0x00000006,0x00000020,0x00000001,0x00040020,0x00000007,0x00000007, - 0x00000006,0x00040015,0x00000009,0x00000020,0x00000000,0x0004002b,0x00000009,0x0000000a, - 0x00000100,0x00040017,0x0000000b,0x00000009,0x00000003,0x00040020,0x0000000c,0x00000001, - 0x0000000b,0x0004003b,0x0000000c,0x0000000d,0x00000001,0x0004002b,0x00000009,0x0000000e, - 0x00000000,0x00040020,0x0000000f,0x00000001,0x00000009,0x0004003b,0x0000000c,0x00000015, - 0x00000001,0x000f001e,0x00000021,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006, - 0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006, - 0x00040020,0x00000022,0x00000009,0x00000021,0x0004003b,0x00000022,0x00000023,0x00000009, - 0x0004002b,0x00000006,0x00000024,0x0000000b,0x00040020,0x00000025,0x00000009,0x00000006, - 0x00020014,0x00000028,0x0004002b,0x00000006,0x0000002c,0x00000004,0x0004002b,0x00000006, - 0x00000035,0x00000003,0x0004002b,0x00000006,0x00000041,0x00000000,0x0004002b,0x00000006, - 0x00000052,0x00000009,0x0004002b,0x00000006,0x00000056,0x00000005,0x0004002b,0x00000006, - 0x0000005c,0x0000000a,0x0004002b,0x00000006,0x00000060,0x00000006,0x0004002b,0x00000006, - 0x00000066,0x00000007,0x0004002b,0x00000006,0x0000006a,0x00000001,0x0004002b,0x00000006, - 0x00000070,0x00000008,0x0004002b,0x00000006,0x00000074,0x00000002,0x00030016,0x0000007c, - 0x00000020,0x00040020,0x0000007d,0x00000007,0x0000007c,0x0004002b,0x0000007c,0x0000007f, - 0xff800000,0x0004002b,0x00000006,0x00000081,0xffffffff,0x0003001d,0x000000a3,0x0000007c, - 0x0003001e,0x000000a4,0x000000a3,0x00040020,0x000000a5,0x00000002,0x000000a4,0x0004003b, - 0x000000a5,0x000000a6,0x00000002,0x00040020,0x000000af,0x00000002,0x0000007c,0x0003001d, - 0x000000c5,0x0000007c,0x0003001e,0x000000c6,0x000000c5,0x00040020,0x000000c7,0x00000002, - 0x000000c6,0x0004003b,0x000000c7,0x000000c8,0x00000002,0x0004002b,0x00000006,0x000000cc, - 0x0000000c,0x0003001d,0x000000d2,0x0000007c,0x0003001e,0x000000d3,0x000000d2,0x00040020, - 0x000000d4,0x00000002,0x000000d3,0x0004003b,0x000000d4,0x000000d5,0x00000002,0x0004002b, - 0x00000009,0x000000dd,0x00000001,0x0006002c,0x0000000b,0x000000de,0x0000000a,0x000000dd, - 0x000000dd,0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005, - 0x0004003b,0x00000007,0x00000008,0x00000007,0x0004003b,0x00000007,0x00000014,0x00000007, - 0x0004003b,0x00000007,0x00000019,0x00000007,0x0004003b,0x00000007,0x0000002a,0x00000007, - 0x0004003b,0x00000007,0x00000030,0x00000007,0x0004003b,0x00000007,0x00000039,0x00000007, - 0x0004003b,0x00000007,0x00000045,0x00000007,0x0004003b,0x00000007,0x00000050,0x00000007, - 0x0004003b,0x00000007,0x0000005a,0x00000007,0x0004003b,0x00000007,0x00000064,0x00000007, - 0x0004003b,0x00000007,0x0000006e,0x00000007,0x0004003b,0x0000007d,0x0000007e,0x00000007, - 0x0004003b,0x00000007,0x00000080,0x00000007,0x0004003b,0x00000007,0x00000082,0x00000007, - 0x0004003b,0x00000007,0x0000008f,0x00000007,0x0004003b,0x00000007,0x00000099,0x00000007, - 0x00050041,0x0000000f,0x00000010,0x0000000d,0x0000000e,0x0004003d,0x00000009,0x00000011, - 0x00000010,0x00050084,0x00000009,0x00000012,0x0000000a,0x00000011,0x0004007c,0x00000006, - 0x00000013,0x00000012,0x0003003e,0x00000008,0x00000013,0x00050041,0x0000000f,0x00000016, - 0x00000015,0x0000000e,0x0004003d,0x00000009,0x00000017,0x00000016,0x0004007c,0x00000006, - 0x00000018,0x00000017,0x0003003e,0x00000014,0x00000018,0x0004003d,0x00000006,0x0000001a, - 0x00000014,0x0003003e,0x00000019,0x0000001a,0x000200f9,0x0000001b,0x000200f8,0x0000001b, - 0x000400f6,0x0000001d,0x0000001e,0x00000000,0x000200f9,0x0000001f,0x000200f8,0x0000001f, - 0x0004003d,0x00000006,0x00000020,0x00000019,0x00050041,0x00000025,0x00000026,0x00000023, - 0x00000024,0x0004003d,0x00000006,0x00000027,0x00000026,0x000500b1,0x00000028,0x00000029, - 0x00000020,0x00000027,0x000400fa,0x00000029,0x0000001c,0x0000001d,0x000200f8,0x0000001c, - 0x0004003d,0x00000006,0x0000002b,0x00000019,0x00050041,0x00000025,0x0000002d,0x00000023, - 0x0000002c,0x0004003d,0x00000006,0x0000002e,0x0000002d,0x0005008b,0x00000006,0x0000002f, - 0x0000002b,0x0000002e,0x0003003e,0x0000002a,0x0000002f,0x0004003d,0x00000006,0x00000031, - 0x00000019,0x00050041,0x00000025,0x00000032,0x00000023,0x0000002c,0x0004003d,0x00000006, - 0x00000033,0x00000032,0x00050087,0x00000006,0x00000034,0x00000031,0x00000033,0x00050041, - 0x00000025,0x00000036,0x00000023,0x00000035,0x0004003d,0x00000006,0x00000037,0x00000036, - 0x0005008b,0x00000006,0x00000038,0x00000034,0x00000037,0x0003003e,0x00000030,0x00000038, - 0x0004003d,0x00000006,0x0000003a,0x00000019,0x00050041,0x00000025,0x0000003b,0x00000023, - 0x0000002c,0x0004003d,0x00000006,0x0000003c,0x0000003b,0x00050087,0x00000006,0x0000003d, - 0x0000003a,0x0000003c,0x00050041,0x00000025,0x0000003e,0x00000023,0x00000035,0x0004003d, - 0x00000006,0x0000003f,0x0000003e,0x00050087,0x00000006,0x00000040,0x0000003d,0x0000003f, - 0x00050041,0x00000025,0x00000042,0x00000023,0x00000041,0x0004003d,0x00000006,0x00000043, - 0x00000042,0x0005008b,0x00000006,0x00000044,0x00000040,0x00000043,0x0003003e,0x00000039, - 0x00000044,0x0004003d,0x00000006,0x00000046,0x00000019,0x00050041,0x00000025,0x00000047, - 0x00000023,0x0000002c,0x0004003d,0x00000006,0x00000048,0x00000047,0x00050087,0x00000006, - 0x00000049,0x00000046,0x00000048,0x00050041,0x00000025,0x0000004a,0x00000023,0x00000035, - 0x0004003d,0x00000006,0x0000004b,0x0000004a,0x00050087,0x00000006,0x0000004c,0x00000049, - 0x0000004b,0x00050041,0x00000025,0x0000004d,0x00000023,0x00000041,0x0004003d,0x00000006, - 0x0000004e,0x0000004d,0x00050087,0x00000006,0x0000004f,0x0000004c,0x0000004e,0x0003003e, - 0x00000045,0x0000004f,0x0004003d,0x00000006,0x00000051,0x00000030,0x00050041,0x00000025, - 0x00000053,0x00000023,0x00000052,0x0004003d,0x00000006,0x00000054,0x00000053,0x00050084, - 0x00000006,0x00000055,0x00000051,0x00000054,0x00050041,0x00000025,0x00000057,0x00000023, - 0x00000056,0x0004003d,0x00000006,0x00000058,0x00000057,0x00050082,0x00000006,0x00000059, - 0x00000055,0x00000058,0x0003003e,0x00000050,0x00000059,0x0004003d,0x00000006,0x0000005b, - 0x0000002a,0x00050041,0x00000025,0x0000005d,0x00000023,0x0000005c,0x0004003d,0x00000006, - 0x0000005e,0x0000005d,0x00050084,0x00000006,0x0000005f,0x0000005b,0x0000005e,0x00050041, - 0x00000025,0x00000061,0x00000023,0x00000060,0x0004003d,0x00000006,0x00000062,0x00000061, - 0x00050082,0x00000006,0x00000063,0x0000005f,0x00000062,0x0003003e,0x0000005a,0x00000063, - 0x0004003d,0x00000006,0x00000065,0x00000050,0x00050041,0x00000025,0x00000067,0x00000023, - 0x00000066,0x0004003d,0x00000006,0x00000068,0x00000067,0x00050080,0x00000006,0x00000069, - 0x00000065,0x00000068,0x00050041,0x00000025,0x0000006b,0x00000023,0x0000006a,0x0004003d, - 0x00000006,0x0000006c,0x0000006b,0x0007000c,0x00000006,0x0000006d,0x00000001,0x00000027, - 0x00000069,0x0000006c,0x0003003e,0x00000064,0x0000006d,0x0004003d,0x00000006,0x0000006f, - 0x0000005a,0x00050041,0x00000025,0x00000071,0x00000023,0x00000070,0x0004003d,0x00000006, - 0x00000072,0x00000071,0x00050080,0x00000006,0x00000073,0x0000006f,0x00000072,0x00050041, - 0x00000025,0x00000075,0x00000023,0x00000074,0x0004003d,0x00000006,0x00000076,0x00000075, - 0x0007000c,0x00000006,0x00000077,0x00000001,0x00000027,0x00000073,0x00000076,0x0003003e, - 0x0000006e,0x00000077,0x0004003d,0x00000006,0x00000078,0x00000050,0x0007000c,0x00000006, - 0x00000079,0x00000001,0x0000002a,0x00000078,0x00000041,0x0003003e,0x00000050,0x00000079, - 0x0004003d,0x00000006,0x0000007a,0x0000005a,0x0007000c,0x00000006,0x0000007b,0x00000001, - 0x0000002a,0x0000007a,0x00000041,0x0003003e,0x0000005a,0x0000007b,0x0003003e,0x0000007e, - 0x0000007f,0x0003003e,0x00000080,0x00000081,0x0004003d,0x00000006,0x00000083,0x00000045, - 0x00050041,0x00000025,0x00000084,0x00000023,0x00000041,0x0004003d,0x00000006,0x00000085, - 0x00000084,0x00050084,0x00000006,0x00000086,0x00000083,0x00000085,0x0004003d,0x00000006, - 0x00000087,0x00000039,0x00050080,0x00000006,0x00000088,0x00000086,0x00000087,0x00050041, - 0x00000025,0x00000089,0x00000023,0x0000006a,0x0004003d,0x00000006,0x0000008a,0x00000089, - 0x00050084,0x00000006,0x0000008b,0x00000088,0x0000008a,0x00050041,0x00000025,0x0000008c, - 0x00000023,0x00000074,0x0004003d,0x00000006,0x0000008d,0x0000008c,0x00050084,0x00000006, - 0x0000008e,0x0000008b,0x0000008d,0x0003003e,0x00000082,0x0000008e,0x0004003d,0x00000006, - 0x00000090,0x00000050,0x0003003e,0x0000008f,0x00000090,0x000200f9,0x00000091,0x000200f8, - 0x00000091,0x000400f6,0x00000093,0x00000094,0x00000000,0x000200f9,0x00000095,0x000200f8, - 0x00000095,0x0004003d,0x00000006,0x00000096,0x0000008f,0x0004003d,0x00000006,0x00000097, - 0x00000064,0x000500b1,0x00000028,0x00000098,0x00000096,0x00000097,0x000400fa,0x00000098, - 0x00000092,0x00000093,0x000200f8,0x00000092,0x0004003d,0x00000006,0x0000009a,0x0000005a, - 0x0003003e,0x00000099,0x0000009a,0x000200f9,0x0000009b,0x000200f8,0x0000009b,0x000400f6, - 0x0000009d,0x0000009e,0x00000000,0x000200f9,0x0000009f,0x000200f8,0x0000009f,0x0004003d, - 0x00000006,0x000000a0,0x00000099,0x0004003d,0x00000006,0x000000a1,0x0000006e,0x000500b1, - 0x00000028,0x000000a2,0x000000a0,0x000000a1,0x000400fa,0x000000a2,0x0000009c,0x0000009d, - 0x000200f8,0x0000009c,0x0004003d,0x00000006,0x000000a7,0x00000082,0x0004003d,0x00000006, - 0x000000a8,0x0000008f,0x00050041,0x00000025,0x000000a9,0x00000023,0x00000074,0x0004003d, - 0x00000006,0x000000aa,0x000000a9,0x00050084,0x00000006,0x000000ab,0x000000a8,0x000000aa, - 0x00050080,0x00000006,0x000000ac,0x000000a7,0x000000ab,0x0004003d,0x00000006,0x000000ad, - 0x00000099,0x00050080,0x00000006,0x000000ae,0x000000ac,0x000000ad,0x00060041,0x000000af, - 0x000000b0,0x000000a6,0x00000041,0x000000ae,0x0004003d,0x0000007c,0x000000b1,0x000000b0, - 0x0004003d,0x0000007c,0x000000b2,0x0000007e,0x000500ba,0x00000028,0x000000b3,0x000000b1, - 0x000000b2,0x000300f7,0x000000b5,0x00000000,0x000400fa,0x000000b3,0x000000b4,0x000000b5, - 0x000200f8,0x000000b4,0x0004003d,0x00000006,0x000000b6,0x0000008f,0x00050041,0x00000025, - 0x000000b7,0x00000023,0x00000074,0x0004003d,0x00000006,0x000000b8,0x000000b7,0x00050084, - 0x00000006,0x000000b9,0x000000b6,0x000000b8,0x0004003d,0x00000006,0x000000ba,0x00000099, - 0x00050080,0x00000006,0x000000bb,0x000000b9,0x000000ba,0x0003003e,0x00000080,0x000000bb, - 0x0004003d,0x00000006,0x000000bc,0x00000082,0x0004003d,0x00000006,0x000000bd,0x00000080, - 0x00050080,0x00000006,0x000000be,0x000000bc,0x000000bd,0x00060041,0x000000af,0x000000bf, - 0x000000a6,0x00000041,0x000000be,0x0004003d,0x0000007c,0x000000c0,0x000000bf,0x0003003e, - 0x0000007e,0x000000c0,0x000200f9,0x000000b5,0x000200f8,0x000000b5,0x000200f9,0x0000009e, - 0x000200f8,0x0000009e,0x0004003d,0x00000006,0x000000c1,0x00000099,0x00050080,0x00000006, - 0x000000c2,0x000000c1,0x0000006a,0x0003003e,0x00000099,0x000000c2,0x000200f9,0x0000009b, - 0x000200f8,0x0000009d,0x000200f9,0x00000094,0x000200f8,0x00000094,0x0004003d,0x00000006, - 0x000000c3,0x0000008f,0x00050080,0x00000006,0x000000c4,0x000000c3,0x0000006a,0x0003003e, - 0x0000008f,0x000000c4,0x000200f9,0x00000091,0x000200f8,0x00000093,0x0004003d,0x00000006, - 0x000000c9,0x00000019,0x0004003d,0x0000007c,0x000000ca,0x0000007e,0x00060041,0x000000af, - 0x000000cb,0x000000c8,0x00000041,0x000000c9,0x0003003e,0x000000cb,0x000000ca,0x00050041, - 0x00000025,0x000000cd,0x00000023,0x000000cc,0x0004003d,0x00000006,0x000000ce,0x000000cd, - 0x000500aa,0x00000028,0x000000cf,0x000000ce,0x0000006a,0x000300f7,0x000000d1,0x00000000, - 0x000400fa,0x000000cf,0x000000d0,0x000000d1,0x000200f8,0x000000d0,0x0004003d,0x00000006, - 0x000000d6,0x00000019,0x0004003d,0x00000006,0x000000d7,0x00000080,0x0004006f,0x0000007c, - 0x000000d8,0x000000d7,0x00060041,0x000000af,0x000000d9,0x000000d5,0x00000041,0x000000d6, - 0x0003003e,0x000000d9,0x000000d8,0x000200f9,0x000000d1,0x000200f8,0x000000d1,0x000200f9, - 0x0000001e,0x000200f8,0x0000001e,0x0004003d,0x00000006,0x000000da,0x00000008,0x0004003d, - 0x00000006,0x000000db,0x00000019,0x00050080,0x00000006,0x000000dc,0x000000db,0x000000da, - 0x0003003e,0x00000019,0x000000dc,0x000200f9,0x0000001b,0x000200f8,0x0000001d,0x000100fd, - 0x00010038 -}; - -}}} // namespace cv::dnn::vkcom diff --git a/modules/dnn/src/vkcom/shader/permute.comp b/modules/dnn/src/vkcom/shader/permute.comp deleted file mode 100644 index df4b997544..0000000000 --- a/modules/dnn/src/vkcom/shader/permute.comp +++ /dev/null @@ -1,44 +0,0 @@ -#version 450 -#define LOCAL_SZ_X 256 - -layout(push_constant) uniform pushBlock { - int nthreads; - int num_axes; - int global_size; -} p; - -layout(binding = 0) readonly buffer Input0{ - float in_buffer[]; -}; -layout(binding = 1) readonly buffer Input1{ - int permute_order[]; -}; -layout(binding = 2) readonly buffer Input2{ - int old_stride[]; -}; -layout(binding = 3) readonly buffer Input3{ - int new_stride[]; -}; -layout(binding = 4) writeonly buffer Output{ - float out_buffer[]; -}; - -layout(local_size_x = LOCAL_SZ_X, local_size_y = 1, local_size_z = 1) in; - -void main() -{ - for (int i = int(gl_GlobalInvocationID.x); i < p.nthreads; i += p.global_size) - { - int old_pos = 0; - int new_pos = i; - - for (int j = 0; j < p.num_axes; ++j) - { - int order = permute_order[j]; - old_pos += (new_pos / new_stride[j]) * old_stride[order]; - new_pos %= new_stride[j]; - } - - out_buffer[i] = in_buffer[old_pos]; - } -} diff --git a/modules/dnn/src/vkcom/shader/permute_spv.cpp b/modules/dnn/src/vkcom/shader/permute_spv.cpp deleted file mode 100644 index 65de196a84..0000000000 --- a/modules/dnn/src/vkcom/shader/permute_spv.cpp +++ /dev/null @@ -1,111 +0,0 @@ -// This file is part of OpenCV project. -// It is subject to the license terms in the LICENSE file found in the top-level directory -// of this distribution and at http://opencv.org/license.html. -// -// Copyright (C) 2018, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. - -#include "../../precomp.hpp" - -namespace cv { namespace dnn { namespace vkcom { - -extern const unsigned int permute_spv[765] = { - 0x07230203,0x00010000,0x00080001,0x00000069,0x00000000,0x00020011,0x00000001,0x0006000b, - 0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001, - 0x0006000f,0x00000005,0x00000004,0x6e69616d,0x00000000,0x0000000c,0x00060010,0x00000004, - 0x00000011,0x00000100,0x00000001,0x00000001,0x00030003,0x00000002,0x000001c2,0x00040005, - 0x00000004,0x6e69616d,0x00000000,0x00030005,0x00000008,0x00000069,0x00080005,0x0000000c, - 0x475f6c67,0x61626f6c,0x766e496c,0x7461636f,0x496e6f69,0x00000044,0x00050005,0x00000018, - 0x68737570,0x636f6c42,0x0000006b,0x00060006,0x00000018,0x00000000,0x7268746e,0x73646165, - 0x00000000,0x00060006,0x00000018,0x00000001,0x5f6d756e,0x73657861,0x00000000,0x00060006, - 0x00000018,0x00000002,0x626f6c67,0x735f6c61,0x00657a69,0x00030005,0x0000001a,0x00000070, - 0x00040005,0x00000021,0x5f646c6f,0x00736f70,0x00040005,0x00000022,0x5f77656e,0x00736f70, - 0x00030005,0x00000024,0x0000006a,0x00040005,0x0000002f,0x6564726f,0x00000072,0x00040005, - 0x00000031,0x75706e49,0x00003174,0x00070006,0x00000031,0x00000000,0x6d726570,0x5f657475, - 0x6564726f,0x00000072,0x00030005,0x00000033,0x00000000,0x00040005,0x0000003a,0x75706e49, - 0x00003374,0x00060006,0x0000003a,0x00000000,0x5f77656e,0x69727473,0x00006564,0x00030005, - 0x0000003c,0x00000000,0x00040005,0x00000042,0x75706e49,0x00003274,0x00060006,0x00000042, - 0x00000000,0x5f646c6f,0x69727473,0x00006564,0x00030005,0x00000044,0x00000000,0x00040005, - 0x00000054,0x7074754f,0x00007475,0x00060006,0x00000054,0x00000000,0x5f74756f,0x66667562, - 0x00007265,0x00030005,0x00000056,0x00000000,0x00040005,0x00000059,0x75706e49,0x00003074, - 0x00060006,0x00000059,0x00000000,0x625f6e69,0x65666675,0x00000072,0x00030005,0x0000005b, - 0x00000000,0x00040047,0x0000000c,0x0000000b,0x0000001c,0x00050048,0x00000018,0x00000000, - 0x00000023,0x00000000,0x00050048,0x00000018,0x00000001,0x00000023,0x00000004,0x00050048, - 0x00000018,0x00000002,0x00000023,0x00000008,0x00030047,0x00000018,0x00000002,0x00040047, - 0x00000030,0x00000006,0x00000004,0x00040048,0x00000031,0x00000000,0x00000018,0x00050048, - 0x00000031,0x00000000,0x00000023,0x00000000,0x00030047,0x00000031,0x00000003,0x00040047, - 0x00000033,0x00000022,0x00000000,0x00040047,0x00000033,0x00000021,0x00000001,0x00040047, - 0x00000039,0x00000006,0x00000004,0x00040048,0x0000003a,0x00000000,0x00000018,0x00050048, - 0x0000003a,0x00000000,0x00000023,0x00000000,0x00030047,0x0000003a,0x00000003,0x00040047, - 0x0000003c,0x00000022,0x00000000,0x00040047,0x0000003c,0x00000021,0x00000003,0x00040047, - 0x00000041,0x00000006,0x00000004,0x00040048,0x00000042,0x00000000,0x00000018,0x00050048, - 0x00000042,0x00000000,0x00000023,0x00000000,0x00030047,0x00000042,0x00000003,0x00040047, - 0x00000044,0x00000022,0x00000000,0x00040047,0x00000044,0x00000021,0x00000002,0x00040047, - 0x00000053,0x00000006,0x00000004,0x00040048,0x00000054,0x00000000,0x00000019,0x00050048, - 0x00000054,0x00000000,0x00000023,0x00000000,0x00030047,0x00000054,0x00000003,0x00040047, - 0x00000056,0x00000022,0x00000000,0x00040047,0x00000056,0x00000021,0x00000004,0x00040047, - 0x00000058,0x00000006,0x00000004,0x00040048,0x00000059,0x00000000,0x00000018,0x00050048, - 0x00000059,0x00000000,0x00000023,0x00000000,0x00030047,0x00000059,0x00000003,0x00040047, - 0x0000005b,0x00000022,0x00000000,0x00040047,0x0000005b,0x00000021,0x00000000,0x00040047, - 0x00000068,0x0000000b,0x00000019,0x00020013,0x00000002,0x00030021,0x00000003,0x00000002, - 0x00040015,0x00000006,0x00000020,0x00000001,0x00040020,0x00000007,0x00000007,0x00000006, - 0x00040015,0x00000009,0x00000020,0x00000000,0x00040017,0x0000000a,0x00000009,0x00000003, - 0x00040020,0x0000000b,0x00000001,0x0000000a,0x0004003b,0x0000000b,0x0000000c,0x00000001, - 0x0004002b,0x00000009,0x0000000d,0x00000000,0x00040020,0x0000000e,0x00000001,0x00000009, - 0x0005001e,0x00000018,0x00000006,0x00000006,0x00000006,0x00040020,0x00000019,0x00000009, - 0x00000018,0x0004003b,0x00000019,0x0000001a,0x00000009,0x0004002b,0x00000006,0x0000001b, - 0x00000000,0x00040020,0x0000001c,0x00000009,0x00000006,0x00020014,0x0000001f,0x0004002b, - 0x00000006,0x0000002b,0x00000001,0x0003001d,0x00000030,0x00000006,0x0003001e,0x00000031, - 0x00000030,0x00040020,0x00000032,0x00000002,0x00000031,0x0004003b,0x00000032,0x00000033, - 0x00000002,0x00040020,0x00000035,0x00000002,0x00000006,0x0003001d,0x00000039,0x00000006, - 0x0003001e,0x0000003a,0x00000039,0x00040020,0x0000003b,0x00000002,0x0000003a,0x0004003b, - 0x0000003b,0x0000003c,0x00000002,0x0003001d,0x00000041,0x00000006,0x0003001e,0x00000042, - 0x00000041,0x00040020,0x00000043,0x00000002,0x00000042,0x0004003b,0x00000043,0x00000044, - 0x00000002,0x00030016,0x00000052,0x00000020,0x0003001d,0x00000053,0x00000052,0x0003001e, - 0x00000054,0x00000053,0x00040020,0x00000055,0x00000002,0x00000054,0x0004003b,0x00000055, - 0x00000056,0x00000002,0x0003001d,0x00000058,0x00000052,0x0003001e,0x00000059,0x00000058, - 0x00040020,0x0000005a,0x00000002,0x00000059,0x0004003b,0x0000005a,0x0000005b,0x00000002, - 0x00040020,0x0000005d,0x00000002,0x00000052,0x0004002b,0x00000006,0x00000061,0x00000002, - 0x0004002b,0x00000009,0x00000066,0x00000100,0x0004002b,0x00000009,0x00000067,0x00000001, - 0x0006002c,0x0000000a,0x00000068,0x00000066,0x00000067,0x00000067,0x00050036,0x00000002, - 0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000007,0x00000008, - 0x00000007,0x0004003b,0x00000007,0x00000021,0x00000007,0x0004003b,0x00000007,0x00000022, - 0x00000007,0x0004003b,0x00000007,0x00000024,0x00000007,0x0004003b,0x00000007,0x0000002f, - 0x00000007,0x00050041,0x0000000e,0x0000000f,0x0000000c,0x0000000d,0x0004003d,0x00000009, - 0x00000010,0x0000000f,0x0004007c,0x00000006,0x00000011,0x00000010,0x0003003e,0x00000008, - 0x00000011,0x000200f9,0x00000012,0x000200f8,0x00000012,0x000400f6,0x00000014,0x00000015, - 0x00000000,0x000200f9,0x00000016,0x000200f8,0x00000016,0x0004003d,0x00000006,0x00000017, - 0x00000008,0x00050041,0x0000001c,0x0000001d,0x0000001a,0x0000001b,0x0004003d,0x00000006, - 0x0000001e,0x0000001d,0x000500b1,0x0000001f,0x00000020,0x00000017,0x0000001e,0x000400fa, - 0x00000020,0x00000013,0x00000014,0x000200f8,0x00000013,0x0003003e,0x00000021,0x0000001b, - 0x0004003d,0x00000006,0x00000023,0x00000008,0x0003003e,0x00000022,0x00000023,0x0003003e, - 0x00000024,0x0000001b,0x000200f9,0x00000025,0x000200f8,0x00000025,0x000400f6,0x00000027, - 0x00000028,0x00000000,0x000200f9,0x00000029,0x000200f8,0x00000029,0x0004003d,0x00000006, - 0x0000002a,0x00000024,0x00050041,0x0000001c,0x0000002c,0x0000001a,0x0000002b,0x0004003d, - 0x00000006,0x0000002d,0x0000002c,0x000500b1,0x0000001f,0x0000002e,0x0000002a,0x0000002d, - 0x000400fa,0x0000002e,0x00000026,0x00000027,0x000200f8,0x00000026,0x0004003d,0x00000006, - 0x00000034,0x00000024,0x00060041,0x00000035,0x00000036,0x00000033,0x0000001b,0x00000034, - 0x0004003d,0x00000006,0x00000037,0x00000036,0x0003003e,0x0000002f,0x00000037,0x0004003d, - 0x00000006,0x00000038,0x00000022,0x0004003d,0x00000006,0x0000003d,0x00000024,0x00060041, - 0x00000035,0x0000003e,0x0000003c,0x0000001b,0x0000003d,0x0004003d,0x00000006,0x0000003f, - 0x0000003e,0x00050087,0x00000006,0x00000040,0x00000038,0x0000003f,0x0004003d,0x00000006, - 0x00000045,0x0000002f,0x00060041,0x00000035,0x00000046,0x00000044,0x0000001b,0x00000045, - 0x0004003d,0x00000006,0x00000047,0x00000046,0x00050084,0x00000006,0x00000048,0x00000040, - 0x00000047,0x0004003d,0x00000006,0x00000049,0x00000021,0x00050080,0x00000006,0x0000004a, - 0x00000049,0x00000048,0x0003003e,0x00000021,0x0000004a,0x0004003d,0x00000006,0x0000004b, - 0x00000024,0x00060041,0x00000035,0x0000004c,0x0000003c,0x0000001b,0x0000004b,0x0004003d, - 0x00000006,0x0000004d,0x0000004c,0x0004003d,0x00000006,0x0000004e,0x00000022,0x0005008b, - 0x00000006,0x0000004f,0x0000004e,0x0000004d,0x0003003e,0x00000022,0x0000004f,0x000200f9, - 0x00000028,0x000200f8,0x00000028,0x0004003d,0x00000006,0x00000050,0x00000024,0x00050080, - 0x00000006,0x00000051,0x00000050,0x0000002b,0x0003003e,0x00000024,0x00000051,0x000200f9, - 0x00000025,0x000200f8,0x00000027,0x0004003d,0x00000006,0x00000057,0x00000008,0x0004003d, - 0x00000006,0x0000005c,0x00000021,0x00060041,0x0000005d,0x0000005e,0x0000005b,0x0000001b, - 0x0000005c,0x0004003d,0x00000052,0x0000005f,0x0000005e,0x00060041,0x0000005d,0x00000060, - 0x00000056,0x0000001b,0x00000057,0x0003003e,0x00000060,0x0000005f,0x000200f9,0x00000015, - 0x000200f8,0x00000015,0x00050041,0x0000001c,0x00000062,0x0000001a,0x00000061,0x0004003d, - 0x00000006,0x00000063,0x00000062,0x0004003d,0x00000006,0x00000064,0x00000008,0x00050080, - 0x00000006,0x00000065,0x00000064,0x00000063,0x0003003e,0x00000008,0x00000065,0x000200f9, - 0x00000012,0x000200f8,0x00000014,0x000100fd,0x00010038 -}; - -}}} // namespace cv::dnn::vkcom diff --git a/modules/dnn/src/vkcom/shader/prior_box.comp b/modules/dnn/src/vkcom/shader/prior_box.comp deleted file mode 100644 index dfb378177a..0000000000 --- a/modules/dnn/src/vkcom/shader/prior_box.comp +++ /dev/null @@ -1,78 +0,0 @@ -#version 450 -#define LOCAL_SZ_X 256 - -layout(push_constant) uniform pushBlock { - int global_size; - int nthreads; - float step_x; - float step_y; - int offset_x_size; - int width_size; - int layer_w; - int image_h; - int image_w; - int clip; - int variance_off; -} p; - -layout(binding = 0) readonly buffer Input0{ - float offset_x[]; -}; -layout(binding = 1) readonly buffer Input1{ - float offset_y[]; -}; -layout(binding = 2) readonly buffer Input2{ - float widths[]; -}; -layout(binding = 3) readonly buffer Input3{ - float heights[]; -}; -layout(binding = 4) readonly buffer Input4{ - vec4 variance[]; -}; -layout(binding = 5) writeonly buffer Output{ - vec4 out_buffer[]; -}; - -layout(local_size_x = LOCAL_SZ_X, local_size_y = 1, local_size_z = 1) in; - -void main() -{ - for (int index = int(gl_GlobalInvocationID.x); index < p.nthreads; index += p.global_size) - { - int w = index % p.layer_w; - int h = index / p.layer_w; - int output_offset = index * p.offset_x_size * p.width_size; - - float box_w, box_h; - vec4 outer; - for (int i = 0; i < p.width_size; ++i) - { - box_w = widths[i]; - box_h = heights[i]; - for (int j = 0; j < p.offset_x_size; ++j) - { - float center_x = (w + offset_x[j]) * p.step_x; - float center_y = (h + offset_y[j]) * p.step_y; - - outer.x = (center_x - box_w * 0.5f) / p.image_w; // xmin - outer.y = (center_y - box_h * 0.5f) / p.image_h; // ymin - outer.z = (center_x + box_w * 0.5f) / p.image_w; // xmax - outer.w = (center_y + box_h * 0.5f) / p.image_h; // ymax - - // clip - if (p.clip == 1) - { - vec4 start = vec4(0.f, 0.f, 0.f, 0.f); - vec4 end = vec4(1.f, 1.f, 1.f, 1.f); - outer = min(max(outer, start), end); - } - - //set variance - out_buffer[p.variance_off + output_offset] = variance[0]; - out_buffer[output_offset] = outer; - output_offset++; - } - } - } -} diff --git a/modules/dnn/src/vkcom/shader/prior_box_spv.cpp b/modules/dnn/src/vkcom/shader/prior_box_spv.cpp deleted file mode 100644 index 9d988c67b9..0000000000 --- a/modules/dnn/src/vkcom/shader/prior_box_spv.cpp +++ /dev/null @@ -1,200 +0,0 @@ -// This file is part of OpenCV project. -// It is subject to the license terms in the LICENSE file found in the top-level directory -// of this distribution and at http://opencv.org/license.html. -// -// Copyright (C) 2018, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. - -#include "../../precomp.hpp" - -namespace cv { namespace dnn { namespace vkcom { - -extern const unsigned int prior_box_spv[1480] = { - 0x07230203,0x00010000,0x00080001,0x000000db,0x00000000,0x00020011,0x00000001,0x0006000b, - 0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001, - 0x0006000f,0x00000005,0x00000004,0x6e69616d,0x00000000,0x0000000c,0x00060010,0x00000004, - 0x00000011,0x00000100,0x00000001,0x00000001,0x00030003,0x00000002,0x000001c2,0x00040005, - 0x00000004,0x6e69616d,0x00000000,0x00040005,0x00000008,0x65646e69,0x00000078,0x00080005, - 0x0000000c,0x475f6c67,0x61626f6c,0x766e496c,0x7461636f,0x496e6f69,0x00000044,0x00050005, - 0x00000019,0x68737570,0x636f6c42,0x0000006b,0x00060006,0x00000019,0x00000000,0x626f6c67, - 0x735f6c61,0x00657a69,0x00060006,0x00000019,0x00000001,0x7268746e,0x73646165,0x00000000, - 0x00050006,0x00000019,0x00000002,0x70657473,0x0000785f,0x00050006,0x00000019,0x00000003, - 0x70657473,0x0000795f,0x00070006,0x00000019,0x00000004,0x7366666f,0x785f7465,0x7a69735f, - 0x00000065,0x00060006,0x00000019,0x00000005,0x74646977,0x69735f68,0x0000657a,0x00050006, - 0x00000019,0x00000006,0x6579616c,0x00775f72,0x00050006,0x00000019,0x00000007,0x67616d69, - 0x00685f65,0x00050006,0x00000019,0x00000008,0x67616d69,0x00775f65,0x00050006,0x00000019, - 0x00000009,0x70696c63,0x00000000,0x00070006,0x00000019,0x0000000a,0x69726176,0x65636e61, - 0x66666f5f,0x00000000,0x00030005,0x0000001b,0x00000070,0x00030005,0x00000022,0x00000077, - 0x00030005,0x00000028,0x00000068,0x00060005,0x0000002d,0x7074756f,0x6f5f7475,0x65736666, - 0x00000074,0x00030005,0x00000037,0x00000069,0x00040005,0x00000043,0x5f786f62,0x00000077, - 0x00040005,0x00000045,0x75706e49,0x00003274,0x00050006,0x00000045,0x00000000,0x74646977, - 0x00007368,0x00030005,0x00000047,0x00000000,0x00040005,0x0000004c,0x5f786f62,0x00000068, - 0x00040005,0x0000004e,0x75706e49,0x00003374,0x00050006,0x0000004e,0x00000000,0x67696568, - 0x00737468,0x00030005,0x00000050,0x00000000,0x00030005,0x00000054,0x0000006a,0x00050005, - 0x0000005e,0x746e6563,0x785f7265,0x00000000,0x00040005,0x00000062,0x75706e49,0x00003074, - 0x00060006,0x00000062,0x00000000,0x7366666f,0x785f7465,0x00000000,0x00030005,0x00000064, - 0x00000000,0x00050005,0x0000006e,0x746e6563,0x795f7265,0x00000000,0x00040005,0x00000072, - 0x75706e49,0x00003174,0x00060006,0x00000072,0x00000000,0x7366666f,0x795f7465,0x00000000, - 0x00030005,0x00000074,0x00000000,0x00040005,0x0000007f,0x6574756f,0x00000072,0x00040005, - 0x000000b0,0x72617473,0x00000074,0x00030005,0x000000b3,0x00646e65,0x00040005,0x000000bc, - 0x7074754f,0x00007475,0x00060006,0x000000bc,0x00000000,0x5f74756f,0x66667562,0x00007265, - 0x00030005,0x000000be,0x00000000,0x00040005,0x000000c5,0x75706e49,0x00003474,0x00060006, - 0x000000c5,0x00000000,0x69726176,0x65636e61,0x00000000,0x00030005,0x000000c7,0x00000000, - 0x00040047,0x0000000c,0x0000000b,0x0000001c,0x00050048,0x00000019,0x00000000,0x00000023, - 0x00000000,0x00050048,0x00000019,0x00000001,0x00000023,0x00000004,0x00050048,0x00000019, - 0x00000002,0x00000023,0x00000008,0x00050048,0x00000019,0x00000003,0x00000023,0x0000000c, - 0x00050048,0x00000019,0x00000004,0x00000023,0x00000010,0x00050048,0x00000019,0x00000005, - 0x00000023,0x00000014,0x00050048,0x00000019,0x00000006,0x00000023,0x00000018,0x00050048, - 0x00000019,0x00000007,0x00000023,0x0000001c,0x00050048,0x00000019,0x00000008,0x00000023, - 0x00000020,0x00050048,0x00000019,0x00000009,0x00000023,0x00000024,0x00050048,0x00000019, - 0x0000000a,0x00000023,0x00000028,0x00030047,0x00000019,0x00000002,0x00040047,0x00000044, - 0x00000006,0x00000004,0x00040048,0x00000045,0x00000000,0x00000018,0x00050048,0x00000045, - 0x00000000,0x00000023,0x00000000,0x00030047,0x00000045,0x00000003,0x00040047,0x00000047, - 0x00000022,0x00000000,0x00040047,0x00000047,0x00000021,0x00000002,0x00040047,0x0000004d, - 0x00000006,0x00000004,0x00040048,0x0000004e,0x00000000,0x00000018,0x00050048,0x0000004e, - 0x00000000,0x00000023,0x00000000,0x00030047,0x0000004e,0x00000003,0x00040047,0x00000050, - 0x00000022,0x00000000,0x00040047,0x00000050,0x00000021,0x00000003,0x00040047,0x00000061, - 0x00000006,0x00000004,0x00040048,0x00000062,0x00000000,0x00000018,0x00050048,0x00000062, - 0x00000000,0x00000023,0x00000000,0x00030047,0x00000062,0x00000003,0x00040047,0x00000064, - 0x00000022,0x00000000,0x00040047,0x00000064,0x00000021,0x00000000,0x00040047,0x00000071, - 0x00000006,0x00000004,0x00040048,0x00000072,0x00000000,0x00000018,0x00050048,0x00000072, - 0x00000000,0x00000023,0x00000000,0x00030047,0x00000072,0x00000003,0x00040047,0x00000074, - 0x00000022,0x00000000,0x00040047,0x00000074,0x00000021,0x00000001,0x00040047,0x000000bb, - 0x00000006,0x00000010,0x00040048,0x000000bc,0x00000000,0x00000019,0x00050048,0x000000bc, - 0x00000000,0x00000023,0x00000000,0x00030047,0x000000bc,0x00000003,0x00040047,0x000000be, - 0x00000022,0x00000000,0x00040047,0x000000be,0x00000021,0x00000005,0x00040047,0x000000c4, - 0x00000006,0x00000010,0x00040048,0x000000c5,0x00000000,0x00000018,0x00050048,0x000000c5, - 0x00000000,0x00000023,0x00000000,0x00030047,0x000000c5,0x00000003,0x00040047,0x000000c7, - 0x00000022,0x00000000,0x00040047,0x000000c7,0x00000021,0x00000004,0x00040047,0x000000da, - 0x0000000b,0x00000019,0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,0x00040015, - 0x00000006,0x00000020,0x00000001,0x00040020,0x00000007,0x00000007,0x00000006,0x00040015, - 0x00000009,0x00000020,0x00000000,0x00040017,0x0000000a,0x00000009,0x00000003,0x00040020, - 0x0000000b,0x00000001,0x0000000a,0x0004003b,0x0000000b,0x0000000c,0x00000001,0x0004002b, - 0x00000009,0x0000000d,0x00000000,0x00040020,0x0000000e,0x00000001,0x00000009,0x00030016, - 0x00000018,0x00000020,0x000d001e,0x00000019,0x00000006,0x00000006,0x00000018,0x00000018, - 0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00000006,0x00040020, - 0x0000001a,0x00000009,0x00000019,0x0004003b,0x0000001a,0x0000001b,0x00000009,0x0004002b, - 0x00000006,0x0000001c,0x00000001,0x00040020,0x0000001d,0x00000009,0x00000006,0x00020014, - 0x00000020,0x0004002b,0x00000006,0x00000024,0x00000006,0x0004002b,0x00000006,0x0000002f, - 0x00000004,0x0004002b,0x00000006,0x00000033,0x00000005,0x0004002b,0x00000006,0x00000038, - 0x00000000,0x00040020,0x00000042,0x00000007,0x00000018,0x0003001d,0x00000044,0x00000018, - 0x0003001e,0x00000045,0x00000044,0x00040020,0x00000046,0x00000002,0x00000045,0x0004003b, - 0x00000046,0x00000047,0x00000002,0x00040020,0x00000049,0x00000002,0x00000018,0x0003001d, - 0x0000004d,0x00000018,0x0003001e,0x0000004e,0x0000004d,0x00040020,0x0000004f,0x00000002, - 0x0000004e,0x0004003b,0x0000004f,0x00000050,0x00000002,0x0003001d,0x00000061,0x00000018, - 0x0003001e,0x00000062,0x00000061,0x00040020,0x00000063,0x00000002,0x00000062,0x0004003b, - 0x00000063,0x00000064,0x00000002,0x0004002b,0x00000006,0x00000069,0x00000002,0x00040020, - 0x0000006a,0x00000009,0x00000018,0x0003001d,0x00000071,0x00000018,0x0003001e,0x00000072, - 0x00000071,0x00040020,0x00000073,0x00000002,0x00000072,0x0004003b,0x00000073,0x00000074, - 0x00000002,0x0004002b,0x00000006,0x00000079,0x00000003,0x00040017,0x0000007d,0x00000018, - 0x00000004,0x00040020,0x0000007e,0x00000007,0x0000007d,0x0004002b,0x00000018,0x00000082, - 0x3f000000,0x0004002b,0x00000006,0x00000085,0x00000008,0x0004002b,0x00000006,0x0000008f, - 0x00000007,0x0004002b,0x00000009,0x00000094,0x00000001,0x0004002b,0x00000009,0x0000009e, - 0x00000002,0x0004002b,0x00000009,0x000000a8,0x00000003,0x0004002b,0x00000006,0x000000aa, - 0x00000009,0x0004002b,0x00000018,0x000000b1,0x00000000,0x0007002c,0x0000007d,0x000000b2, - 0x000000b1,0x000000b1,0x000000b1,0x000000b1,0x0004002b,0x00000018,0x000000b4,0x3f800000, - 0x0007002c,0x0000007d,0x000000b5,0x000000b4,0x000000b4,0x000000b4,0x000000b4,0x0003001d, - 0x000000bb,0x0000007d,0x0003001e,0x000000bc,0x000000bb,0x00040020,0x000000bd,0x00000002, - 0x000000bc,0x0004003b,0x000000bd,0x000000be,0x00000002,0x0004002b,0x00000006,0x000000bf, - 0x0000000a,0x0003001d,0x000000c4,0x0000007d,0x0003001e,0x000000c5,0x000000c4,0x00040020, - 0x000000c6,0x00000002,0x000000c5,0x0004003b,0x000000c6,0x000000c7,0x00000002,0x00040020, - 0x000000c8,0x00000002,0x0000007d,0x0004002b,0x00000009,0x000000d9,0x00000100,0x0006002c, - 0x0000000a,0x000000da,0x000000d9,0x00000094,0x00000094,0x00050036,0x00000002,0x00000004, - 0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000007,0x00000008,0x00000007, - 0x0004003b,0x00000007,0x00000022,0x00000007,0x0004003b,0x00000007,0x00000028,0x00000007, - 0x0004003b,0x00000007,0x0000002d,0x00000007,0x0004003b,0x00000007,0x00000037,0x00000007, - 0x0004003b,0x00000042,0x00000043,0x00000007,0x0004003b,0x00000042,0x0000004c,0x00000007, - 0x0004003b,0x00000007,0x00000054,0x00000007,0x0004003b,0x00000042,0x0000005e,0x00000007, - 0x0004003b,0x00000042,0x0000006e,0x00000007,0x0004003b,0x0000007e,0x0000007f,0x00000007, - 0x0004003b,0x0000007e,0x000000b0,0x00000007,0x0004003b,0x0000007e,0x000000b3,0x00000007, - 0x00050041,0x0000000e,0x0000000f,0x0000000c,0x0000000d,0x0004003d,0x00000009,0x00000010, - 0x0000000f,0x0004007c,0x00000006,0x00000011,0x00000010,0x0003003e,0x00000008,0x00000011, - 0x000200f9,0x00000012,0x000200f8,0x00000012,0x000400f6,0x00000014,0x00000015,0x00000000, - 0x000200f9,0x00000016,0x000200f8,0x00000016,0x0004003d,0x00000006,0x00000017,0x00000008, - 0x00050041,0x0000001d,0x0000001e,0x0000001b,0x0000001c,0x0004003d,0x00000006,0x0000001f, - 0x0000001e,0x000500b1,0x00000020,0x00000021,0x00000017,0x0000001f,0x000400fa,0x00000021, - 0x00000013,0x00000014,0x000200f8,0x00000013,0x0004003d,0x00000006,0x00000023,0x00000008, - 0x00050041,0x0000001d,0x00000025,0x0000001b,0x00000024,0x0004003d,0x00000006,0x00000026, - 0x00000025,0x0005008b,0x00000006,0x00000027,0x00000023,0x00000026,0x0003003e,0x00000022, - 0x00000027,0x0004003d,0x00000006,0x00000029,0x00000008,0x00050041,0x0000001d,0x0000002a, - 0x0000001b,0x00000024,0x0004003d,0x00000006,0x0000002b,0x0000002a,0x00050087,0x00000006, - 0x0000002c,0x00000029,0x0000002b,0x0003003e,0x00000028,0x0000002c,0x0004003d,0x00000006, - 0x0000002e,0x00000008,0x00050041,0x0000001d,0x00000030,0x0000001b,0x0000002f,0x0004003d, - 0x00000006,0x00000031,0x00000030,0x00050084,0x00000006,0x00000032,0x0000002e,0x00000031, - 0x00050041,0x0000001d,0x00000034,0x0000001b,0x00000033,0x0004003d,0x00000006,0x00000035, - 0x00000034,0x00050084,0x00000006,0x00000036,0x00000032,0x00000035,0x0003003e,0x0000002d, - 0x00000036,0x0003003e,0x00000037,0x00000038,0x000200f9,0x00000039,0x000200f8,0x00000039, - 0x000400f6,0x0000003b,0x0000003c,0x00000000,0x000200f9,0x0000003d,0x000200f8,0x0000003d, - 0x0004003d,0x00000006,0x0000003e,0x00000037,0x00050041,0x0000001d,0x0000003f,0x0000001b, - 0x00000033,0x0004003d,0x00000006,0x00000040,0x0000003f,0x000500b1,0x00000020,0x00000041, - 0x0000003e,0x00000040,0x000400fa,0x00000041,0x0000003a,0x0000003b,0x000200f8,0x0000003a, - 0x0004003d,0x00000006,0x00000048,0x00000037,0x00060041,0x00000049,0x0000004a,0x00000047, - 0x00000038,0x00000048,0x0004003d,0x00000018,0x0000004b,0x0000004a,0x0003003e,0x00000043, - 0x0000004b,0x0004003d,0x00000006,0x00000051,0x00000037,0x00060041,0x00000049,0x00000052, - 0x00000050,0x00000038,0x00000051,0x0004003d,0x00000018,0x00000053,0x00000052,0x0003003e, - 0x0000004c,0x00000053,0x0003003e,0x00000054,0x00000038,0x000200f9,0x00000055,0x000200f8, - 0x00000055,0x000400f6,0x00000057,0x00000058,0x00000000,0x000200f9,0x00000059,0x000200f8, - 0x00000059,0x0004003d,0x00000006,0x0000005a,0x00000054,0x00050041,0x0000001d,0x0000005b, - 0x0000001b,0x0000002f,0x0004003d,0x00000006,0x0000005c,0x0000005b,0x000500b1,0x00000020, - 0x0000005d,0x0000005a,0x0000005c,0x000400fa,0x0000005d,0x00000056,0x00000057,0x000200f8, - 0x00000056,0x0004003d,0x00000006,0x0000005f,0x00000022,0x0004006f,0x00000018,0x00000060, - 0x0000005f,0x0004003d,0x00000006,0x00000065,0x00000054,0x00060041,0x00000049,0x00000066, - 0x00000064,0x00000038,0x00000065,0x0004003d,0x00000018,0x00000067,0x00000066,0x00050081, - 0x00000018,0x00000068,0x00000060,0x00000067,0x00050041,0x0000006a,0x0000006b,0x0000001b, - 0x00000069,0x0004003d,0x00000018,0x0000006c,0x0000006b,0x00050085,0x00000018,0x0000006d, - 0x00000068,0x0000006c,0x0003003e,0x0000005e,0x0000006d,0x0004003d,0x00000006,0x0000006f, - 0x00000028,0x0004006f,0x00000018,0x00000070,0x0000006f,0x0004003d,0x00000006,0x00000075, - 0x00000054,0x00060041,0x00000049,0x00000076,0x00000074,0x00000038,0x00000075,0x0004003d, - 0x00000018,0x00000077,0x00000076,0x00050081,0x00000018,0x00000078,0x00000070,0x00000077, - 0x00050041,0x0000006a,0x0000007a,0x0000001b,0x00000079,0x0004003d,0x00000018,0x0000007b, - 0x0000007a,0x00050085,0x00000018,0x0000007c,0x00000078,0x0000007b,0x0003003e,0x0000006e, - 0x0000007c,0x0004003d,0x00000018,0x00000080,0x0000005e,0x0004003d,0x00000018,0x00000081, - 0x00000043,0x00050085,0x00000018,0x00000083,0x00000081,0x00000082,0x00050083,0x00000018, - 0x00000084,0x00000080,0x00000083,0x00050041,0x0000001d,0x00000086,0x0000001b,0x00000085, - 0x0004003d,0x00000006,0x00000087,0x00000086,0x0004006f,0x00000018,0x00000088,0x00000087, - 0x00050088,0x00000018,0x00000089,0x00000084,0x00000088,0x00050041,0x00000042,0x0000008a, - 0x0000007f,0x0000000d,0x0003003e,0x0000008a,0x00000089,0x0004003d,0x00000018,0x0000008b, - 0x0000006e,0x0004003d,0x00000018,0x0000008c,0x0000004c,0x00050085,0x00000018,0x0000008d, - 0x0000008c,0x00000082,0x00050083,0x00000018,0x0000008e,0x0000008b,0x0000008d,0x00050041, - 0x0000001d,0x00000090,0x0000001b,0x0000008f,0x0004003d,0x00000006,0x00000091,0x00000090, - 0x0004006f,0x00000018,0x00000092,0x00000091,0x00050088,0x00000018,0x00000093,0x0000008e, - 0x00000092,0x00050041,0x00000042,0x00000095,0x0000007f,0x00000094,0x0003003e,0x00000095, - 0x00000093,0x0004003d,0x00000018,0x00000096,0x0000005e,0x0004003d,0x00000018,0x00000097, - 0x00000043,0x00050085,0x00000018,0x00000098,0x00000097,0x00000082,0x00050081,0x00000018, - 0x00000099,0x00000096,0x00000098,0x00050041,0x0000001d,0x0000009a,0x0000001b,0x00000085, - 0x0004003d,0x00000006,0x0000009b,0x0000009a,0x0004006f,0x00000018,0x0000009c,0x0000009b, - 0x00050088,0x00000018,0x0000009d,0x00000099,0x0000009c,0x00050041,0x00000042,0x0000009f, - 0x0000007f,0x0000009e,0x0003003e,0x0000009f,0x0000009d,0x0004003d,0x00000018,0x000000a0, - 0x0000006e,0x0004003d,0x00000018,0x000000a1,0x0000004c,0x00050085,0x00000018,0x000000a2, - 0x000000a1,0x00000082,0x00050081,0x00000018,0x000000a3,0x000000a0,0x000000a2,0x00050041, - 0x0000001d,0x000000a4,0x0000001b,0x0000008f,0x0004003d,0x00000006,0x000000a5,0x000000a4, - 0x0004006f,0x00000018,0x000000a6,0x000000a5,0x00050088,0x00000018,0x000000a7,0x000000a3, - 0x000000a6,0x00050041,0x00000042,0x000000a9,0x0000007f,0x000000a8,0x0003003e,0x000000a9, - 0x000000a7,0x00050041,0x0000001d,0x000000ab,0x0000001b,0x000000aa,0x0004003d,0x00000006, - 0x000000ac,0x000000ab,0x000500aa,0x00000020,0x000000ad,0x000000ac,0x0000001c,0x000300f7, - 0x000000af,0x00000000,0x000400fa,0x000000ad,0x000000ae,0x000000af,0x000200f8,0x000000ae, - 0x0003003e,0x000000b0,0x000000b2,0x0003003e,0x000000b3,0x000000b5,0x0004003d,0x0000007d, - 0x000000b6,0x0000007f,0x0004003d,0x0000007d,0x000000b7,0x000000b0,0x0007000c,0x0000007d, - 0x000000b8,0x00000001,0x00000028,0x000000b6,0x000000b7,0x0004003d,0x0000007d,0x000000b9, - 0x000000b3,0x0007000c,0x0000007d,0x000000ba,0x00000001,0x00000025,0x000000b8,0x000000b9, - 0x0003003e,0x0000007f,0x000000ba,0x000200f9,0x000000af,0x000200f8,0x000000af,0x00050041, - 0x0000001d,0x000000c0,0x0000001b,0x000000bf,0x0004003d,0x00000006,0x000000c1,0x000000c0, - 0x0004003d,0x00000006,0x000000c2,0x0000002d,0x00050080,0x00000006,0x000000c3,0x000000c1, - 0x000000c2,0x00060041,0x000000c8,0x000000c9,0x000000c7,0x00000038,0x00000038,0x0004003d, - 0x0000007d,0x000000ca,0x000000c9,0x00060041,0x000000c8,0x000000cb,0x000000be,0x00000038, - 0x000000c3,0x0003003e,0x000000cb,0x000000ca,0x0004003d,0x00000006,0x000000cc,0x0000002d, - 0x0004003d,0x0000007d,0x000000cd,0x0000007f,0x00060041,0x000000c8,0x000000ce,0x000000be, - 0x00000038,0x000000cc,0x0003003e,0x000000ce,0x000000cd,0x0004003d,0x00000006,0x000000cf, - 0x0000002d,0x00050080,0x00000006,0x000000d0,0x000000cf,0x0000001c,0x0003003e,0x0000002d, - 0x000000d0,0x000200f9,0x00000058,0x000200f8,0x00000058,0x0004003d,0x00000006,0x000000d1, - 0x00000054,0x00050080,0x00000006,0x000000d2,0x000000d1,0x0000001c,0x0003003e,0x00000054, - 0x000000d2,0x000200f9,0x00000055,0x000200f8,0x00000057,0x000200f9,0x0000003c,0x000200f8, - 0x0000003c,0x0004003d,0x00000006,0x000000d3,0x00000037,0x00050080,0x00000006,0x000000d4, - 0x000000d3,0x0000001c,0x0003003e,0x00000037,0x000000d4,0x000200f9,0x00000039,0x000200f8, - 0x0000003b,0x000200f9,0x00000015,0x000200f8,0x00000015,0x00050041,0x0000001d,0x000000d5, - 0x0000001b,0x00000038,0x0004003d,0x00000006,0x000000d6,0x000000d5,0x0004003d,0x00000006, - 0x000000d7,0x00000008,0x00050080,0x00000006,0x000000d8,0x000000d7,0x000000d6,0x0003003e, - 0x00000008,0x000000d8,0x000200f9,0x00000012,0x000200f8,0x00000014,0x000100fd,0x00010038 -}; - -}}} // namespace cv::dnn::vkcom diff --git a/modules/dnn/src/vkcom/shader/relu.comp b/modules/dnn/src/vkcom/shader/relu.comp deleted file mode 100644 index e93f52675d..0000000000 --- a/modules/dnn/src/vkcom/shader/relu.comp +++ /dev/null @@ -1,24 +0,0 @@ -#version 450 -#define LOCAL_SZ_X 32 -layout(push_constant) uniform pushBlock { - int total; - float slope; -} p; - -layout(binding = 0) readonly buffer inbuf{ - float in_buffer[]; -}; - -layout(binding = 1) writeonly buffer outbuf{ - float out_buffer[]; -}; - -layout(local_size_x = LOCAL_SZ_X, local_size_y = 1, local_size_z = 1) in; -void main() -{ - for (int i = int(gl_GlobalInvocationID.x); i < p.total; i += int(gl_NumWorkGroups.x * gl_WorkGroupSize.x)) - { - float in_val = in_buffer[i]; - out_buffer[i] = in_val >= 0.f ? in_val : p.slope * in_val; - } -} diff --git a/modules/dnn/src/vkcom/shader/relu_spv.cpp b/modules/dnn/src/vkcom/shader/relu_spv.cpp deleted file mode 100644 index 0e7884a928..0000000000 --- a/modules/dnn/src/vkcom/shader/relu_spv.cpp +++ /dev/null @@ -1,78 +0,0 @@ -// This file is part of OpenCV project. -// It is subject to the license terms in the LICENSE file found in the top-level directory -// of this distribution and at http://opencv.org/license.html. -// -// Copyright (C) 2018, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. - -#include "../../precomp.hpp" - -namespace cv { namespace dnn { namespace vkcom { - -extern const unsigned int relu_spv[502] = { - 0x07230203,0x00010000,0x00080001,0x0000004b,0x00000000,0x00020011,0x00000001,0x0006000b, - 0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001, - 0x0007000f,0x00000005,0x00000004,0x6e69616d,0x00000000,0x0000000c,0x00000041,0x00060010, - 0x00000004,0x00000011,0x00000020,0x00000001,0x00000001,0x00030003,0x00000002,0x000001c2, - 0x00040005,0x00000004,0x6e69616d,0x00000000,0x00030005,0x00000008,0x00000069,0x00080005, - 0x0000000c,0x475f6c67,0x61626f6c,0x766e496c,0x7461636f,0x496e6f69,0x00000044,0x00050005, - 0x00000019,0x68737570,0x636f6c42,0x0000006b,0x00050006,0x00000019,0x00000000,0x61746f74, - 0x0000006c,0x00050006,0x00000019,0x00000001,0x706f6c73,0x00000065,0x00030005,0x0000001b, - 0x00000070,0x00040005,0x00000023,0x765f6e69,0x00006c61,0x00040005,0x00000025,0x75626e69, - 0x00000066,0x00060006,0x00000025,0x00000000,0x625f6e69,0x65666675,0x00000072,0x00030005, - 0x00000027,0x00000000,0x00040005,0x0000002d,0x6274756f,0x00006675,0x00060006,0x0000002d, - 0x00000000,0x5f74756f,0x66667562,0x00007265,0x00030005,0x0000002f,0x00000000,0x00070005, - 0x00000041,0x4e5f6c67,0x6f576d75,0x72476b72,0x7370756f,0x00000000,0x00040047,0x0000000c, - 0x0000000b,0x0000001c,0x00050048,0x00000019,0x00000000,0x00000023,0x00000000,0x00050048, - 0x00000019,0x00000001,0x00000023,0x00000004,0x00030047,0x00000019,0x00000002,0x00040047, - 0x00000024,0x00000006,0x00000004,0x00040048,0x00000025,0x00000000,0x00000018,0x00050048, - 0x00000025,0x00000000,0x00000023,0x00000000,0x00030047,0x00000025,0x00000003,0x00040047, - 0x00000027,0x00000022,0x00000000,0x00040047,0x00000027,0x00000021,0x00000000,0x00040047, - 0x0000002c,0x00000006,0x00000004,0x00040048,0x0000002d,0x00000000,0x00000019,0x00050048, - 0x0000002d,0x00000000,0x00000023,0x00000000,0x00030047,0x0000002d,0x00000003,0x00040047, - 0x0000002f,0x00000022,0x00000000,0x00040047,0x0000002f,0x00000021,0x00000001,0x00040047, - 0x00000041,0x0000000b,0x00000018,0x00040047,0x0000004a,0x0000000b,0x00000019,0x00020013, - 0x00000002,0x00030021,0x00000003,0x00000002,0x00040015,0x00000006,0x00000020,0x00000001, - 0x00040020,0x00000007,0x00000007,0x00000006,0x00040015,0x00000009,0x00000020,0x00000000, - 0x00040017,0x0000000a,0x00000009,0x00000003,0x00040020,0x0000000b,0x00000001,0x0000000a, - 0x0004003b,0x0000000b,0x0000000c,0x00000001,0x0004002b,0x00000009,0x0000000d,0x00000000, - 0x00040020,0x0000000e,0x00000001,0x00000009,0x00030016,0x00000018,0x00000020,0x0004001e, - 0x00000019,0x00000006,0x00000018,0x00040020,0x0000001a,0x00000009,0x00000019,0x0004003b, - 0x0000001a,0x0000001b,0x00000009,0x0004002b,0x00000006,0x0000001c,0x00000000,0x00040020, - 0x0000001d,0x00000009,0x00000006,0x00020014,0x00000020,0x00040020,0x00000022,0x00000007, - 0x00000018,0x0003001d,0x00000024,0x00000018,0x0003001e,0x00000025,0x00000024,0x00040020, - 0x00000026,0x00000002,0x00000025,0x0004003b,0x00000026,0x00000027,0x00000002,0x00040020, - 0x00000029,0x00000002,0x00000018,0x0003001d,0x0000002c,0x00000018,0x0003001e,0x0000002d, - 0x0000002c,0x00040020,0x0000002e,0x00000002,0x0000002d,0x0004003b,0x0000002e,0x0000002f, - 0x00000002,0x0004002b,0x00000018,0x00000033,0x00000000,0x0004002b,0x00000006,0x00000039, - 0x00000001,0x00040020,0x0000003a,0x00000009,0x00000018,0x0004003b,0x0000000b,0x00000041, - 0x00000001,0x0004002b,0x00000009,0x00000044,0x00000020,0x0004002b,0x00000009,0x00000049, - 0x00000001,0x0006002c,0x0000000a,0x0000004a,0x00000044,0x00000049,0x00000049,0x00050036, - 0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000007, - 0x00000008,0x00000007,0x0004003b,0x00000022,0x00000023,0x00000007,0x0004003b,0x00000022, - 0x00000031,0x00000007,0x00050041,0x0000000e,0x0000000f,0x0000000c,0x0000000d,0x0004003d, - 0x00000009,0x00000010,0x0000000f,0x0004007c,0x00000006,0x00000011,0x00000010,0x0003003e, - 0x00000008,0x00000011,0x000200f9,0x00000012,0x000200f8,0x00000012,0x000400f6,0x00000014, - 0x00000015,0x00000000,0x000200f9,0x00000016,0x000200f8,0x00000016,0x0004003d,0x00000006, - 0x00000017,0x00000008,0x00050041,0x0000001d,0x0000001e,0x0000001b,0x0000001c,0x0004003d, - 0x00000006,0x0000001f,0x0000001e,0x000500b1,0x00000020,0x00000021,0x00000017,0x0000001f, - 0x000400fa,0x00000021,0x00000013,0x00000014,0x000200f8,0x00000013,0x0004003d,0x00000006, - 0x00000028,0x00000008,0x00060041,0x00000029,0x0000002a,0x00000027,0x0000001c,0x00000028, - 0x0004003d,0x00000018,0x0000002b,0x0000002a,0x0003003e,0x00000023,0x0000002b,0x0004003d, - 0x00000006,0x00000030,0x00000008,0x0004003d,0x00000018,0x00000032,0x00000023,0x000500be, - 0x00000020,0x00000034,0x00000032,0x00000033,0x000300f7,0x00000036,0x00000000,0x000400fa, - 0x00000034,0x00000035,0x00000038,0x000200f8,0x00000035,0x0004003d,0x00000018,0x00000037, - 0x00000023,0x0003003e,0x00000031,0x00000037,0x000200f9,0x00000036,0x000200f8,0x00000038, - 0x00050041,0x0000003a,0x0000003b,0x0000001b,0x00000039,0x0004003d,0x00000018,0x0000003c, - 0x0000003b,0x0004003d,0x00000018,0x0000003d,0x00000023,0x00050085,0x00000018,0x0000003e, - 0x0000003c,0x0000003d,0x0003003e,0x00000031,0x0000003e,0x000200f9,0x00000036,0x000200f8, - 0x00000036,0x0004003d,0x00000018,0x0000003f,0x00000031,0x00060041,0x00000029,0x00000040, - 0x0000002f,0x0000001c,0x00000030,0x0003003e,0x00000040,0x0000003f,0x000200f9,0x00000015, - 0x000200f8,0x00000015,0x00050041,0x0000000e,0x00000042,0x00000041,0x0000000d,0x0004003d, - 0x00000009,0x00000043,0x00000042,0x00050084,0x00000009,0x00000045,0x00000043,0x00000044, - 0x0004007c,0x00000006,0x00000046,0x00000045,0x0004003d,0x00000006,0x00000047,0x00000008, - 0x00050080,0x00000006,0x00000048,0x00000047,0x00000046,0x0003003e,0x00000008,0x00000048, - 0x000200f9,0x00000012,0x000200f8,0x00000014,0x000100fd,0x00010038 -}; - -}}} // namespace cv::dnn::vkcom diff --git a/modules/dnn/src/vkcom/shader/softmax.comp b/modules/dnn/src/vkcom/shader/softmax.comp deleted file mode 100644 index a9d94070d0..0000000000 --- a/modules/dnn/src/vkcom/shader/softmax.comp +++ /dev/null @@ -1,78 +0,0 @@ - -#version 450 -#define LOCAL_SZ_X 256 - -layout(binding = 0) readonly buffer buf0{ - float input_buffer[]; // outer_size * channels * channel_size -}; -layout(binding = 1) buffer buf1{ - float max_buffer[]; // outer_size * channel_size -}; -layout(binding = 2) buffer buf2{ - float sum_buffer[]; // outer_size * channel_size -}; -layout(binding = 3) buffer buf3{ - float output_buffer[]; // outer_size * channels * channel_size -}; -layout(push_constant) uniform pushBlock { - int channel_size; - int outer_size; - int channels; - int logsoftmax; -} p; -layout(local_size_x = LOCAL_SZ_X, local_size_y = 1, local_size_z = 1) in; - -void main() -{ - int gid = int(gl_GlobalInvocationID.x); - if (gid >= p.outer_size) return; - - int global_off = gid * p.channels * p.channel_size; - int reduced_buffer_off = gid * p.channel_size; - - // find the max along channel - int index = global_off; - for (int i = 0; i < p.channel_size; ++i) - { - max_buffer[reduced_buffer_off + i] = input_buffer[index]; - index++; - } - for (int c = 1; c < p.channels; ++c) - { - for (int i = 0; i < p.channel_size; ++i) - { - max_buffer[reduced_buffer_off + i] = max(max_buffer[reduced_buffer_off + i], input_buffer[index]); - index++; - } - } - - // subtract, exp and accumulate along channel - for (int i = 0; i < p.channel_size; ++i) - sum_buffer[reduced_buffer_off + i] = 0.f; - - index = global_off; - for (int c = 0; c < p.channels; ++c) - { - for (int i = 0; i < p.channel_size; ++i) - { - float exp_val = exp(input_buffer[index] - max_buffer[reduced_buffer_off + i]); - output_buffer[index] = exp_val; - sum_buffer[reduced_buffer_off + i] += exp_val; - index++; - } - } - - // divide by computed sum - index = global_off; - for (int c = 0; c < p.channels; ++c) - { - for (int i = 0; i < p.channel_size; ++i) - { - float v = output_buffer[index] / sum_buffer[reduced_buffer_off + i]; - if (p.logsoftmax == 1) - v = log(v); - output_buffer[index] = v; - index++; - } - } -} diff --git a/modules/dnn/src/vkcom/shader/softmax_spv.cpp b/modules/dnn/src/vkcom/shader/softmax_spv.cpp deleted file mode 100644 index f51dce5788..0000000000 --- a/modules/dnn/src/vkcom/shader/softmax_spv.cpp +++ /dev/null @@ -1,202 +0,0 @@ -// This file is part of OpenCV project. -// It is subject to the license terms in the LICENSE file found in the top-level directory -// of this distribution and at http://opencv.org/license.html. -// -// Copyright (C) 2018, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. - -#include "../../precomp.hpp" - -namespace cv { namespace dnn { namespace vkcom { - -extern const unsigned int softmax_spv[1496] = { - 0x07230203,0x00010000,0x00080001,0x000000f4,0x00000000,0x00020011,0x00000001,0x0006000b, - 0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001, - 0x0006000f,0x00000005,0x00000004,0x6e69616d,0x00000000,0x0000000c,0x00060010,0x00000004, - 0x00000011,0x00000100,0x00000001,0x00000001,0x00030003,0x00000002,0x000001c2,0x00040005, - 0x00000004,0x6e69616d,0x00000000,0x00030005,0x00000008,0x00646967,0x00080005,0x0000000c, - 0x475f6c67,0x61626f6c,0x766e496c,0x7461636f,0x496e6f69,0x00000044,0x00050005,0x00000013, - 0x68737570,0x636f6c42,0x0000006b,0x00070006,0x00000013,0x00000000,0x6e616863,0x5f6c656e, - 0x657a6973,0x00000000,0x00060006,0x00000013,0x00000001,0x6574756f,0x69735f72,0x0000657a, - 0x00060006,0x00000013,0x00000002,0x6e616863,0x736c656e,0x00000000,0x00060006,0x00000013, - 0x00000003,0x73676f6c,0x6d74666f,0x00007861,0x00030005,0x00000015,0x00000070,0x00050005, - 0x0000001f,0x626f6c67,0x6f5f6c61,0x00006666,0x00070005,0x00000029,0x75646572,0x5f646563, - 0x66667562,0x6f5f7265,0x00006666,0x00040005,0x0000002e,0x65646e69,0x00000078,0x00030005, - 0x00000030,0x00000069,0x00040005,0x0000003c,0x31667562,0x00000000,0x00060006,0x0000003c, - 0x00000000,0x5f78616d,0x66667562,0x00007265,0x00030005,0x0000003e,0x00000000,0x00040005, - 0x00000043,0x30667562,0x00000000,0x00070006,0x00000043,0x00000000,0x75706e69,0x75625f74, - 0x72656666,0x00000000,0x00030005,0x00000045,0x00000000,0x00030005,0x0000004f,0x00000063, - 0x00030005,0x00000059,0x00000069,0x00030005,0x00000076,0x00000069,0x00040005,0x00000081, - 0x32667562,0x00000000,0x00060006,0x00000081,0x00000000,0x5f6d7573,0x66667562,0x00007265, - 0x00030005,0x00000083,0x00000000,0x00030005,0x0000008c,0x00000063,0x00030005,0x00000096, - 0x00000069,0x00040005,0x000000a1,0x5f707865,0x006c6176,0x00040005,0x000000ad,0x33667562, - 0x00000000,0x00070006,0x000000ad,0x00000000,0x7074756f,0x625f7475,0x65666675,0x00000072, - 0x00030005,0x000000af,0x00000000,0x00030005,0x000000c2,0x00000063,0x00030005,0x000000cc, - 0x00000069,0x00030005,0x000000d6,0x00000076,0x00040047,0x0000000c,0x0000000b,0x0000001c, - 0x00050048,0x00000013,0x00000000,0x00000023,0x00000000,0x00050048,0x00000013,0x00000001, - 0x00000023,0x00000004,0x00050048,0x00000013,0x00000002,0x00000023,0x00000008,0x00050048, - 0x00000013,0x00000003,0x00000023,0x0000000c,0x00030047,0x00000013,0x00000002,0x00040047, - 0x0000003b,0x00000006,0x00000004,0x00050048,0x0000003c,0x00000000,0x00000023,0x00000000, - 0x00030047,0x0000003c,0x00000003,0x00040047,0x0000003e,0x00000022,0x00000000,0x00040047, - 0x0000003e,0x00000021,0x00000001,0x00040047,0x00000042,0x00000006,0x00000004,0x00040048, - 0x00000043,0x00000000,0x00000018,0x00050048,0x00000043,0x00000000,0x00000023,0x00000000, - 0x00030047,0x00000043,0x00000003,0x00040047,0x00000045,0x00000022,0x00000000,0x00040047, - 0x00000045,0x00000021,0x00000000,0x00040047,0x00000080,0x00000006,0x00000004,0x00050048, - 0x00000081,0x00000000,0x00000023,0x00000000,0x00030047,0x00000081,0x00000003,0x00040047, - 0x00000083,0x00000022,0x00000000,0x00040047,0x00000083,0x00000021,0x00000002,0x00040047, - 0x000000ac,0x00000006,0x00000004,0x00050048,0x000000ad,0x00000000,0x00000023,0x00000000, - 0x00030047,0x000000ad,0x00000003,0x00040047,0x000000af,0x00000022,0x00000000,0x00040047, - 0x000000af,0x00000021,0x00000003,0x00040047,0x000000f3,0x0000000b,0x00000019,0x00020013, - 0x00000002,0x00030021,0x00000003,0x00000002,0x00040015,0x00000006,0x00000020,0x00000001, - 0x00040020,0x00000007,0x00000007,0x00000006,0x00040015,0x00000009,0x00000020,0x00000000, - 0x00040017,0x0000000a,0x00000009,0x00000003,0x00040020,0x0000000b,0x00000001,0x0000000a, - 0x0004003b,0x0000000b,0x0000000c,0x00000001,0x0004002b,0x00000009,0x0000000d,0x00000000, - 0x00040020,0x0000000e,0x00000001,0x00000009,0x0006001e,0x00000013,0x00000006,0x00000006, - 0x00000006,0x00000006,0x00040020,0x00000014,0x00000009,0x00000013,0x0004003b,0x00000014, - 0x00000015,0x00000009,0x0004002b,0x00000006,0x00000016,0x00000001,0x00040020,0x00000017, - 0x00000009,0x00000006,0x00020014,0x0000001a,0x0004002b,0x00000006,0x00000021,0x00000002, - 0x0004002b,0x00000006,0x00000025,0x00000000,0x00030016,0x0000003a,0x00000020,0x0003001d, - 0x0000003b,0x0000003a,0x0003001e,0x0000003c,0x0000003b,0x00040020,0x0000003d,0x00000002, - 0x0000003c,0x0004003b,0x0000003d,0x0000003e,0x00000002,0x0003001d,0x00000042,0x0000003a, - 0x0003001e,0x00000043,0x00000042,0x00040020,0x00000044,0x00000002,0x00000043,0x0004003b, - 0x00000044,0x00000045,0x00000002,0x00040020,0x00000047,0x00000002,0x0000003a,0x0003001d, - 0x00000080,0x0000003a,0x0003001e,0x00000081,0x00000080,0x00040020,0x00000082,0x00000002, - 0x00000081,0x0004003b,0x00000082,0x00000083,0x00000002,0x0004002b,0x0000003a,0x00000087, - 0x00000000,0x00040020,0x000000a0,0x00000007,0x0000003a,0x0003001d,0x000000ac,0x0000003a, - 0x0003001e,0x000000ad,0x000000ac,0x00040020,0x000000ae,0x00000002,0x000000ad,0x0004003b, - 0x000000ae,0x000000af,0x00000002,0x0004002b,0x00000006,0x000000e0,0x00000003,0x0004002b, - 0x00000009,0x000000f1,0x00000100,0x0004002b,0x00000009,0x000000f2,0x00000001,0x0006002c, - 0x0000000a,0x000000f3,0x000000f1,0x000000f2,0x000000f2,0x00050036,0x00000002,0x00000004, - 0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000007,0x00000008,0x00000007, - 0x0004003b,0x00000007,0x0000001f,0x00000007,0x0004003b,0x00000007,0x00000029,0x00000007, - 0x0004003b,0x00000007,0x0000002e,0x00000007,0x0004003b,0x00000007,0x00000030,0x00000007, - 0x0004003b,0x00000007,0x0000004f,0x00000007,0x0004003b,0x00000007,0x00000059,0x00000007, - 0x0004003b,0x00000007,0x00000076,0x00000007,0x0004003b,0x00000007,0x0000008c,0x00000007, - 0x0004003b,0x00000007,0x00000096,0x00000007,0x0004003b,0x000000a0,0x000000a1,0x00000007, - 0x0004003b,0x00000007,0x000000c2,0x00000007,0x0004003b,0x00000007,0x000000cc,0x00000007, - 0x0004003b,0x000000a0,0x000000d6,0x00000007,0x00050041,0x0000000e,0x0000000f,0x0000000c, - 0x0000000d,0x0004003d,0x00000009,0x00000010,0x0000000f,0x0004007c,0x00000006,0x00000011, - 0x00000010,0x0003003e,0x00000008,0x00000011,0x0004003d,0x00000006,0x00000012,0x00000008, - 0x00050041,0x00000017,0x00000018,0x00000015,0x00000016,0x0004003d,0x00000006,0x00000019, - 0x00000018,0x000500af,0x0000001a,0x0000001b,0x00000012,0x00000019,0x000300f7,0x0000001d, - 0x00000000,0x000400fa,0x0000001b,0x0000001c,0x0000001d,0x000200f8,0x0000001c,0x000100fd, - 0x000200f8,0x0000001d,0x0004003d,0x00000006,0x00000020,0x00000008,0x00050041,0x00000017, - 0x00000022,0x00000015,0x00000021,0x0004003d,0x00000006,0x00000023,0x00000022,0x00050084, - 0x00000006,0x00000024,0x00000020,0x00000023,0x00050041,0x00000017,0x00000026,0x00000015, - 0x00000025,0x0004003d,0x00000006,0x00000027,0x00000026,0x00050084,0x00000006,0x00000028, - 0x00000024,0x00000027,0x0003003e,0x0000001f,0x00000028,0x0004003d,0x00000006,0x0000002a, - 0x00000008,0x00050041,0x00000017,0x0000002b,0x00000015,0x00000025,0x0004003d,0x00000006, - 0x0000002c,0x0000002b,0x00050084,0x00000006,0x0000002d,0x0000002a,0x0000002c,0x0003003e, - 0x00000029,0x0000002d,0x0004003d,0x00000006,0x0000002f,0x0000001f,0x0003003e,0x0000002e, - 0x0000002f,0x0003003e,0x00000030,0x00000025,0x000200f9,0x00000031,0x000200f8,0x00000031, - 0x000400f6,0x00000033,0x00000034,0x00000000,0x000200f9,0x00000035,0x000200f8,0x00000035, - 0x0004003d,0x00000006,0x00000036,0x00000030,0x00050041,0x00000017,0x00000037,0x00000015, - 0x00000025,0x0004003d,0x00000006,0x00000038,0x00000037,0x000500b1,0x0000001a,0x00000039, - 0x00000036,0x00000038,0x000400fa,0x00000039,0x00000032,0x00000033,0x000200f8,0x00000032, - 0x0004003d,0x00000006,0x0000003f,0x00000029,0x0004003d,0x00000006,0x00000040,0x00000030, - 0x00050080,0x00000006,0x00000041,0x0000003f,0x00000040,0x0004003d,0x00000006,0x00000046, - 0x0000002e,0x00060041,0x00000047,0x00000048,0x00000045,0x00000025,0x00000046,0x0004003d, - 0x0000003a,0x00000049,0x00000048,0x00060041,0x00000047,0x0000004a,0x0000003e,0x00000025, - 0x00000041,0x0003003e,0x0000004a,0x00000049,0x0004003d,0x00000006,0x0000004b,0x0000002e, - 0x00050080,0x00000006,0x0000004c,0x0000004b,0x00000016,0x0003003e,0x0000002e,0x0000004c, - 0x000200f9,0x00000034,0x000200f8,0x00000034,0x0004003d,0x00000006,0x0000004d,0x00000030, - 0x00050080,0x00000006,0x0000004e,0x0000004d,0x00000016,0x0003003e,0x00000030,0x0000004e, - 0x000200f9,0x00000031,0x000200f8,0x00000033,0x0003003e,0x0000004f,0x00000016,0x000200f9, - 0x00000050,0x000200f8,0x00000050,0x000400f6,0x00000052,0x00000053,0x00000000,0x000200f9, - 0x00000054,0x000200f8,0x00000054,0x0004003d,0x00000006,0x00000055,0x0000004f,0x00050041, - 0x00000017,0x00000056,0x00000015,0x00000021,0x0004003d,0x00000006,0x00000057,0x00000056, - 0x000500b1,0x0000001a,0x00000058,0x00000055,0x00000057,0x000400fa,0x00000058,0x00000051, - 0x00000052,0x000200f8,0x00000051,0x0003003e,0x00000059,0x00000025,0x000200f9,0x0000005a, - 0x000200f8,0x0000005a,0x000400f6,0x0000005c,0x0000005d,0x00000000,0x000200f9,0x0000005e, - 0x000200f8,0x0000005e,0x0004003d,0x00000006,0x0000005f,0x00000059,0x00050041,0x00000017, - 0x00000060,0x00000015,0x00000025,0x0004003d,0x00000006,0x00000061,0x00000060,0x000500b1, - 0x0000001a,0x00000062,0x0000005f,0x00000061,0x000400fa,0x00000062,0x0000005b,0x0000005c, - 0x000200f8,0x0000005b,0x0004003d,0x00000006,0x00000063,0x00000029,0x0004003d,0x00000006, - 0x00000064,0x00000059,0x00050080,0x00000006,0x00000065,0x00000063,0x00000064,0x0004003d, - 0x00000006,0x00000066,0x00000029,0x0004003d,0x00000006,0x00000067,0x00000059,0x00050080, - 0x00000006,0x00000068,0x00000066,0x00000067,0x00060041,0x00000047,0x00000069,0x0000003e, - 0x00000025,0x00000068,0x0004003d,0x0000003a,0x0000006a,0x00000069,0x0004003d,0x00000006, - 0x0000006b,0x0000002e,0x00060041,0x00000047,0x0000006c,0x00000045,0x00000025,0x0000006b, - 0x0004003d,0x0000003a,0x0000006d,0x0000006c,0x0007000c,0x0000003a,0x0000006e,0x00000001, - 0x00000028,0x0000006a,0x0000006d,0x00060041,0x00000047,0x0000006f,0x0000003e,0x00000025, - 0x00000065,0x0003003e,0x0000006f,0x0000006e,0x0004003d,0x00000006,0x00000070,0x0000002e, - 0x00050080,0x00000006,0x00000071,0x00000070,0x00000016,0x0003003e,0x0000002e,0x00000071, - 0x000200f9,0x0000005d,0x000200f8,0x0000005d,0x0004003d,0x00000006,0x00000072,0x00000059, - 0x00050080,0x00000006,0x00000073,0x00000072,0x00000016,0x0003003e,0x00000059,0x00000073, - 0x000200f9,0x0000005a,0x000200f8,0x0000005c,0x000200f9,0x00000053,0x000200f8,0x00000053, - 0x0004003d,0x00000006,0x00000074,0x0000004f,0x00050080,0x00000006,0x00000075,0x00000074, - 0x00000016,0x0003003e,0x0000004f,0x00000075,0x000200f9,0x00000050,0x000200f8,0x00000052, - 0x0003003e,0x00000076,0x00000025,0x000200f9,0x00000077,0x000200f8,0x00000077,0x000400f6, - 0x00000079,0x0000007a,0x00000000,0x000200f9,0x0000007b,0x000200f8,0x0000007b,0x0004003d, - 0x00000006,0x0000007c,0x00000076,0x00050041,0x00000017,0x0000007d,0x00000015,0x00000025, - 0x0004003d,0x00000006,0x0000007e,0x0000007d,0x000500b1,0x0000001a,0x0000007f,0x0000007c, - 0x0000007e,0x000400fa,0x0000007f,0x00000078,0x00000079,0x000200f8,0x00000078,0x0004003d, - 0x00000006,0x00000084,0x00000029,0x0004003d,0x00000006,0x00000085,0x00000076,0x00050080, - 0x00000006,0x00000086,0x00000084,0x00000085,0x00060041,0x00000047,0x00000088,0x00000083, - 0x00000025,0x00000086,0x0003003e,0x00000088,0x00000087,0x000200f9,0x0000007a,0x000200f8, - 0x0000007a,0x0004003d,0x00000006,0x00000089,0x00000076,0x00050080,0x00000006,0x0000008a, - 0x00000089,0x00000016,0x0003003e,0x00000076,0x0000008a,0x000200f9,0x00000077,0x000200f8, - 0x00000079,0x0004003d,0x00000006,0x0000008b,0x0000001f,0x0003003e,0x0000002e,0x0000008b, - 0x0003003e,0x0000008c,0x00000025,0x000200f9,0x0000008d,0x000200f8,0x0000008d,0x000400f6, - 0x0000008f,0x00000090,0x00000000,0x000200f9,0x00000091,0x000200f8,0x00000091,0x0004003d, - 0x00000006,0x00000092,0x0000008c,0x00050041,0x00000017,0x00000093,0x00000015,0x00000021, - 0x0004003d,0x00000006,0x00000094,0x00000093,0x000500b1,0x0000001a,0x00000095,0x00000092, - 0x00000094,0x000400fa,0x00000095,0x0000008e,0x0000008f,0x000200f8,0x0000008e,0x0003003e, - 0x00000096,0x00000025,0x000200f9,0x00000097,0x000200f8,0x00000097,0x000400f6,0x00000099, - 0x0000009a,0x00000000,0x000200f9,0x0000009b,0x000200f8,0x0000009b,0x0004003d,0x00000006, - 0x0000009c,0x00000096,0x00050041,0x00000017,0x0000009d,0x00000015,0x00000025,0x0004003d, - 0x00000006,0x0000009e,0x0000009d,0x000500b1,0x0000001a,0x0000009f,0x0000009c,0x0000009e, - 0x000400fa,0x0000009f,0x00000098,0x00000099,0x000200f8,0x00000098,0x0004003d,0x00000006, - 0x000000a2,0x0000002e,0x00060041,0x00000047,0x000000a3,0x00000045,0x00000025,0x000000a2, - 0x0004003d,0x0000003a,0x000000a4,0x000000a3,0x0004003d,0x00000006,0x000000a5,0x00000029, - 0x0004003d,0x00000006,0x000000a6,0x00000096,0x00050080,0x00000006,0x000000a7,0x000000a5, - 0x000000a6,0x00060041,0x00000047,0x000000a8,0x0000003e,0x00000025,0x000000a7,0x0004003d, - 0x0000003a,0x000000a9,0x000000a8,0x00050083,0x0000003a,0x000000aa,0x000000a4,0x000000a9, - 0x0006000c,0x0000003a,0x000000ab,0x00000001,0x0000001b,0x000000aa,0x0003003e,0x000000a1, - 0x000000ab,0x0004003d,0x00000006,0x000000b0,0x0000002e,0x0004003d,0x0000003a,0x000000b1, - 0x000000a1,0x00060041,0x00000047,0x000000b2,0x000000af,0x00000025,0x000000b0,0x0003003e, - 0x000000b2,0x000000b1,0x0004003d,0x00000006,0x000000b3,0x00000029,0x0004003d,0x00000006, - 0x000000b4,0x00000096,0x00050080,0x00000006,0x000000b5,0x000000b3,0x000000b4,0x0004003d, - 0x0000003a,0x000000b6,0x000000a1,0x00060041,0x00000047,0x000000b7,0x00000083,0x00000025, - 0x000000b5,0x0004003d,0x0000003a,0x000000b8,0x000000b7,0x00050081,0x0000003a,0x000000b9, - 0x000000b8,0x000000b6,0x00060041,0x00000047,0x000000ba,0x00000083,0x00000025,0x000000b5, - 0x0003003e,0x000000ba,0x000000b9,0x0004003d,0x00000006,0x000000bb,0x0000002e,0x00050080, - 0x00000006,0x000000bc,0x000000bb,0x00000016,0x0003003e,0x0000002e,0x000000bc,0x000200f9, - 0x0000009a,0x000200f8,0x0000009a,0x0004003d,0x00000006,0x000000bd,0x00000096,0x00050080, - 0x00000006,0x000000be,0x000000bd,0x00000016,0x0003003e,0x00000096,0x000000be,0x000200f9, - 0x00000097,0x000200f8,0x00000099,0x000200f9,0x00000090,0x000200f8,0x00000090,0x0004003d, - 0x00000006,0x000000bf,0x0000008c,0x00050080,0x00000006,0x000000c0,0x000000bf,0x00000016, - 0x0003003e,0x0000008c,0x000000c0,0x000200f9,0x0000008d,0x000200f8,0x0000008f,0x0004003d, - 0x00000006,0x000000c1,0x0000001f,0x0003003e,0x0000002e,0x000000c1,0x0003003e,0x000000c2, - 0x00000025,0x000200f9,0x000000c3,0x000200f8,0x000000c3,0x000400f6,0x000000c5,0x000000c6, - 0x00000000,0x000200f9,0x000000c7,0x000200f8,0x000000c7,0x0004003d,0x00000006,0x000000c8, - 0x000000c2,0x00050041,0x00000017,0x000000c9,0x00000015,0x00000021,0x0004003d,0x00000006, - 0x000000ca,0x000000c9,0x000500b1,0x0000001a,0x000000cb,0x000000c8,0x000000ca,0x000400fa, - 0x000000cb,0x000000c4,0x000000c5,0x000200f8,0x000000c4,0x0003003e,0x000000cc,0x00000025, - 0x000200f9,0x000000cd,0x000200f8,0x000000cd,0x000400f6,0x000000cf,0x000000d0,0x00000000, - 0x000200f9,0x000000d1,0x000200f8,0x000000d1,0x0004003d,0x00000006,0x000000d2,0x000000cc, - 0x00050041,0x00000017,0x000000d3,0x00000015,0x00000025,0x0004003d,0x00000006,0x000000d4, - 0x000000d3,0x000500b1,0x0000001a,0x000000d5,0x000000d2,0x000000d4,0x000400fa,0x000000d5, - 0x000000ce,0x000000cf,0x000200f8,0x000000ce,0x0004003d,0x00000006,0x000000d7,0x0000002e, - 0x00060041,0x00000047,0x000000d8,0x000000af,0x00000025,0x000000d7,0x0004003d,0x0000003a, - 0x000000d9,0x000000d8,0x0004003d,0x00000006,0x000000da,0x00000029,0x0004003d,0x00000006, - 0x000000db,0x000000cc,0x00050080,0x00000006,0x000000dc,0x000000da,0x000000db,0x00060041, - 0x00000047,0x000000dd,0x00000083,0x00000025,0x000000dc,0x0004003d,0x0000003a,0x000000de, - 0x000000dd,0x00050088,0x0000003a,0x000000df,0x000000d9,0x000000de,0x0003003e,0x000000d6, - 0x000000df,0x00050041,0x00000017,0x000000e1,0x00000015,0x000000e0,0x0004003d,0x00000006, - 0x000000e2,0x000000e1,0x000500aa,0x0000001a,0x000000e3,0x000000e2,0x00000016,0x000300f7, - 0x000000e5,0x00000000,0x000400fa,0x000000e3,0x000000e4,0x000000e5,0x000200f8,0x000000e4, - 0x0004003d,0x0000003a,0x000000e6,0x000000d6,0x0006000c,0x0000003a,0x000000e7,0x00000001, - 0x0000001c,0x000000e6,0x0003003e,0x000000d6,0x000000e7,0x000200f9,0x000000e5,0x000200f8, - 0x000000e5,0x0004003d,0x00000006,0x000000e8,0x0000002e,0x0004003d,0x0000003a,0x000000e9, - 0x000000d6,0x00060041,0x00000047,0x000000ea,0x000000af,0x00000025,0x000000e8,0x0003003e, - 0x000000ea,0x000000e9,0x0004003d,0x00000006,0x000000eb,0x0000002e,0x00050080,0x00000006, - 0x000000ec,0x000000eb,0x00000016,0x0003003e,0x0000002e,0x000000ec,0x000200f9,0x000000d0, - 0x000200f8,0x000000d0,0x0004003d,0x00000006,0x000000ed,0x000000cc,0x00050080,0x00000006, - 0x000000ee,0x000000ed,0x00000016,0x0003003e,0x000000cc,0x000000ee,0x000200f9,0x000000cd, - 0x000200f8,0x000000cf,0x000200f9,0x000000c6,0x000200f8,0x000000c6,0x0004003d,0x00000006, - 0x000000ef,0x000000c2,0x00050080,0x00000006,0x000000f0,0x000000ef,0x00000016,0x0003003e, - 0x000000c2,0x000000f0,0x000200f9,0x000000c3,0x000200f8,0x000000c5,0x000100fd,0x00010038 -}; - -}}} // namespace cv::dnn::vkcom diff --git a/modules/dnn/src/vkcom/shader/spirv_generator.py b/modules/dnn/src/vkcom/shader/spirv_generator.py index 0f9dd6e451..c977771c57 100644 --- a/modules/dnn/src/vkcom/shader/spirv_generator.py +++ b/modules/dnn/src/vkcom/shader/spirv_generator.py @@ -13,10 +13,8 @@ dir = "./" license_decl = \ '// This file is part of OpenCV project.\n'\ '// It is subject to the license terms in the LICENSE file found in the top-level directory\n'\ -'// of this distribution and at http://opencv.org/license.html.\n'\ -'//\n'\ -'// Copyright (C) 2018, Intel Corporation, all rights reserved.\n'\ -'// Third party copyrights are property of their respective owners.\n\n' +'// of this distribution and at http://opencv.org/license.html.\n\n' + precomp = '#include \"../../precomp.hpp\"\n' ns_head = '\nnamespace cv { namespace dnn { namespace vkcom {\n\n' ns_tail = '\n}}} // namespace cv::dnn::vkcom\n' @@ -27,6 +25,12 @@ headfile.write('#ifndef OPENCV_DNN_SPV_SHADER_HPP\n') headfile.write('#define OPENCV_DNN_SPV_SHADER_HPP\n\n') headfile.write(ns_head) +cppfile = open('spv_shader.cpp', 'w') +cppfile.write(license_decl) +cppfile.write(precomp) +cppfile.write('#include \"spv_shader.hpp\"\n') +cppfile.write(ns_head) + cmd_remove = '' null_out = '' if sys.platform.find('win32') != -1: @@ -35,24 +39,30 @@ if sys.platform.find('win32') != -1: elif sys.platform.find('linux') != -1: cmd_remove = 'rm' null_out = ' > /dev/null 2>&1' +else: + cmd_remove = 'rm' + +insertList = [] +externList = [] list = os.listdir(dir) for i in range(0, len(list)): if (os.path.splitext(list[i])[-1] != '.comp'): continue - prefix = os.path.splitext(list[i])[0]; + prefix = os.path.splitext(list[i])[0] path = os.path.join(dir, list[i]) bin_file = prefix + '.tmp' cmd = ' glslangValidator -V ' + path + ' -S comp -o ' + bin_file - print('compiling') + print('Run cmd = ', cmd) + if os.system(cmd) != 0: - continue; + continue size = os.path.getsize(bin_file) spv_txt_file = prefix + '.spv' - cmd = 'glslangValidator -V ' + path + ' -S comp -o ' + spv_txt_file + ' -x' + null_out + cmd = 'glslangValidator -V ' + path + ' -S comp -o ' + spv_txt_file + ' -x' #+ null_out os.system(cmd) infile_name = spv_txt_file @@ -78,11 +88,32 @@ for i in range(0, len(list)): # write a line into header file fmt = 'extern const unsigned int %s[%d];\n' % (array_name, size/4) - headfile.write(fmt) + externList.append(fmt) + fmt = ' SPVMaps.insert(std::make_pair("%s", std::make_pair(%s, %d)));\n' % (array_name, array_name, size/4) + insertList.append(fmt) os.system(cmd_remove + ' ' + bin_file) os.system(cmd_remove + ' ' + spv_txt_file) +for fmt in externList: + headfile.write(fmt) + +# write to head file +headfile.write('\n') +headfile.write('extern std::map > SPVMaps;\n\n') +headfile.write('void initSPVMaps();\n') + headfile.write(ns_tail) headfile.write('\n#endif /* OPENCV_DNN_SPV_SHADER_HPP */\n') -headfile.close(); +headfile.close() + +# write to cpp file +cppfile.write('std::map > SPVMaps;\n\n') +cppfile.write('void initSPVMaps()\n{\n') + +for fmt in insertList: + cppfile.write(fmt) + +cppfile.write('}\n') +cppfile.write(ns_tail) +cppfile.close() \ No newline at end of file diff --git a/modules/dnn/src/vkcom/shader/spv_shader.cpp b/modules/dnn/src/vkcom/shader/spv_shader.cpp new file mode 100644 index 0000000000..7f6b9d3ab4 --- /dev/null +++ b/modules/dnn/src/vkcom/shader/spv_shader.cpp @@ -0,0 +1,21 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. + +#include "../../precomp.hpp" +#include "spv_shader.hpp" + +namespace cv { namespace dnn { namespace vkcom { + +std::map > SPVMaps; + +void initSPVMaps() +{ + SPVMaps.insert(std::make_pair("conv_1x1_fast_spv", std::make_pair(conv_1x1_fast_spv, 3134))); + SPVMaps.insert(std::make_pair("gemm_spv", std::make_pair(gemm_spv, 2902))); + SPVMaps.insert(std::make_pair("conv_depthwise_3x3_spv", std::make_pair(conv_depthwise_3x3_spv, 1977))); + SPVMaps.insert(std::make_pair("conv_implicit_gemm_spv", std::make_pair(conv_implicit_gemm_spv, 3565))); + SPVMaps.insert(std::make_pair("conv_depthwise_spv", std::make_pair(conv_depthwise_spv, 2092))); +} + +}}} // namespace cv::dnn::vkcom diff --git a/modules/dnn/src/vkcom/shader/spv_shader.hpp b/modules/dnn/src/vkcom/shader/spv_shader.hpp index 9f341d6873..e90cf605c4 100644 --- a/modules/dnn/src/vkcom/shader/spv_shader.hpp +++ b/modules/dnn/src/vkcom/shader/spv_shader.hpp @@ -1,9 +1,6 @@ // This file is part of OpenCV project. // It is subject to the license terms in the LICENSE file found in the top-level directory // of this distribution and at http://opencv.org/license.html. -// -// Copyright (C) 2018, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. #ifndef OPENCV_DNN_SPV_SHADER_HPP #define OPENCV_DNN_SPV_SHADER_HPP @@ -11,18 +8,15 @@ namespace cv { namespace dnn { namespace vkcom { -extern const unsigned int dw_conv_spv[1760]; -extern const unsigned int permute_spv[765]; -extern const unsigned int conv48_spv[7458]; -extern const unsigned int conv48_nobias_spv[7182]; -extern const unsigned int lrn_spv[1845]; -extern const unsigned int concat_spv[541]; -extern const unsigned int avg_pool_spv[1538]; -extern const unsigned int softmax_spv[1496]; -extern const unsigned int prior_box_spv[1480]; -extern const unsigned int max_pool_spv[1449]; -extern const unsigned int relu_spv[502]; -extern const unsigned int conv_spv[1894]; +extern const unsigned int conv_1x1_fast_spv[3134]; +extern const unsigned int gemm_spv[2902]; +extern const unsigned int conv_depthwise_3x3_spv[1977]; +extern const unsigned int conv_implicit_gemm_spv[3565]; +extern const unsigned int conv_depthwise_spv[2092]; + +extern std::map > SPVMaps; + +void initSPVMaps(); }}} // namespace cv::dnn::vkcom diff --git a/modules/dnn/src/vkcom/src/buffer.cpp b/modules/dnn/src/vkcom/src/buffer.cpp index 401ac85b29..0d80994ba8 100644 --- a/modules/dnn/src/vkcom/src/buffer.cpp +++ b/modules/dnn/src/vkcom/src/buffer.cpp @@ -6,7 +6,6 @@ // Third party copyrights are property of their respective owners. #include "../../precomp.hpp" -#include "common.hpp" #include "internal.hpp" #include "../include/buffer.hpp" @@ -16,59 +15,64 @@ namespace cv { namespace dnn { namespace vkcom { static uint32_t findMemoryType(uint32_t memoryTypeBits, VkMemoryPropertyFlags properties) { - VkPhysicalDeviceMemoryProperties memoryProperties; - - vkGetPhysicalDeviceMemoryProperties(kPhysicalDevice, &memoryProperties); - - for (uint32_t i = 0; i < memoryProperties.memoryTypeCount; ++i) { + for (uint32_t i = 0; i < physicalDeviceMemoryProperties.memoryTypeCount; ++i) + { if ((memoryTypeBits & (1 << i)) && - ((memoryProperties.memoryTypes[i].propertyFlags & properties) == properties)) + ((physicalDeviceMemoryProperties.memoryTypes[i].propertyFlags & properties) == properties)) return i; } - return -1; + return uint32_t(-1); +} + +Buffer::Buffer(VkBufferUsageFlags usageFlag) : usageFlag_(usageFlag), buffer_(VK_NULL_HANDLE), memory_(VK_NULL_HANDLE) +{ } bool Buffer::init(size_t size_in_bytes, const char* data) { if (buffer_ != VK_NULL_HANDLE) { - printf("Warn: Buffer object already inited\n"); + CV_LOG_WARNING(NULL, "Warn: Buffer object already inited!"); return false; } VkBufferCreateInfo bufferCreateInfo = {}; bufferCreateInfo.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO; - bufferCreateInfo.size = size_in_bytes; - bufferCreateInfo.usage = VK_BUFFER_USAGE_STORAGE_BUFFER_BIT; + bufferCreateInfo.size = (VkDeviceSize)size_in_bytes; + bufferCreateInfo.usage = usageFlag_; bufferCreateInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE; - VK_CHECK_RESULT(vkCreateBuffer(device_, &bufferCreateInfo, NULL, &buffer_)); + VK_CHECK_RESULT(vkCreateBuffer(kDevice, &bufferCreateInfo, NULL, &buffer_)); VkMemoryRequirements memoryRequirements; - vkGetBufferMemoryRequirements(device_, buffer_, &memoryRequirements); + vkGetBufferMemoryRequirements(kDevice, buffer_, &memoryRequirements); VkMemoryAllocateInfo allocateInfo = {}; allocateInfo.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO; allocateInfo.allocationSize = memoryRequirements.size; + + // TODO: Try to optimize the memory at discrete graphics card. For AMD and GPU discrete graphics card, + // we should use VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT. + allocateInfo.memoryTypeIndex = findMemoryType(memoryRequirements.memoryTypeBits, VK_MEMORY_PROPERTY_HOST_COHERENT_BIT | - VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT); - VK_CHECK_RESULT(vkAllocateMemory(device_, &allocateInfo, NULL, &memory_)); + VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT + ); + VK_CHECK_RESULT(vkAllocateMemory(kDevice, &allocateInfo, NULL, &memory_)); if (data) { char* dst; - VK_CHECK_RESULT(vkMapMemory(device_, memory_, 0, size_in_bytes, 0, (void **)&dst)); + VK_CHECK_RESULT(vkMapMemory(kDevice, memory_, 0, size_in_bytes, 0, (void **)&dst)); memcpy(dst, data, size_in_bytes); - vkUnmapMemory(device_, memory_); + vkUnmapMemory(kDevice, memory_); } - VK_CHECK_RESULT(vkBindBufferMemory(device_, buffer_, memory_, 0)); + VK_CHECK_RESULT(vkBindBufferMemory(kDevice, buffer_, memory_, 0)); return true; } -Buffer::Buffer(VkDevice& device, size_t size_in_bytes, const char* data) +Buffer::Buffer(size_t size_in_bytes, const char* data, VkBufferUsageFlags usageFlag) : usageFlag_(usageFlag) { - device_ = device; buffer_ = VK_NULL_HANDLE; memory_ = VK_NULL_HANDLE; init(size_in_bytes, data); @@ -76,8 +80,8 @@ Buffer::Buffer(VkDevice& device, size_t size_in_bytes, const char* data) Buffer::~Buffer() { - vkFreeMemory(device_, memory_, NULL); - vkDestroyBuffer(device_, buffer_, NULL); + vkFreeMemory(kDevice, memory_, NULL); + vkDestroyBuffer(kDevice, buffer_, NULL); } #endif // HAVE_VULKAN diff --git a/modules/dnn/src/vkcom/src/command.cpp b/modules/dnn/src/vkcom/src/command.cpp new file mode 100644 index 0000000000..4de3f0f5e8 --- /dev/null +++ b/modules/dnn/src/vkcom/src/command.cpp @@ -0,0 +1,182 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. + +/* +The code has referenced MNN (https://github.com/alibaba/MNN/blob/2.4.0/source/backend/vulkan/component/VulkanCommandPool.cpp) +and adapted for OpenCV by Zihao Mu. +Below is the original copyright: +*/ + +// +// VulkanCommandPool.cpp +// MNN +// +// Created by MNN on 2019/01/31. +// Copyright © 2018, Alibaba Group Holding Limited +// + +#include "../../precomp.hpp" +#include "internal.hpp" +#include "../include/command.hpp" + +namespace cv { namespace dnn { namespace vkcom { + +#ifdef HAVE_VULKAN + +// *********************** CommandBuffer ******************** +CommandBuffer::CommandBuffer(CommandPool* pool) : cmdPool(pool) +{ + CV_Assert(cmdPool); + if (pool->bufferQueue.empty()) + { + VkCommandBufferAllocateInfo cmdBufferCreateInfo { + /* .sType = */ VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO, + /* .pNext = */ nullptr, + /* .commandPool = */ cmdPool->get(), + /* .level = */ VK_COMMAND_BUFFER_LEVEL_PRIMARY, + /* .commandBufferCount = */ 1, + }; + vkAllocateCommandBuffers(kDevice, &cmdBufferCreateInfo, &cmdBuffer); + } + else + { + cmdBuffer = pool->bufferQueue.front(); + pool-> bufferQueue.pop(); + } +} + +void CommandBuffer::barrierSource(VkBuffer source, size_t start, size_t size, BarrierType type) const +{ + VkBufferMemoryBarrier barrier; + barrier.sType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER; + barrier.buffer = source; + barrier.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; + barrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; + barrier.offset = start; + barrier.pNext = nullptr; + barrier.size = size; + switch (type) { + case READ_WRITE: + barrier.srcAccessMask = VK_ACCESS_SHADER_WRITE_BIT | VK_ACCESS_TRANSFER_WRITE_BIT; + barrier.dstAccessMask = VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_TRANSFER_READ_BIT; + break; + case WRITE_WRITE: + barrier.srcAccessMask = VK_ACCESS_SHADER_WRITE_BIT | VK_ACCESS_TRANSFER_WRITE_BIT; + barrier.dstAccessMask = VK_ACCESS_SHADER_WRITE_BIT | VK_ACCESS_SHADER_WRITE_BIT; + break; + default: + break; + } + vkCmdPipelineBarrier(cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT | VK_PIPELINE_STAGE_TRANSFER_BIT, + VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT | VK_PIPELINE_STAGE_TRANSFER_BIT, 0, 0, nullptr, 1, + &barrier, 0, nullptr); +} + +void CommandBuffer::beginRecord(VkCommandBufferUsageFlags flag) +{ + cv::AutoLock lock(kContextMtx); + VkCommandBufferBeginInfo cmdBufferBeginInfo{ + /* .sType = */ VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, + /* .pNext = */ nullptr, + /* .flags = */ flag, + /* .pInheritanceInfo = */ nullptr, + }; + vkResetCommandBuffer(cmdBuffer, 0); + + VK_CHECK_RESULT(vkBeginCommandBuffer(cmdBuffer, &cmdBufferBeginInfo)); +} + +void CommandBuffer::endRecord() +{ + VK_CHECK_RESULT(vkEndCommandBuffer(cmdBuffer)); +} + +CommandBuffer::~CommandBuffer() +{ + CV_Assert(cmdPool); + if (needRelease) + { + vkFreeCommandBuffers(kDevice, cmdPool->get(), 1, &cmdBuffer); + } + else + { + cmdPool->bufferQueue.push(cmdBuffer); + } +} + +// *********************** CommandPool ******************** +Ptr CommandPool::create(const VkQueue &q, uint32_t _queueFamilyIndex) +{ + cv::AutoLock lock(kContextMtx); + Ptr cmdPoolInstance = Ptr(new CommandPool(q, _queueFamilyIndex)); + + return cmdPoolInstance; +} + +CommandPool::CommandPool(const VkQueue& q, uint32_t _queueFamilyIndex) : queue(q), cmdPool(VK_NULL_HANDLE), queueFamilyIndex(_queueFamilyIndex) +{ + cv::AutoLock lock(kContextMtx); + VkCommandPoolCreateInfo cmdPoolCreateInfo{ + /* .sType = */ VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO, + /* .pNext = */ nullptr, + /* .flags = */ VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT, + /* .queueFamilyIndex = */ queueFamilyIndex, + }; + vkCreateCommandPool(kDevice, &cmdPoolCreateInfo, nullptr, &cmdPool); +} + +void CommandPool::reset() +{ + // reset all bufferQueue. + while (!bufferQueue.empty()) + { + auto cmdBuffer = bufferQueue.front(); + bufferQueue.pop(); + + vkFreeCommandBuffers(kDevice, cmdPool, 1, &cmdBuffer); + } +} + +CommandPool::~CommandPool() +{ + while (!bufferQueue.empty()) + { + auto cmdBuffer = bufferQueue.front(); + bufferQueue.pop(); + + vkFreeCommandBuffers(kDevice, cmdPool, 1, &cmdBuffer); + } + vkDestroyCommandPool(kDevice, cmdPool, nullptr); +} + +Ptr CommandPool::allocBuffer() +{ + auto cmdBuffer = Ptr(new CommandBuffer(this)); + cmdBuffer->needRelease = false; + return cmdBuffer; +} + +void CommandPool::submitAndWait(VkCommandBuffer& _buffer) const +{ + auto buffer = _buffer; + Fence fence = Fence(); + VkFence fenceVk = fence.get(); + VkSubmitInfo submit_info = { + /* .sType = */ VK_STRUCTURE_TYPE_SUBMIT_INFO, + /* .pNext = */ nullptr, + /* .waitSemaphoreCount = */ 0, + /* .pWaitSemaphores = */ nullptr, + /* .pWaitDstStageMask = */ nullptr, + /* .commandBufferCount = */ 1, + /* .pCommandBuffers = */ &buffer, + /* .signalSemaphoreCount = */ 0, + /* .pSignalSemaphores = */ nullptr}; + // need the queue class. + VK_CHECK_RESULT(vkQueueSubmit(queue, 1, &submit_info, fenceVk)); + VK_CHECK_RESULT(fence.wait()); +} + +#endif // HAVE_VULKAN + +}}} // namespace cv::dnn::vkcom \ No newline at end of file diff --git a/modules/dnn/src/vkcom/src/common.hpp b/modules/dnn/src/vkcom/src/common.hpp deleted file mode 100644 index e6c6f63f2a..0000000000 --- a/modules/dnn/src/vkcom/src/common.hpp +++ /dev/null @@ -1,87 +0,0 @@ -// This file is part of OpenCV project. -// It is subject to the license terms in the LICENSE file found in the top-level directory -// of this distribution and at http://opencv.org/license.html. -// -// Copyright (C) 2018, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. - -#ifndef OPENCV_DNN_VKCOM_COMMON_HPP -#define OPENCV_DNN_VKCOM_COMMON_HPP - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#ifdef HAVE_VULKAN -#include -#endif -#include "opencv2/core/utils/logger.hpp" -#include "../vulkan/vk_functions.hpp" -#include "../include/vkcom.hpp" -#include "../shader/spv_shader.hpp" - -namespace cv { namespace dnn { namespace vkcom { - -#ifdef HAVE_VULKAN -extern VkPhysicalDevice kPhysicalDevice; -extern VkDevice kDevice; -extern VkQueue kQueue; -extern VkCommandPool kCmdPool; -extern cv::Mutex kContextMtx; - -enum ShapeIdx -{ - kShapeIdxBatch = 0, - kShapeIdxChannel, - kShapeIdxHeight, - kShapeIdxWidth, -}; - -#define VK_CHECK_RESULT(f) \ -{ \ - if (f != VK_SUCCESS) \ - { \ - CV_LOG_ERROR(NULL, "Vulkan check failed, result = " << (int)f); \ - CV_Error(Error::StsError, "Vulkan check failed"); \ - } \ -} - -#define VKCOM_CHECK_BOOL_RET_VAL(val, ret) \ -{ \ - bool res = (val); \ - if (!res) \ - { \ - CV_LOG_WARNING(NULL, "Check bool failed"); \ - return ret; \ - } \ -} - -#define VKCOM_CHECK_POINTER_RET_VOID(p) \ -{ \ - if (NULL == (p)) \ - { \ - CV_LOG_WARNING(NULL, "Check pointer failed"); \ - return; \ - } \ -} - -#define VKCOM_CHECK_POINTER_RET_VAL(p, val) \ -{ \ - if (NULL == (p)) \ - { \ - CV_LOG_WARNING(NULL, "Check pointer failed"); \ - return (val); \ - } \ -} - -#endif // HAVE_VULKAN - -}}} // namespace cv::dnn::vkcom - -#endif // OPENCV_DNN_VKCOM_COMMON_HPP diff --git a/modules/dnn/src/vkcom/src/context.cpp b/modules/dnn/src/vkcom/src/context.cpp index 5a6376f112..2cb355a247 100644 --- a/modules/dnn/src/vkcom/src/context.cpp +++ b/modules/dnn/src/vkcom/src/context.cpp @@ -1,60 +1,175 @@ // This file is part of OpenCV project. // It is subject to the license terms in the LICENSE file found in the top-level directory // of this distribution and at http://opencv.org/license.html. + +/* +The code has been borrowed from ncnn inference engine (https://github.com/Tencent/ncnn/blob/20230223/src/gpu.cpp) +and adapted for OpenCV by Zihao Mu. +Below is the original copyright: +*/ + +// Tencent is pleased to support the open source community by making ncnn available. // -// Copyright (C) 2018, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. +// Copyright (C) 2018 THL A29 Limited, a Tencent company. All rights reserved. +// +// Licensed under the BSD 3-Clause License (the "License"); you may not use this file except +// in compliance with the License. You may obtain a copy of the License at +// +// https://opensource.org/licenses/BSD-3-Clause +// +// 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 "../../precomp.hpp" +#include "internal.hpp" +#include "../include/context.hpp" #include "../vulkan/vk_loader.hpp" -#include "common.hpp" -#include "context.hpp" namespace cv { namespace dnn { namespace vkcom { #ifdef HAVE_VULKAN -std::shared_ptr kCtx; -bool enableValidationLayers = false; -VkInstance kInstance; -VkPhysicalDevice kPhysicalDevice; -VkDevice kDevice; -VkQueue kQueue; -VkCommandPool kCmdPool; -VkDebugReportCallbackEXT kDebugReportCallback; -uint32_t kQueueFamilyIndex; -std::vector kEnabledLayers; -std::map> kShaders; +// Global Variable +VkQueue kQueue = VK_NULL_HANDLE; +VkDevice kDevice = VK_NULL_HANDLE; // It was used almost everywhere. +VkPhysicalDeviceMemoryProperties physicalDeviceMemoryProperties; cv::Mutex kContextMtx; +Ptr cmdPoolPtr; +Ptr pipelineFactoryPtr; -static uint32_t getComputeQueueFamilyIndex() +int support_VK_KHR_external_memory_capabilities = 0; +int support_VK_KHR_get_physical_device_properties2 = 0; +int support_VK_KHR_get_surface_capabilities2 = 0; +int support_VK_KHR_portability_enumeration = 0; +int support_VK_KHR_surface = 0; +int support_VK_EXT_debug_report = 0; + +#if defined(__ANDROID_API__) && __ANDROID_API__ >= 26 +int support_VK_KHR_android_surface = 0; +#endif // __ANDROID_API__ >= 26 + +static uint32_t findDeviceComputeQueue(const std::vector& queueFamilyProperties) { - uint32_t queueFamilyCount; - - vkGetPhysicalDeviceQueueFamilyProperties(kPhysicalDevice, &queueFamilyCount, NULL); - - std::vector queueFamilies(queueFamilyCount); - vkGetPhysicalDeviceQueueFamilyProperties(kPhysicalDevice, - &queueFamilyCount, - queueFamilies.data()); - - uint32_t i = 0; - for (; i < queueFamilies.size(); ++i) + // first try, compute only queue + for (uint32_t i = 0; i < queueFamilyProperties.size(); i++) { - VkQueueFamilyProperties props = queueFamilies[i]; + const VkQueueFamilyProperties& queueFamilyProperty = queueFamilyProperties[i]; - if (props.queueCount > 0 && (props.queueFlags & VK_QUEUE_COMPUTE_BIT)) + if ((queueFamilyProperty.queueFlags & VK_QUEUE_COMPUTE_BIT) + && !(queueFamilyProperty.queueFlags & VK_QUEUE_GRAPHICS_BIT)) { - break; + return i; } } - if (i == queueFamilies.size()) + // second try, any queue with compute and graphics + for (uint32_t i = 0; i < queueFamilyProperties.size(); i++) { - throw std::runtime_error("could not find a queue family that supports operations"); + const VkQueueFamilyProperties& queueFamilyProperty = queueFamilyProperties[i]; + + if ((queueFamilyProperty.queueFlags & VK_QUEUE_COMPUTE_BIT) + && (queueFamilyProperty.queueFlags & VK_QUEUE_GRAPHICS_BIT)) + { + return i; + } } - return i; + // third try, any queue with compute + for (uint32_t i = 0; i < queueFamilyProperties.size(); i++) + { + const VkQueueFamilyProperties& queueFamilyProperty = queueFamilyProperties[i]; + + if (queueFamilyProperty.queueFlags & VK_QUEUE_COMPUTE_BIT) + { + return i; + } + } + return uint32_t(-1); +} + +static uint32_t findDeviceGraphicsQueue(const std::vector& queueFamilyProperties) +{ + // first try, graphics only queue + for (uint32_t i = 0; i < queueFamilyProperties.size(); i++) + { + const VkQueueFamilyProperties& queueFamilyProperty = queueFamilyProperties[i]; + + if ((queueFamilyProperty.queueFlags & VK_QUEUE_GRAPHICS_BIT) + && !(queueFamilyProperty.queueFlags & VK_QUEUE_COMPUTE_BIT)) + { + return i; + } + } + + // second try, any queue with graphics and compute + for (uint32_t i = 0; i < queueFamilyProperties.size(); i++) + { + const VkQueueFamilyProperties& queueFamilyProperty = queueFamilyProperties[i]; + + if ((queueFamilyProperty.queueFlags & VK_QUEUE_GRAPHICS_BIT) + && (queueFamilyProperty.queueFlags & VK_QUEUE_COMPUTE_BIT)) + { + return i; + } + } + + // third try, any queue with graphics + for (uint32_t i = 0; i < queueFamilyProperties.size(); i++) + { + const VkQueueFamilyProperties& queueFamilyProperty = queueFamilyProperties[i]; + + if (queueFamilyProperty.queueFlags & VK_QUEUE_GRAPHICS_BIT) + { + return i; + } + } + + return uint32_t(-1); +} + +static uint32_t findDeviceTransferQueue(const std::vector& queueFamilyProperties) +{ + // first try, transfer only queue + for (uint32_t i = 0; i < queueFamilyProperties.size(); i++) + { + const VkQueueFamilyProperties& queueFamilyProperty = queueFamilyProperties[i]; + + if ((queueFamilyProperty.queueFlags & VK_QUEUE_TRANSFER_BIT) + && !(queueFamilyProperty.queueFlags & VK_QUEUE_COMPUTE_BIT) + && !(queueFamilyProperty.queueFlags & VK_QUEUE_GRAPHICS_BIT)) + { + return i; + } + } + + // second try, any queue with transfer + for (uint32_t i = 0; i < queueFamilyProperties.size(); i++) + { + const VkQueueFamilyProperties& queueFamilyProperty = queueFamilyProperties[i]; + + if (queueFamilyProperty.queueFlags & VK_QUEUE_TRANSFER_BIT) + { + return i; + } + } + + // third try, use compute queue + uint32_t compute_queue_index = findDeviceComputeQueue(queueFamilyProperties); + if (compute_queue_index != (uint32_t)-1) + { + return compute_queue_index; + } + + // fourth try, use graphics queue + uint32_t graphics_queue_index = findDeviceGraphicsQueue(queueFamilyProperties); + if (graphics_queue_index != (uint32_t)-1) + { + return graphics_queue_index; + } + + return uint32_t(-1); } bool checkExtensionAvailability(const char *extension_name, @@ -62,14 +177,26 @@ bool checkExtensionAvailability(const char *extension_name, { for( size_t i = 0; i < available_extensions.size(); ++i ) { - if( strcmp( available_extensions[i].extensionName, extension_name ) == 0 ) - { - return true; - } + if( strcmp( available_extensions[i].extensionName, extension_name ) == 0 ) + { + return true; + } } return false; } +static int init_instance_extension(VkInstance& kInstance) +{ +#if defined(__ANDROID_API__) && __ANDROID_API__ >= 26 + if (support_VK_KHR_android_surface) + { + vkCreateAndroidSurfaceKHR = (PFN_vkCreateAndroidSurfaceKHR)vkGetInstanceProcAddr(kInstance, "vkCreateAndroidSurfaceKHR"); + } +#endif // __ANDROID_API__ >= 26 + + return 0; +} + VKAPI_ATTR VkBool32 VKAPI_CALL debugReportCallbackFn( VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, @@ -80,33 +207,146 @@ VKAPI_ATTR VkBool32 VKAPI_CALL debugReportCallbackFn( const char* pMessage, void* pUserData) { - std::cout << "Debug Report: " << pLayerPrefix << ":" << pMessage << std::endl; - return VK_FALSE; + std::cout << "Debug Report: " << pLayerPrefix << ":" << pMessage << std::endl; + return VK_FALSE; } -// internally used -void createContext() +void Context::createInstance() { - cv::AutoLock lock(kContextMtx); - if (!kCtx) - { - kCtx.reset(new Context()); - } -} + if (kInstance != VK_NULL_HANDLE) + return; -bool isAvailable() -{ - try + VkResult result; + + if (enableValidationLayers) { - createContext(); - } - catch (const cv::Exception& e) - { - CV_LOG_ERROR(NULL, "Failed to init Vulkan environment. " << e.what()); - return false; + uint32_t instanceLayerPropertyCount; + result = vkEnumerateInstanceLayerProperties(&instanceLayerPropertyCount, NULL); + + if (result != VK_SUCCESS) + { + CV_Error(CV_StsError, "Vulkan: vkEnumerateInstanceLayerProperties failed!"); + return; + } + + std::vector instanceLayerProperties(instanceLayerPropertyCount); + result = vkEnumerateInstanceLayerProperties(&instanceLayerPropertyCount, instanceLayerProperties.data()); + + if (result != VK_SUCCESS) + { + CV_Error(CV_StsError, "Vulkan: vkEnumerateInstanceLayerProperties failed!"); + return; + } + + for (uint32_t i = 0; i < instanceLayerPropertyCount; i++) + { + const VkLayerProperties& lp = instanceLayerProperties[i]; + CV_LOG_INFO(NULL, "instance layer "<< lp.layerName << lp.implementationVersion); + + if (strcmp(lp.layerName, "VK_LAYER_LUNARG_standard_validation") == 0) + { + kEnabledLayers.push_back("VK_LAYER_LUNARG_standard_validation"); + } + if (strcmp(lp.layerName, "VK_LAYER_LUNARG_parameter_validation") == 0) + { + kEnabledLayers.push_back("VK_LAYER_LUNARG_parameter_validation"); + } + if (strcmp(lp.layerName, "VK_LAYER_KHRONOS_validation") == 0) + { + kEnabledLayers.push_back("VK_LAYER_KHRONOS_validation"); + } + } } - return true; + for (uint32_t j = 0; j < instanceExtensionPropertyCount; j++) + { + const VkExtensionProperties& exp = instanceExtensionProperties[j]; + + if (strcmp(exp.extensionName, "VK_KHR_external_memory_capabilities") == 0) + support_VK_KHR_external_memory_capabilities = exp.specVersion; + else if (strcmp(exp.extensionName, "VK_KHR_get_physical_device_properties2") == 0) + support_VK_KHR_get_physical_device_properties2 = exp.specVersion; + else if (strcmp(exp.extensionName, "VK_KHR_get_surface_capabilities2") == 0) + support_VK_KHR_get_surface_capabilities2 = exp.specVersion; + else if (strcmp(exp.extensionName, "VK_KHR_portability_enumeration") == 0) + support_VK_KHR_portability_enumeration = exp.specVersion; + else if (strcmp(exp.extensionName, "VK_KHR_surface") == 0) + support_VK_KHR_surface = exp.specVersion; + else if (strcmp(exp.extensionName, "VK_EXT_debug_report") == 0) + support_VK_EXT_debug_report = exp.specVersion; +#if defined(__ANDROID_API__) && __ANDROID_API__ >= 26 + else if (strcmp(exp.extensionName, "VK_KHR_android_surface") == 0) + support_VK_KHR_android_surface = exp.specVersion; +#endif // __ANDROID_API__ >= 26 + } + + if (support_VK_KHR_external_memory_capabilities) + enabledExtensions.push_back("VK_KHR_external_memory_capabilities"); + if (support_VK_KHR_get_physical_device_properties2) + enabledExtensions.push_back("VK_KHR_get_physical_device_properties2"); + if (support_VK_KHR_get_surface_capabilities2) + enabledExtensions.push_back("VK_KHR_get_surface_capabilities2"); + if (support_VK_KHR_portability_enumeration) + enabledExtensions.push_back("VK_KHR_portability_enumeration"); + if (support_VK_KHR_surface) + enabledExtensions.push_back("VK_KHR_surface"); + if (enableValidationLayers && support_VK_EXT_debug_report) + enabledExtensions.push_back("VK_EXT_debug_report"); +#if defined(__ANDROID_API__) && __ANDROID_API__ >= 26 + if (support_VK_KHR_android_surface) + enabledExtensions.push_back("VK_KHR_android_surface"); +#endif // __ANDROID_API__ >= 26 + + instanceApiVersion = VK_MAKE_VERSION(1, 0, 0); + + if (vkEnumerateInstanceVersion) + { + VK_CHECK_RESULT(vkEnumerateInstanceVersion(&instanceApiVersion)); + } + + CV_LOG_INFO(NULL, "instance apiVersion = " + < enabledExtensions; - if (enableValidationLayers) - { - uint32_t layerCount; - vkEnumerateInstanceLayerProperties(&layerCount, NULL); + // Step0: get the extension info from Vulkan library. + vkEnumerateInstanceExtensionProperties(nullptr, &instanceExtensionPropertyCount, NULL); + instanceExtensionProperties.resize(instanceExtensionPropertyCount); + vkEnumerateInstanceExtensionProperties(nullptr, &instanceExtensionPropertyCount, instanceExtensionProperties.data()); - std::vector layerProperties(layerCount); - vkEnumerateInstanceLayerProperties(&layerCount, layerProperties.data()); + // Step1: create kInstance + createInstance(); - bool foundLayer = false; - for (VkLayerProperties prop : layerProperties) - { - if (strcmp("VK_LAYER_LUNARG_standard_validation", prop.layerName) == 0) - { - foundLayer = true; - break; - } - } - - if (!foundLayer) - { - throw std::runtime_error("Layer VK_LAYER_LUNARG_standard_validation not supported\n"); - } - kEnabledLayers.push_back("VK_LAYER_LUNARG_standard_validation"); - - uint32_t extensionCount; - - vkEnumerateInstanceExtensionProperties(nullptr, &extensionCount, NULL); - std::vector extensionProperties(extensionCount); - vkEnumerateInstanceExtensionProperties(nullptr, &extensionCount, extensionProperties.data()); - - bool foundExtension = false; - for (VkExtensionProperties prop : extensionProperties) - { - if (strcmp(VK_EXT_DEBUG_REPORT_EXTENSION_NAME, prop.extensionName) == 0) - { - foundExtension = true; - break; - } - } - - if (!foundExtension) { - throw std::runtime_error("Extension VK_EXT_DEBUG_REPORT_EXTENSION_NAME not supported\n"); - } - enabledExtensions.push_back(VK_EXT_DEBUG_REPORT_EXTENSION_NAME); - } - - VkApplicationInfo applicationInfo = {}; - applicationInfo.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO; - applicationInfo.pApplicationName = "VkCom Library"; - applicationInfo.applicationVersion = 0; - applicationInfo.pEngineName = "vkcom"; - applicationInfo.engineVersion = 0; - applicationInfo.apiVersion = VK_API_VERSION_1_0;; - - VkInstanceCreateInfo createInfo = {}; - createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; - createInfo.flags = 0; - createInfo.pApplicationInfo = &applicationInfo; - - // Give our desired layers and extensions to vulkan. - createInfo.enabledLayerCount = kEnabledLayers.size(); - createInfo.ppEnabledLayerNames = kEnabledLayers.data(); - createInfo.enabledExtensionCount = enabledExtensions.size(); - createInfo.ppEnabledExtensionNames = enabledExtensions.data(); - - VK_CHECK_RESULT(vkCreateInstance(&createInfo, NULL, &kInstance)); + init_instance_extension(kInstance); if (!loadVulkanFunctions(kInstance)) { @@ -202,41 +383,34 @@ Context::Context() return; } - if (enableValidationLayers && vkCreateDebugReportCallbackEXT) - { - VkDebugReportCallbackCreateInfoEXT createInfo = {}; - createInfo.sType = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT; - createInfo.flags = VK_DEBUG_REPORT_ERROR_BIT_EXT | - VK_DEBUG_REPORT_WARNING_BIT_EXT | - VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT; - createInfo.pfnCallback = &debugReportCallbackFn; - - // Create and register callback. - VK_CHECK_RESULT(vkCreateDebugReportCallbackEXT(kInstance, &createInfo, - NULL, &kDebugReportCallback)); - } - - // find physical device - uint32_t deviceCount; + // Step2: Find the best suitable Physical Device. + uint32_t deviceCount = 0; vkEnumeratePhysicalDevices(kInstance, &deviceCount, NULL); if (deviceCount == 0) { - throw std::runtime_error("could not find a device with vulkan support"); + CV_Error(CV_StsError, "Vulkan Backend: could not find a device with vulkan support!"); } std::vector devices(deviceCount); vkEnumeratePhysicalDevices(kInstance, &deviceCount, devices.data()); + // TODO: should add better device selection strategy. for (VkPhysicalDevice device : devices) { - if (true) - { - kPhysicalDevice = device; - break; - } + gpuInfoList.emplace_back(parseGPUInfo(device)); } - kQueueFamilyIndex = getComputeQueueFamilyIndex(); + bestGPUIndex = findBestPhysicalGPUIndex(); + CV_Assert(bestGPUIndex >= 0 && bestGPUIndex < devices.size()); + kPhysicalDevice = devices[bestGPUIndex]; + physicalDeviceMemoryProperties = gpuInfoList[bestGPUIndex].physicalDeviceMemoryProperties; + + // TODO: try to optimize the speed in discrete GPU. + if (gpuInfoList[bestGPUIndex].type == GPU_TYPE_DISCRETE) + CV_LOG_WARNING(NULL, "DNN Vulkan backend will work VERY SLOWLY! Because it currently not compatible with discrete graphics cards!"); + + // Step3: Create VkQueue + kQueueFamilyIndex = gpuInfoList[bestGPUIndex].computeQueueFamilyIndex; // create device, queue, command pool VkDeviceQueueCreateInfo queueCreateInfo = {}; @@ -248,6 +422,7 @@ Context::Context() VkDeviceCreateInfo deviceCreateInfo = {}; + // Step4: Create Logical Device // Specify any desired device features here. We do not need any for this application, though. VkPhysicalDeviceFeatures deviceFeatures = {}; @@ -263,24 +438,405 @@ Context::Context() // Get a handle to the only member of the queue family. vkGetDeviceQueue(kDevice, kQueueFamilyIndex, 0, &kQueue); - // create command pool - VkCommandPoolCreateInfo commandPoolCreateInfo = {}; - commandPoolCreateInfo.sType = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO; - commandPoolCreateInfo.flags = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT; - // the queue family of this command pool. All command buffers allocated from this command pool, - // must be submitted to queues of this family ONLY. - commandPoolCreateInfo.queueFamilyIndex = kQueueFamilyIndex; - VK_CHECK_RESULT(vkCreateCommandPool(kDevice, &commandPoolCreateInfo, NULL, &kCmdPool)); + // Step4: Create CommandPool and PipelineFactory + if (!cmdPoolPtr) + cmdPoolPtr = CommandPool::create(kQueue, kQueueFamilyIndex); + else + CV_Error(CV_StsError, "cmdPoolPtr has been created before!!"); + + pipelineFactoryPtr = PipelineFactory::create(); +} + +GPUInfo Context::parseGPUInfo(VkPhysicalDevice& kPhysicalDevice) +{ + GPUInfo info; + + // device type + VkPhysicalDeviceProperties physicalDeviceProperties; + vkGetPhysicalDeviceProperties(kPhysicalDevice, &physicalDeviceProperties); + + // GPU reference. + // mali + // t760 = 0x13b5 0x7500001 / 0x7501000 + // t860 = 0x13b5 0x8602000 + // t880 = 0x13b5 0x8800020 + // g31 = 0x13b5 0x70930000 + // g51 = 0x13b5 0x70901010 + // g52 = 0x13b5 0x74021000 / 0x72120000 + // g71 = 0x13b5 0x60a00002 + // g72 = 0x13b5 0x62210001 + // g76 = 0x13b5 0x72110000 + // g77 = 0x13b5 0x90800011 + + // adreno + // 506 = 0x5143 0x5000600 + // 510 = 0x5143 0x5010000 + // 512 = 0x5143 0x5010200 + // 530 = 0x5143 0x5030004 + // 540 = 0x5143 0x5040001 + // 616 = 0x5143 0x6010600 + // 630 = 0x5143 0x6030001 + // 640 = 0x5143 0x6040001 + // 650 = 0x5143 0x6050002 + + CV_LOG_INFO(NULL, "Begin parse GPU Info "< queueFamilyProperties(queueFamilyPropertiesCount); + vkGetPhysicalDeviceQueueFamilyProperties(kPhysicalDevice, &queueFamilyPropertiesCount, queueFamilyProperties.data()); + + info.computeQueueFamilyIndex = findDeviceComputeQueue(queueFamilyProperties); + info.graphicsQueueFamilyIndex = findDeviceGraphicsQueue(queueFamilyProperties); + info.transferQueueFamilyIndex = findDeviceTransferQueue(queueFamilyProperties); + + info.computeQueueCount = queueFamilyProperties[info.computeQueueFamilyIndex].queueCount; + info.graphicsQueueCount = queueFamilyProperties[info.graphicsQueueFamilyIndex].queueCount; + info.transferQueueCount = queueFamilyProperties[info.transferQueueFamilyIndex].queueCount; + + info.unifiedComputeTransferQueue = info.computeQueueFamilyIndex == info.transferQueueFamilyIndex; + + // additional device properties + info.subgroupSize = 64; + info.supportSubgroupBasic = false; + info.supportSubgroupVote = false; + info.supportSubgroupBallot = false; + info.supportSubgroupShuffle = false; + + if (support_VK_KHR_get_physical_device_properties2) + { + void* queryDeviceProperties = 0; + + // query subgroup + VkPhysicalDeviceSubgroupProperties physicalDeviceSubgroupProperties; + physicalDeviceSubgroupProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES; + physicalDeviceSubgroupProperties.pNext = queryDeviceProperties; + if (VK_VERSION_MAJOR(instanceApiVersion) >= 1 && VK_VERSION_MINOR(instanceApiVersion) >= 1) + { + queryDeviceProperties = &physicalDeviceSubgroupProperties; + } + + VkPhysicalDeviceProperties2KHR queryProperties; + queryProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR; + queryProperties.pNext = queryDeviceProperties; + vkGetPhysicalDeviceProperties2KHR = (PFN_vkGetPhysicalDeviceProperties2KHR)vkGetInstanceProcAddr(kInstance, "vkGetPhysicalDeviceProperties2KHR"); + vkGetPhysicalDeviceProperties2KHR(kPhysicalDevice, &queryProperties); + + if (VK_VERSION_MAJOR(instanceApiVersion) >= 1 && VK_VERSION_MINOR(instanceApiVersion) >= 1) + { + info.subgroupSize = physicalDeviceSubgroupProperties.subgroupSize; + if (physicalDeviceSubgroupProperties.supportedStages & VK_SHADER_STAGE_COMPUTE_BIT) + { + info.supportSubgroupBasic = physicalDeviceSubgroupProperties.supportedOperations & VK_SUBGROUP_FEATURE_BASIC_BIT; + info.supportSubgroupVote = physicalDeviceSubgroupProperties.supportedOperations & VK_SUBGROUP_FEATURE_VOTE_BIT; + info.supportSubgroupBallot = physicalDeviceSubgroupProperties.supportedOperations & VK_SUBGROUP_FEATURE_BALLOT_BIT; + info.supportSubgroupShuffle = physicalDeviceSubgroupProperties.supportedOperations & VK_SUBGROUP_FEATURE_SHUFFLE_BIT; + } + } + else + { + if (physicalDeviceProperties.vendorID == 0x5143) // qcom adreno prefer very large workgroup :P + info.subgroupSize = 128; + if (physicalDeviceProperties.vendorID == 0x13b5) // arm mali + info.subgroupSize = 16; + if (physicalDeviceProperties.vendorID == 0x1010) // imgtec powervr + info.subgroupSize = 32; + if (physicalDeviceProperties.vendorID == 0x1002) // amd + info.subgroupSize = 64; + if (physicalDeviceProperties.vendorID == 0x10de) // nvidia + info.subgroupSize = 32; + if (physicalDeviceProperties.vendorID == 0x8086) // intel + info.subgroupSize = 32; + } + } + + // cache memory properties + vkGetPhysicalDeviceMemoryProperties(kPhysicalDevice, &info.physicalDeviceMemoryProperties); + + // get device extension + uint32_t deviceExtensionPropertyCount = 0; + VK_CHECK_RESULT(vkEnumerateDeviceExtensionProperties(kPhysicalDevice, NULL, &deviceExtensionPropertyCount, NULL)); + + std::vector deviceExtensionProperties(deviceExtensionPropertyCount); + VK_CHECK_RESULT(vkEnumerateDeviceExtensionProperties(kPhysicalDevice, NULL, &deviceExtensionPropertyCount, deviceExtensionProperties.data())); + + // extension capability + info.support_VK_KHR_8bit_storage = 0; + info.support_VK_KHR_16bit_storage = 0; + info.support_VK_KHR_bind_memory2 = 0; + info.support_VK_KHR_create_renderpass2 = 0; + info.support_VK_KHR_dedicated_allocation = 0; + info.support_VK_KHR_descriptor_update_template = 0; + info.support_VK_KHR_external_memory = 0; + info.support_VK_KHR_get_memory_requirements2 = 0; + info.support_VK_KHR_maintenance1 = 0; + info.support_VK_KHR_maintenance2 = 0; + info.support_VK_KHR_maintenance3 = 0; + info.support_VK_KHR_multiview = 0; + info.support_VK_KHR_portability_subset = 0; + info.support_VK_KHR_push_descriptor = 0; + info.support_VK_KHR_sampler_ycbcr_conversion = 0; + info.support_VK_KHR_shader_float16_int8 = 0; + info.support_VK_KHR_shader_float_controls = 0; + info.support_VK_KHR_storage_buffer_storage_class = 0; + info.support_VK_KHR_swapchain = 0; + info.support_VK_EXT_descriptor_indexing = 0; + info.support_VK_EXT_memory_budget = 0; + info.support_VK_EXT_queue_family_foreign = 0; +#if defined(__ANDROID_API__) && __ANDROID_API__ >= 26 + gpu_info.support_VK_ANDROID_external_memory_android_hardware_buffer = 0; +#endif // __ANDROID_API__ >= 26 + info.support_VK_NV_cooperative_matrix = 0; + for (uint32_t j = 0; j < deviceExtensionPropertyCount; j++) + { + const VkExtensionProperties& exp = deviceExtensionProperties[j]; + + if (strcmp(exp.extensionName, "VK_KHR_8bit_storage") == 0) + info.support_VK_KHR_8bit_storage = exp.specVersion; + else if (strcmp(exp.extensionName, "VK_KHR_16bit_storage") == 0) + info.support_VK_KHR_16bit_storage = exp.specVersion; + else if (strcmp(exp.extensionName, "VK_KHR_bind_memory2") == 0) + info.support_VK_KHR_bind_memory2 = exp.specVersion; + else if (strcmp(exp.extensionName, "VK_KHR_create_renderpass2") == 0) + info.support_VK_KHR_create_renderpass2 = exp.specVersion; + else if (strcmp(exp.extensionName, "VK_KHR_dedicated_allocation") == 0) + info.support_VK_KHR_dedicated_allocation = exp.specVersion; + else if (strcmp(exp.extensionName, "VK_KHR_descriptor_update_template") == 0) + info.support_VK_KHR_descriptor_update_template = exp.specVersion; + else if (strcmp(exp.extensionName, "VK_KHR_external_memory") == 0) + info.support_VK_KHR_external_memory = exp.specVersion; + else if (strcmp(exp.extensionName, "VK_KHR_get_memory_requirements2") == 0) + info.support_VK_KHR_get_memory_requirements2 = exp.specVersion; + else if (strcmp(exp.extensionName, "VK_KHR_maintenance1") == 0) + info.support_VK_KHR_maintenance1 = exp.specVersion; + else if (strcmp(exp.extensionName, "VK_KHR_maintenance2") == 0) + info.support_VK_KHR_maintenance2 = exp.specVersion; + else if (strcmp(exp.extensionName, "VK_KHR_maintenance3") == 0) + info.support_VK_KHR_maintenance3 = exp.specVersion; + else if (strcmp(exp.extensionName, "VK_KHR_multiview") == 0) + info.support_VK_KHR_multiview = exp.specVersion; + else if (strcmp(exp.extensionName, "VK_KHR_portability_subset") == 0) + info.support_VK_KHR_portability_subset = exp.specVersion; + else if (strcmp(exp.extensionName, "VK_KHR_push_descriptor") == 0) + info.support_VK_KHR_push_descriptor = exp.specVersion; + else if (strcmp(exp.extensionName, "VK_KHR_sampler_ycbcr_conversion") == 0) + info.support_VK_KHR_sampler_ycbcr_conversion = exp.specVersion; + else if (strcmp(exp.extensionName, "VK_KHR_shader_float16_int8") == 0) + info.support_VK_KHR_shader_float16_int8 = exp.specVersion; + else if (strcmp(exp.extensionName, "VK_KHR_shader_float_controls") == 0) + info.support_VK_KHR_shader_float_controls = exp.specVersion; + else if (strcmp(exp.extensionName, "VK_KHR_storage_buffer_storage_class") == 0) + info.support_VK_KHR_storage_buffer_storage_class = exp.specVersion; + else if (strcmp(exp.extensionName, "VK_KHR_swapchain") == 0) + info.support_VK_KHR_swapchain = exp.specVersion; + else if (strcmp(exp.extensionName, "VK_EXT_descriptor_indexing") == 0) + info.support_VK_EXT_descriptor_indexing = exp.specVersion; + else if (strcmp(exp.extensionName, "VK_EXT_memory_budget") == 0) + info.support_VK_EXT_memory_budget = exp.specVersion; + else if (strcmp(exp.extensionName, "VK_EXT_queue_family_foreign") == 0) + info.support_VK_EXT_queue_family_foreign = exp.specVersion; +#if defined(__ANDROID_API__) && __ANDROID_API__ >= 26 + else if (strcmp(exp.extensionName, "VK_ANDROID_external_memory_android_hardware_buffer") == 0) + info.support_VK_ANDROID_external_memory_android_hardware_buffer = exp.specVersion; +#endif // __ANDROID_API__ >= 26 + else if (strcmp(exp.extensionName, "VK_NV_cooperative_matrix") == 0) + info.support_VK_NV_cooperative_matrix = exp.specVersion; + } + + // check features + info.support_fp16_packed = true; + info.support_fp16_storage = false; + info.support_fp16_arithmetic = false; + info.support_int8_packed = true; + info.support_int8_storage = false; + info.support_int8_arithmetic = false; + + if (support_VK_KHR_get_physical_device_properties2) + { + void* queryExtensionFeatures = 0; + + VkPhysicalDevice8BitStorageFeaturesKHR query8BitStorageFeatures; + query8BitStorageFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR; + query8BitStorageFeatures.pNext = 0; + if (info.support_VK_KHR_8bit_storage) + { + query8BitStorageFeatures.pNext = queryExtensionFeatures; + queryExtensionFeatures = &query8BitStorageFeatures; + } + + // query fp16/int16 storage + VkPhysicalDevice16BitStorageFeaturesKHR query16BitStorageFeatures; + query16BitStorageFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR; + query16BitStorageFeatures.pNext = 0; + if (info.support_VK_KHR_16bit_storage) + { + query16BitStorageFeatures.pNext = queryExtensionFeatures; + queryExtensionFeatures = &query16BitStorageFeatures; + } + + // query fp16/int8 arithmetic + VkPhysicalDeviceFloat16Int8FeaturesKHR queryFloat16Int8Features; + queryFloat16Int8Features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR; + queryFloat16Int8Features.pNext = 0; + if (info.support_VK_KHR_shader_float16_int8) + { + queryFloat16Int8Features.pNext = queryExtensionFeatures; + queryExtensionFeatures = &queryFloat16Int8Features; + } + + VkPhysicalDeviceFeatures2KHR queryFeatures; + queryFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR; + queryFeatures.pNext = queryExtensionFeatures; + + vkGetPhysicalDeviceFeatures2KHR(kPhysicalDevice, &queryFeatures); + + if (info.support_VK_KHR_8bit_storage) + { + info.support_int8_storage = query8BitStorageFeatures.storageBuffer8BitAccess; + } + if (info.support_VK_KHR_16bit_storage && queryFeatures.features.shaderStorageImageExtendedFormats) + { + // shaderStorageImageExtendedFormats enables r16f format in storage image + info.support_fp16_storage = query16BitStorageFeatures.storageBuffer16BitAccess; + } + if (info.support_VK_KHR_shader_float16_int8) + { + info.support_fp16_arithmetic = queryFloat16Int8Features.shaderFloat16; + info.support_int8_arithmetic = queryFloat16Int8Features.shaderInt8; + } + } + + if (physicalDeviceProperties.vendorID == 0x13b5 && physicalDeviceProperties.apiVersion < VK_MAKE_VERSION(1, 0, 82)) + { + // the 16bit_storage implementation of arm mali driver is buggy :[ + info.support_fp16_storage = false; + } + + if (physicalDeviceProperties.vendorID == 0x10002 && physicalDeviceProperties.deviceID == 0x70006214 && physicalDeviceProperties.apiVersion == VK_MAKE_VERSION(1, 1, 82)) + { + // the 16bit_storage implementation of vivante gc1700 driver is buggy :[ + info.support_fp16_storage = false; + } + CV_LOG_INFO(NULL, "GPU id "< 0) + return 0; + + CV_LOG_ERROR(NULL, "no vulkan device"); + return -1; +} + +void Context::reset() +{ + cmdPoolPtr->reset(); + pipelineFactoryPtr->reset(); } Context::~Context() { - vkDestroyCommandPool(kDevice, kCmdPool, NULL); - vkDestroyDevice(kDevice, NULL); + cmdPoolPtr.release(); + pipelineFactoryPtr.release(); - if (enableValidationLayers) { + if (enableValidationLayers) + { auto func = (PFN_vkDestroyDebugReportCallbackEXT) - vkGetInstanceProcAddr(kInstance, "vkDestroyDebugReportCallbackEXT"); + vkGetInstanceProcAddr(kInstance, "vkDestroyDebugReportCallbackEXT"); + if (func == nullptr) { CV_LOG_FATAL(NULL, "Could not load vkDestroyDebugReportCallbackEXT"); @@ -290,12 +846,42 @@ Context::~Context() func(kInstance, kDebugReportCallback, NULL); } } - kShaders.clear(); - vkDestroyInstance(kInstance, NULL); - return; + // TODO: release the kDevice and kInstance in Windows. + /* Because dnn dynamically load vulkan library at runtime. On windows, it may be encountered that the vulkan-related + * library is unloaded before the destructor is executed. And the following two lines will cause a segmentation fault. + * And currently, we will release the vulkan related resource in Linux and MacOS, but not in Windows. + * */ +#ifndef _WIN32 + vkDestroyDevice(kDevice, NULL); + vkDestroyInstance(kInstance, NULL); +#endif +} + +static Ptr contextInstance = nullptr; +static bool callOnce = false; + +Ptr Context::create() +{ + cv::AutoLock lock(kContextMtx); + if (!callOnce) + { + callOnce = true; + contextInstance = Ptr(new Context()); + } + return contextInstance; +} + +bool isAvailable() +{ + // create context to initialize the kDevice. + if (kDevice == VK_NULL_HANDLE) + { + Context::create(); + } + return kDevice != VK_NULL_HANDLE; } #endif // HAVE_VULKAN -}}} // namespace cv::dnn::vkcom +}}} // namespace cv::dnn::vkcom \ No newline at end of file diff --git a/modules/dnn/src/vkcom/src/context.hpp b/modules/dnn/src/vkcom/src/context.hpp deleted file mode 100644 index fbf2d8e9a1..0000000000 --- a/modules/dnn/src/vkcom/src/context.hpp +++ /dev/null @@ -1,28 +0,0 @@ -// This file is part of OpenCV project. -// It is subject to the license terms in the LICENSE file found in the top-level directory -// of this distribution and at http://opencv.org/license.html. -// -// Copyright (C) 2018, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. - -#ifndef OPENCV_DNN_VKCOM_CONTEXT_HPP -#define OPENCV_DNN_VKCOM_CONTEXT_HPP - -namespace cv { namespace dnn { namespace vkcom { - -#ifdef HAVE_VULKAN - -class Context -{ -public: - Context(); - ~Context(); -}; - -void createContext(); - -#endif // HAVE_VULKAN - -}}} // namespace cv::dnn::vkcom - -#endif // OPENCV_DNN_VKCOM_CONTEXT_HPP diff --git a/modules/dnn/src/vkcom/src/fence.cpp b/modules/dnn/src/vkcom/src/fence.cpp new file mode 100644 index 0000000000..97ce88a4de --- /dev/null +++ b/modules/dnn/src/vkcom/src/fence.cpp @@ -0,0 +1,49 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. + +#include "../../precomp.hpp" +#include "internal.hpp" +#include "../include/fence.hpp" + +namespace cv { namespace dnn { namespace vkcom { +#ifdef HAVE_VULKAN + +Fence::Fence() +{ + VkFenceCreateInfo fci{ + /* .sType = */ VK_STRUCTURE_TYPE_FENCE_CREATE_INFO, + /* .pNext = */ nullptr, + /* .flags = */ 0, + }; + vkCreateFence(kDevice, &fci, nullptr, &fence); +} + +VkFence Fence::get() const +{ + return fence; +} + +VkResult Fence::reset() const +{ + return vkResetFences(kDevice, 1, &fence); +} + +VkResult Fence::wait() const +{ + auto status = VK_TIMEOUT; + + do { + status = vkWaitForFences(kDevice, 1, &fence, VK_TRUE, 5000000000); + } while (status == VK_TIMEOUT); + + return status; +} + +Fence::~Fence() +{ + vkDestroyFence(kDevice, fence, nullptr); +} + +#endif // HAVE_VULKAN +}}} // namespace cv::dnn::vkcom \ No newline at end of file diff --git a/modules/dnn/src/vkcom/src/internal.cpp b/modules/dnn/src/vkcom/src/internal.cpp index bdf8f9823d..f1e88b90f1 100644 --- a/modules/dnn/src/vkcom/src/internal.cpp +++ b/modules/dnn/src/vkcom/src/internal.cpp @@ -1,153 +1,54 @@ // This file is part of OpenCV project. // It is subject to the license terms in the LICENSE file found in the top-level directory // of this distribution and at http://opencv.org/license.html. -// -// Copyright (C) 2018, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. #include "../../precomp.hpp" -#include "common.hpp" #include "internal.hpp" namespace cv { namespace dnn { namespace vkcom { - #ifdef HAVE_VULKAN -std::vector compile(const std::string& name, - shaderc_shader_kind kind, - const std::string& data) +bool checkFormat(Format fmt) { - std::vector result; -#ifdef USE_SHADERC - shaderc::Compiler compiler; - shaderc::CompileOptions options; - - // Like -DMY_DEFINE=1 - //options.AddMacroDefinition("MY_DEFINE", "1"); - options.SetGenerateDebugInfo(); - options.SetTargetEnvironment(shaderc_target_env_vulkan, shaderc_env_version_vulkan_1_1); - shaderc::SpvCompilationResult module = compiler.CompileGlslToSpv( - data.c_str(), data.size(), kind, name.c_str(), options); - - if (module.GetCompilationStatus() != - shaderc_compilation_status_success) { - std::cerr << module.GetErrorMessage(); - } - - //std::vector result(module.cbegin(), module.cend()); - result.assign(module.cbegin(), module.cend()); - return result; -#else - assert(0); - return result; -#endif + return (fmt > -1 && fmt < kFormatNum) ? true : false; } -void bindTensor(VkDevice& device, Tensor& tensor, int binding, VkDescriptorSet descriptor_set) +size_t elementSize(Format fmt) { - VkDescriptorBufferInfo desc_buffer_info = {}; - desc_buffer_info.buffer = tensor.getBuffer()->getVkBuffer(); - desc_buffer_info.offset = 0; - desc_buffer_info.range = tensor.size(); - - VkWriteDescriptorSet write_descriptor_set = {}; - write_descriptor_set.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET; - write_descriptor_set.dstSet = descriptor_set; - write_descriptor_set.dstBinding = binding; - write_descriptor_set.descriptorCount = 1; - write_descriptor_set.descriptorType = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER; - write_descriptor_set.pBufferInfo = &desc_buffer_info; - - vkUpdateDescriptorSets(device, 1, &write_descriptor_set, 0, NULL); -} - -void computeConvOutputShapeAndPadding(const PaddingMode& padding_mode, - int& padding_top, int& padding_left, - const int& in_h, const int& in_w, - const int& filter_h, const int& filter_w, - const int& dilation_h, const int& dilation_w, - const int& stride_h, const int& stride_w, - int& out_h, int& out_w) -{ - if (padding_mode == kPaddingModeValid) + if (fmt == kFormatFp32 || fmt == kFormatInt32) { - padding_top = 0; - padding_left = 0; - out_h = ceil((in_h - (filter_h - 1) * dilation_h) / stride_h); - out_w = ceil((in_w - (filter_w - 1) * dilation_w) / stride_w); + return 4; } - else if (padding_mode == kPaddingModeSame) + else if (fmt >= 0 && fmt < kFormatNum) { - padding_top = ((filter_h - 1) * dilation_h + 1) / 2; - padding_left = ((filter_w - 1) * dilation_w + 1) / 2; - out_h = ceil(in_h / stride_h); - out_w = ceil(in_w / stride_w); - } - else if (padding_mode == kPaddingModeCaffe) - { - const int filter_h_actual = dilation_h * (filter_h - 1) + 1; - const int filter_w_actual = dilation_w * (filter_w - 1) + 1; - out_h = (in_h + 2 * padding_top - filter_h_actual) / stride_h + 1; - out_w = (in_w + 2 * padding_left - filter_w_actual) / stride_w + 1; + CV_LOG_WARNING(NULL, format("Unsupported format %d", fmt)); } else { - CV_Error(Error::StsError, format("Invalid padding mode:%d", padding_mode)); + CV_Error(Error::StsError, format("Invalid format %d", fmt)); } + return 0; } -void computePoolOutputShape(const PaddingMode& padding_mode, - const int& padding_top, const int& padding_left, - const int& in_h, const int& in_w, - const int& filter_h, const int& filter_w, - const int& stride_h, const int& stride_w, - int& out_h, int& out_w) +int shapeCount(const Shape& shape, int start, int end) { - if (padding_mode == kPaddingModeValid) - { - assert(padding_top == 0); - assert(padding_left == 0); - out_h = ceil((in_h - (filter_h - 1)) / stride_h); - out_w = ceil((in_h - (filter_w - 1)) / stride_w); - } - else if (padding_mode == kPaddingModeSame) - { - const int padding_top_ = filter_h / 2; - const int padding_left_ = filter_w / 2; - CV_Assert(padding_top == padding_top_); - CV_Assert(padding_left == padding_left_); - out_h = ceil(in_h / stride_h); - out_w = ceil(in_h / stride_w); - } - else if (padding_mode == kPaddingModeCaffe) - { - int out_h_ = static_cast(ceil(static_cast( - in_h + 2 * padding_top - filter_h) / stride_h)) + 1; - int out_w_ = static_cast(ceil(static_cast( - in_h + 2 * padding_left - filter_w) / stride_w)) + 1; + if (start == -1) start = 0; + if (end == -1) end = (int)shape.size(); - if (padding_top || padding_left) - { - // If we have padding, ensure that the last pooling starts strictly - // inside the image (instead of at the padding); otherwise clip the last. - if ((out_h_ - 1) * stride_h >= in_h + padding_top) { - --out_h_; - } - if ((out_w - 1) * stride_h >= in_h + padding_left) { - --out_w; - } - assert((out_h_ - 1) * stride_h < in_h + padding_top); - assert((out_w_ - 1) * stride_w < in_h + padding_left); - } - out_h = out_h_; - out_w = out_w_; - } - else + if (shape.empty()) + return 0; + + int elems = 1; + assert(start <= (int)shape.size() && + end <= (int)shape.size() && + start <= end); + for(int i = start; i < end; i++) { - CV_Error(Error::StsError, format("Invalid padding mode:%d", padding_mode)); + elems *= shape[i]; } + return elems; } #endif // HAVE_VULKAN -}}} // namespace cv::dnn::vkcom +}}} // namespace cv::dnn::vkcom \ No newline at end of file diff --git a/modules/dnn/src/vkcom/src/internal.hpp b/modules/dnn/src/vkcom/src/internal.hpp index a2e4955a33..19b2d1df43 100644 --- a/modules/dnn/src/vkcom/src/internal.hpp +++ b/modules/dnn/src/vkcom/src/internal.hpp @@ -5,87 +5,93 @@ // Copyright (C) 2018, Intel Corporation, all rights reserved. // Third party copyrights are property of their respective owners. -#ifndef OPENCV_DNN_VKCOM_INTERNAL_HPP -#define OPENCV_DNN_VKCOM_INTERNAL_HPP +#ifndef OPENCV_DNN_VKCOM_COMMON_HPP +#define OPENCV_DNN_VKCOM_COMMON_HPP -#include -#include "../include/vkcom.hpp" -#include "context.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -#ifdef USE_SHADERC -#include "shaderc/shaderc.hpp" -#else -typedef int shaderc_shader_kind; -#define shaderc_compute_shader 0 +#ifdef HAVE_VULKAN +#include #endif +#include "opencv2/core/utils/logger.hpp" +#include "../vulkan/vk_functions.hpp" +#include "../include/vkcom.hpp" +#include "../shader/spv_shader.hpp" +//#include "../vulkan/vk_functions.hpp" +//#include "../vulkan/vk_loader.hpp" + namespace cv { namespace dnn { namespace vkcom { #ifdef HAVE_VULKAN +extern VkQueue kQueue; +extern VkDevice kDevice; +extern cv::Mutex kContextMtx; +extern Ptr cmdPoolPtr; +extern Ptr pipelineFactoryPtr; +extern VkPhysicalDeviceMemoryProperties physicalDeviceMemoryProperties; -Context* getContext(); -VkPhysicalDevice getPhysicalDevice(); -std::vector compile(const std::string& name, - shaderc_shader_kind kind, - const std::string& data); -void bindTensor(VkDevice& device, Tensor& tensor, int binding, VkDescriptorSet descriptor_set); -void computeConvOutputShapeAndPadding(const PaddingMode& padding_mode, - int& padding_top, int& padding_left, - const int& in_h, const int& in_w, - const int& filter_h, const int& filter_w, - const int& dilation_h, const int& dilation_w, - const int& stride_h, const int& stride_w, - int& out_h, int& out_w); -void computePoolOutputShape(const PaddingMode& padding_mode, - const int& padding_top, const int& padding_left, - const int& in_h, const int& in_w, - const int& filter_h, const int& filter_w, - const int& stride_h, const int& stride_w, - int& out_h, int& out_w); -inline bool checkFormat(Format fmt) + +enum ShapeIdx { - return (fmt > -1 && fmt < kFormatNum) ? true : false; + kShapeIdxBatch = 0, + kShapeIdxChannel, + kShapeIdxHeight, + kShapeIdxWidth, +}; + +#define VK_CHECK_RESULT(f) \ +{ \ + if (f != VK_SUCCESS) \ + { \ + CV_LOG_ERROR(NULL, "Vulkan check failed, result = " << (int)f); \ + CV_Error(Error::StsError, "Vulkan check failed"); \ + } \ } -inline size_t elementSize(Format fmt) -{ - if (fmt == kFormatFp32 || fmt == kFormatInt32) - { - return 4; - } - else if (fmt >= 0 && fmt < kFormatNum) - { - CV_LOG_WARNING(NULL, format("Unsupported format %d", fmt)); - } - else - { - CV_Error(Error::StsError, format("Invalid format %d", fmt)); - } - return 0; +#define VKCOM_CHECK_BOOL_RET_VAL(val, ret) \ +{ \ + bool res = (val); \ + if (!res) \ + { \ + CV_LOG_WARNING(NULL, "Check bool failed"); \ + return ret; \ + } \ } -inline int shapeCount(const Shape& shape, int start = -1, int end = -1) -{ - if (start == -1) start = 0; - if (end == -1) end = (int)shape.size(); - - if (shape.empty()) - return 0; - - int elems = 1; - assert(start <= (int)shape.size() && - end <= (int)shape.size() && - start <= end); - for(int i = start; i < end; i++) - { - elems *= shape[i]; - } - return elems; +#define VKCOM_CHECK_POINTER_RET_VOID(p) \ +{ \ + if (NULL == (p)) \ + { \ + CV_LOG_WARNING(NULL, "Check pointer failed"); \ + return; \ + } \ } +#define VKCOM_CHECK_POINTER_RET_VAL(p, val) \ +{ \ + if (NULL == (p)) \ + { \ + CV_LOG_WARNING(NULL, "Check pointer failed"); \ + return (val); \ + } \ +} + +bool checkFormat(Format fmt); +size_t elementSize(Format fmt); +int shapeCount(const Shape& shape, int start = -1, int end = -1); #endif // HAVE_VULKAN }}} // namespace cv::dnn::vkcom -#endif // OPENCV_DNN_VKCOM_INTERNAL_HPP +#endif // OPENCV_DNN_VKCOM_COMMON_HPP diff --git a/modules/dnn/src/vkcom/src/op_base.cpp b/modules/dnn/src/vkcom/src/op_base.cpp index 1416af3613..36d92ad09b 100644 --- a/modules/dnn/src/vkcom/src/op_base.cpp +++ b/modules/dnn/src/vkcom/src/op_base.cpp @@ -6,7 +6,6 @@ // Third party copyrights are property of their respective owners. #include "../../precomp.hpp" -#include "common.hpp" #include "internal.hpp" #include "../include/op_base.hpp" @@ -16,176 +15,10 @@ namespace cv { namespace dnn { namespace vkcom { OpBase::OpBase() { - createContext(); - device_ = kDevice; - pipeline_ = VK_NULL_HANDLE; - cmd_buffer_ = VK_NULL_HANDLE; - descriptor_pool_ = VK_NULL_HANDLE; - descriptor_set_ = VK_NULL_HANDLE; - descriptor_set_layout_ = VK_NULL_HANDLE; - pipeline_layout_ = VK_NULL_HANDLE; - module_ = VK_NULL_HANDLE; } OpBase::~OpBase() { - vkDestroyShaderModule(device_, module_, NULL); - vkDestroyDescriptorPool(device_, descriptor_pool_, NULL); - vkDestroyDescriptorSetLayout(device_, descriptor_set_layout_, NULL); - vkDestroyPipeline(device_, pipeline_, NULL); - vkDestroyPipelineLayout(device_, pipeline_layout_, NULL); -} - -void OpBase::initVulkanThing(int buffer_num) -{ - createDescriptorSetLayout(buffer_num); - createDescriptorSet(buffer_num); - createCommandBuffer(); -} - -void OpBase::createDescriptorSetLayout(int buffer_num) -{ - if (buffer_num <= 0) - return; - std::vector bindings(buffer_num); - for (int i = 0; i < buffer_num; i++) - { - bindings[i].binding = i; - bindings[i].descriptorType = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER; - bindings[i].descriptorCount = 1; - bindings[i].stageFlags = VK_SHADER_STAGE_COMPUTE_BIT; - } - VkDescriptorSetLayoutCreateInfo info = {}; - info.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO; - info.bindingCount = buffer_num; - info.pBindings = &bindings[0]; - VK_CHECK_RESULT(vkCreateDescriptorSetLayout(device_, &info, NULL, &descriptor_set_layout_)); -} - -void OpBase::createDescriptorSet(int buffer_num) -{ - VkDescriptorPoolSize pool_size = {}; - pool_size.type = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER; - pool_size.descriptorCount = buffer_num; - - VkDescriptorPoolCreateInfo info = {}; - info.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO; - info.maxSets = 1; - info.poolSizeCount = 1; - info.pPoolSizes = &pool_size; - VK_CHECK_RESULT(vkCreateDescriptorPool(device_, &info, NULL, &descriptor_pool_)); - - VkDescriptorSetAllocateInfo allocate_info = {}; - allocate_info.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO; - allocate_info.descriptorPool = descriptor_pool_; - allocate_info.descriptorSetCount = 1; - allocate_info.pSetLayouts = &descriptor_set_layout_; - VK_CHECK_RESULT(vkAllocateDescriptorSets(device_, &allocate_info, &descriptor_set_)); -} - -void OpBase::createShaderModule(const uint32_t* spv, size_t sz, const std::string& source) -{ - VkShaderModuleCreateInfo create_info = {}; - create_info.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO; - if (spv) - { - create_info.pCode = spv; - create_info.codeSize = sz; - } - else - { - // online compilation - std::vector code; - code = compile("shader", shaderc_compute_shader, source); - create_info.pCode = code.data(); - create_info.codeSize = sizeof(uint32_t) * code.size(); - } - VK_CHECK_RESULT(vkCreateShaderModule(device_, &create_info, NULL, &module_)); -} - -void OpBase::createPipeline(size_t push_constants_size, VkSpecializationInfo* specialization_info) -{ - // create pipeline - VkPipelineShaderStageCreateInfo stage_create_info = {}; - stage_create_info.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO; - stage_create_info.stage = VK_SHADER_STAGE_COMPUTE_BIT; - stage_create_info.module = module_; - stage_create_info.pName = "main"; - stage_create_info.pSpecializationInfo = specialization_info; - VkPushConstantRange push_constant_ranges[1] = {}; - push_constant_ranges[0].stageFlags = VK_SHADER_STAGE_COMPUTE_BIT; - push_constant_ranges[0].offset = 0; - push_constant_ranges[0].size = push_constants_size; - - VkPipelineLayoutCreateInfo pipeline_layout_create_info = {}; - pipeline_layout_create_info.sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO; - if (push_constants_size != 0) - { - pipeline_layout_create_info.pushConstantRangeCount = 1; - pipeline_layout_create_info.pPushConstantRanges = push_constant_ranges; - } - pipeline_layout_create_info.setLayoutCount = 1; - pipeline_layout_create_info.pSetLayouts = &descriptor_set_layout_; - VK_CHECK_RESULT(vkCreatePipelineLayout(device_, &pipeline_layout_create_info, - NULL, &pipeline_layout_)); - - VkComputePipelineCreateInfo pipeline_create_info = {}; - pipeline_create_info.sType = VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO; - pipeline_create_info.stage = stage_create_info; - pipeline_create_info.layout = pipeline_layout_; - VK_CHECK_RESULT(vkCreateComputePipelines(device_, VK_NULL_HANDLE, - 1, &pipeline_create_info, - NULL, &pipeline_)); -} - -void OpBase::createCommandBuffer() -{ - VkCommandBufferAllocateInfo info = {}; - info.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO; - info.commandPool = kCmdPool; - info.level = VK_COMMAND_BUFFER_LEVEL_PRIMARY; - info.commandBufferCount = 1; - VK_CHECK_RESULT(vkAllocateCommandBuffers(device_, &info, &cmd_buffer_)); -} - -void OpBase::recordCommandBuffer(void* push_constants, size_t push_constants_size) -{ - VkCommandBufferBeginInfo beginInfo = {}; - beginInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO; - beginInfo.flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT; - cv::AutoLock lock(kContextMtx); - VK_CHECK_RESULT(vkBeginCommandBuffer(cmd_buffer_, &beginInfo)); - if (push_constants) - vkCmdPushConstants(cmd_buffer_, pipeline_layout_, - VK_SHADER_STAGE_COMPUTE_BIT, 0, - push_constants_size, push_constants); - vkCmdBindPipeline(cmd_buffer_, VK_PIPELINE_BIND_POINT_COMPUTE, pipeline_); - vkCmdBindDescriptorSets(cmd_buffer_, VK_PIPELINE_BIND_POINT_COMPUTE, - pipeline_layout_, 0, 1, &descriptor_set_, 0, NULL); - vkCmdDispatch(cmd_buffer_, group_x_, group_y_, group_z_); - - VK_CHECK_RESULT(vkEndCommandBuffer(cmd_buffer_)); -} - -void OpBase::runCommandBuffer() -{ - VkSubmitInfo submit_info = {}; - submit_info.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO; - submit_info.commandBufferCount = 1; - submit_info.pCommandBuffers = &cmd_buffer_; - - VkFence fence; - VkFenceCreateInfo fence_create_info_ = {}; - fence_create_info_.sType = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO; - fence_create_info_.flags = 0; - - VK_CHECK_RESULT(vkCreateFence(device_, &fence_create_info_, NULL, &fence)); - { - cv::AutoLock lock(kContextMtx); - VK_CHECK_RESULT(vkQueueSubmit(kQueue, 1, &submit_info, fence)); - } - VK_CHECK_RESULT(vkWaitForFences(device_, 1, &fence, VK_TRUE, 100000000000)); - vkDestroyFence(device_, fence, NULL); } #endif // HAVE_VULKAN diff --git a/modules/dnn/src/vkcom/src/op_concat.cpp b/modules/dnn/src/vkcom/src/op_concat.cpp deleted file mode 100644 index fbc6a098eb..0000000000 --- a/modules/dnn/src/vkcom/src/op_concat.cpp +++ /dev/null @@ -1,138 +0,0 @@ -// This file is part of OpenCV project. -// It is subject to the license terms in the LICENSE file found in the top-level directory -// of this distribution and at http://opencv.org/license.html. -// -// Copyright (C) 2018, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. - -#include "../../precomp.hpp" -#include "common.hpp" -#include "internal.hpp" -#include "../include/op_concat.hpp" - -namespace cv { namespace dnn { namespace vkcom { - -#ifdef HAVE_VULKAN - -#define LOCAL_SZ_X 256 - -struct ConcatParam { - int out_concat_axis; - int accumulated_concat_axis; - int concat_size; - int total_concat_size; - int thread_num; -}; - -OpConcat::OpConcat(const int axis) -{ - init(axis); - type_ = "Concat"; -} - -bool OpConcat::init(const int axis) -{ - axis_ = axis; -#define BUFFER_NUM 2 - OpBase::initVulkanThing(BUFFER_NUM); - return true; -} - -void OpConcat::reshapeOutTensor(std::vector& in, Tensor& out) -{ - int sum_axis = 0; - - for (int i = 0; i < in.size(); ++i) - { - sum_axis += in[i]->dimSize(axis_); - } - - Shape shape = in[0]->getShape(); - shape[axis_] = sum_axis; - out.reshape(NULL, shape); -} - -bool OpConcat::forward(std::vector& ins, - std::vector& blobs, - std::vector& outs) -{ - return forward(ins, outs[0]); -} - -bool OpConcat::forward(std::vector& ins, Tensor& out) -{ - int input_num = ins.size(); - Tensor& first_tensor = ins[0]; - int sum_axis = first_tensor.dimSize(axis_); - int dim_num = first_tensor.dimNum(); - for (int i = 1; i < input_num; ++i) - { - Tensor& tensor = ins[i]; - assert(tensor.dimNum() == dim_num); - for (int d = 0; d < dim_num; ++d) - { - if (d == axis_) - { - sum_axis += tensor.dimSize(axis_);; - } - else - { - assert(first_tensor.dimSize(d) == tensor.dimSize(d)); - } - } - } - - assert(out.dimSize(axis_) == sum_axis); - for (int d = 0; d < dim_num; ++d) - { - if (d != axis_) - { - assert(out.dimSize(d) == first_tensor.dimSize(d)); - } - } - out_concat_axis_ = sum_axis; - concat_size_ = out.count(axis_ + 1); - - if (pipeline_ == VK_NULL_HANDLE) - { - config_.local_size_x = LOCAL_SZ_X; - config_.block_height = 1; - config_.block_width = 1; - config_.block_depth = 1; - createShaderModule(concat_spv, sizeof(concat_spv)); - createPipeline(sizeof(ConcatParam)); - } - - accumulated_concat_axis_ = 0; - for (int i = 0; i < input_num; i++) - { - bindTensor(device_, ins[i], 0, descriptor_set_); - bindTensor(device_, out, 1, descriptor_set_); - total_concat_size_ = ins[i].count(axis_); - thread_num_ = ins[i].count(); - computeGroupCount(); - ConcatParam param = {out_concat_axis_, - accumulated_concat_axis_, - concat_size_, - total_concat_size_, - thread_num_}; - recordCommandBuffer((void *)¶m, sizeof(ConcatParam)); - runCommandBuffer(); - accumulated_concat_axis_ += ins[i].dimSize(axis_); - } - - return true; -} - -bool OpConcat::computeGroupCount() -{ - group_x_ = alignSize(thread_num_, config_.local_size_x) / config_.local_size_x; - group_y_ = 1; - group_z_ = 1; - - return true; -} - -#endif // HAVE_VULKAN - -}}} // namespace cv::dnn::vkcom diff --git a/modules/dnn/src/vkcom/src/op_conv.cpp b/modules/dnn/src/vkcom/src/op_conv.cpp index bd982b3eb5..9c84ffccdf 100644 --- a/modules/dnn/src/vkcom/src/op_conv.cpp +++ b/modules/dnn/src/vkcom/src/op_conv.cpp @@ -1,287 +1,221 @@ // This file is part of OpenCV project. // It is subject to the license terms in the LICENSE file found in the top-level directory // of this distribution and at http://opencv.org/license.html. -// -// Copyright (C) 2018, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. #include "../../precomp.hpp" -#include "common.hpp" #include "internal.hpp" #include "../include/op_conv.hpp" namespace cv { namespace dnn { namespace vkcom { #ifdef HAVE_VULKAN +#define BLOCK_SIZE 64 -#define DEFAULT_LOCAL_SZ 256 -#define MAX_COMPUTE_GFLOPS 10 -// TODO: query group count from vulkan device #define MAX_GROUP_COUNT_X 65535 #define MAX_GROUP_COUNT_Y 65535 #define MAX_GROUP_COUNT_Z 65535 -struct ShaderConstant { - int lsz_x; - int lsz_y; - int lsz_z; - int in_h; - int in_w; - int out_w; - int stride_h; - int stride_w; - int pad_h; - int pad_w; - int filter_h; - int filter_w; - int channels; - int batch; - int m; - int k; - int n; - int tail_m; - int dilation_h; - int dilation_w; -}; - -struct ShaderParam { - int in_h; - int in_w; - int out_h; - int out_w; - int stride_h; - int stride_w; - int pad_h; - int pad_w; - int filter_h; - int filter_w; - int dilation_h; - int dilation_w; - int channels; - int batch; - int has_bias; - int M; - int K; - int N; - int basic_shader_batch_idx; - int basic_shader_partition_idx; - int basic_shader_partition_size; -}; - -OpConv::OpConv(const int out_channel, const bool has_bias, - const int* filter_size, const int* pad, - const int* stride, const int* dilation, - const int activation, const int group, - const int padding_mode) +OpConv::OpConv(const Mat& weightBlob, const std::vector& biasvec, int _activType, const int _ngroups, const int _K, + const int _C, const int _Hk, const int _Wk, const int _stride_h, const int _stride_w, + const int _dilation_h, const int _dilation_w, const int _pad_left, const int _pad_top): + activ((FusedActivationType)_activType), ngroups(_ngroups), K(_K), C(_C), Hk(_Hk), Wk(_Wk), stride_h(_stride_h), stride_w(_stride_w), + dilation_h(_dilation_h), dilation_w(_dilation_w), pad_left(_pad_left), pad_top(_pad_top) { - init(out_channel, has_bias, filter_size, pad, - stride, dilation, activation, group, padding_mode); - type_ = "Conv"; -} + type_ = kOpTypeConv; + CV_Assert(!weightBlob.empty()); -void OpConv::reshapeOutTensor(Tensor& in, Tensor& out) -{ - Shape in_shape = in.getShape(); - batch_ = in_shape[kShapeIdxBatch]; - in_height_ = in_shape[kShapeIdxHeight]; - in_width_ = in_shape[kShapeIdxWidth]; - computeConvOutputShapeAndPadding(padding_mode_, padding_top_, padding_left_, - in_height_, in_width_, - filter_height_, filter_width_, - dilation_height_, dilation_width_, - stride_height_, stride_width_, - out_height_, out_width_); - Shape shape = {batch_, out_channel_, out_height_, out_width_}; - out.reshape(NULL, shape); -} + Kg = K/ngroups, Cg = max(C/ngroups, 1); + ksize = Hk * Wk; + CgHkWk = Cg * ksize; + fast_1x1 = ksize == 1 && stride_w == 1 && stride_h == 1 && pad_top == 0 && pad_left == 0; -bool OpConv::init(const int out_channel, const bool has_bias, - const int* filter_size, const int* pad, - const int* stride, const int* dilation, - const int activation, const int group, - const int padding_mode) -{ - out_channel_ = out_channel; - filter_height_ = filter_size[0]; - filter_width_ = filter_size[1]; - padding_top_ = pad[0]; - padding_left_ = pad[1]; - stride_height_ = stride[0]; - stride_width_ = stride[1]; - dilation_height_ = dilation[0]; - dilation_width_ = dilation[1]; - padding_mode_ = (PaddingMode)padding_mode; - has_bias_ = has_bias ? 1 : 0; - activation_ = activation; - group_ = group; - - #define BUFFER_NUM 4 - OpBase::initVulkanThing(BUFFER_NUM); - return true; -} - -bool OpConv::forward(std::vector& ins, - std::vector& blobs, - std::vector& outs) -{ - std::vector shape = {1}; - Tensor bias(0, shape); - - if (has_bias_) + if (ngroups > 1 && ngroups == K && ngroups == C) { - assert(blobs.size() == 2); - bias = blobs[1]; - } - - return forward(ins[0], blobs[0], bias, outs[0]); -} - -bool OpConv::forward(Tensor& in, Tensor& filter_weights, Tensor& bias, Tensor& out) -{ - Shape in_shape = in.getShape(); - Shape out_shape = out.getShape(); - batch_ = in_shape[kShapeIdxBatch]; - in_height_ = in_shape[kShapeIdxHeight]; - in_width_ = in_shape[kShapeIdxWidth]; - in_channel_= in_shape[kShapeIdxChannel]; - out_height_ = out_shape[kShapeIdxHeight]; - out_width_ = out_shape[kShapeIdxWidth]; - int M = out_height_ * out_width_; - int K = filter_height_ * filter_width_ * in_channel_; - int N = out_channel_; - - if (pipeline_ == VK_NULL_HANDLE) - { - config_.local_size_x = DEFAULT_LOCAL_SZ; - config_.local_size_y = 1; - config_.local_size_z = 1; - config_.block_height = 1; - config_.block_width = 1; - config_.block_depth = 1; - if ((N % 8 == 0) && (K % 4 == 0) && (M % 4) == 0) - { - assert(group_ == 1); // TODO: support group > 1 - config_.shader_type = kConvShaderType48; - config_.local_size_x = 1; - config_.local_size_y = DEFAULT_LOCAL_SZ; - config_.local_size_z = 1; - config_.block_height = 4; - config_.block_width = 8; - has_bias_ ? createShaderModule(conv48_spv, sizeof(conv48_spv)) - : createShaderModule(conv48_nobias_spv, sizeof(conv48_nobias_spv)); - // specialization constants - VkSpecializationInfo spec_info; - ShaderConstant shader_constant; -#define SPECIALIZATION_CONST_NUM 20 - VkSpecializationMapEntry entry[SPECIALIZATION_CONST_NUM]; -#define SET_SPEC_CONST_ENTRY(n_, id_, offset_, size_) \ - entry[n_].constantID = id_; \ - entry[n_].offset = offset_; \ - entry[n_].size = size_; - - shader_constant.lsz_x = config_.local_size_x; - shader_constant.lsz_y = config_.local_size_y; - shader_constant.lsz_z = config_.local_size_z; - shader_constant.in_h = in_height_; - shader_constant.in_w = in_width_; - shader_constant.out_w = out_width_; - shader_constant.stride_h = stride_height_; - shader_constant.stride_w = stride_width_; - shader_constant.pad_h = padding_top_; - shader_constant.pad_w = padding_left_; - shader_constant.filter_h = filter_height_; - shader_constant.filter_w = filter_width_; - shader_constant.channels = in_channel_; - shader_constant.batch = batch_; - shader_constant.m = M; - shader_constant.k = K; - shader_constant.n = N; - shader_constant.tail_m = M % 4; - shader_constant.dilation_h = dilation_height_; - shader_constant.dilation_w = dilation_width_; - - SET_SPEC_CONST_ENTRY(0, 0, offsetof(ShaderConstant,lsz_x), sizeof(int)); - SET_SPEC_CONST_ENTRY(1, 1, offsetof(ShaderConstant,lsz_y), sizeof(int)); - SET_SPEC_CONST_ENTRY(2, 2, offsetof(ShaderConstant,lsz_z), sizeof(int)); - SET_SPEC_CONST_ENTRY(3, 3, offsetof(ShaderConstant,in_h), sizeof(int)); - SET_SPEC_CONST_ENTRY(4, 4, offsetof(ShaderConstant,in_w), sizeof(int)); - SET_SPEC_CONST_ENTRY(5, 5, offsetof(ShaderConstant,out_w), sizeof(int)); - SET_SPEC_CONST_ENTRY(6, 6, offsetof(ShaderConstant,stride_h), sizeof(int)); - SET_SPEC_CONST_ENTRY(7, 7, offsetof(ShaderConstant,stride_w), sizeof(int)); - SET_SPEC_CONST_ENTRY(8, 8, offsetof(ShaderConstant,pad_h), sizeof(int)); - SET_SPEC_CONST_ENTRY(9, 9, offsetof(ShaderConstant,pad_w), sizeof(int)); - SET_SPEC_CONST_ENTRY(10, 10, offsetof(ShaderConstant,filter_h), sizeof(int)); - SET_SPEC_CONST_ENTRY(11, 11, offsetof(ShaderConstant,filter_w), sizeof(int)); - SET_SPEC_CONST_ENTRY(12, 12, offsetof(ShaderConstant,channels), sizeof(int)); - SET_SPEC_CONST_ENTRY(13, 13, offsetof(ShaderConstant,batch), sizeof(int)); - SET_SPEC_CONST_ENTRY(14, 14, offsetof(ShaderConstant,m), sizeof(int)); - SET_SPEC_CONST_ENTRY(15, 15, offsetof(ShaderConstant,k), sizeof(int)); - SET_SPEC_CONST_ENTRY(16, 16, offsetof(ShaderConstant,n), sizeof(int)); - SET_SPEC_CONST_ENTRY(17, 17, offsetof(ShaderConstant,tail_m), sizeof(int)); - SET_SPEC_CONST_ENTRY(18, 18, offsetof(ShaderConstant,dilation_h), sizeof(int)); - SET_SPEC_CONST_ENTRY(19, 19, offsetof(ShaderConstant,dilation_w), sizeof(int)); - - spec_info.mapEntryCount = SPECIALIZATION_CONST_NUM; - spec_info.pMapEntries = entry; - spec_info.dataSize = sizeof(shader_constant); - spec_info.pData = &shader_constant; - createPipeline(sizeof(ShaderParam), &spec_info); - } - else if (out_channel_ == in_channel_ && in_channel_ == group_) - { - config_.shader_type = kConvShaderTypeDepthWise; - createShaderModule(dw_conv_spv, sizeof(dw_conv_spv)); - createPipeline(sizeof(ShaderParam)); - } + if (Hk == 3 && Wk == 3) + shader_name = "conv_depthwise_3x3_spv"; else - { - assert(group_ == 1); // TODO: support group > 1 - config_.shader_type = kConvShaderTypeBasic; - createShaderModule(conv_spv, sizeof(conv_spv)); - createPipeline(sizeof(ShaderParam)); - } + shader_name = "conv_depthwise_spv"; - computeGroupCount(); + shaderType = kConvShaderTypeDepthWise; + STRIP_LEN = 16; } - - bindTensor(device_, in, 0, descriptor_set_); - bindTensor(device_, bias, 1, descriptor_set_); - bindTensor(device_, filter_weights, 2, descriptor_set_); - bindTensor(device_, out, 3, descriptor_set_); - - ShaderParam param = {in_height_, in_width_, - out_height_, out_width_, - stride_height_, stride_width_, - padding_top_, padding_left_, - filter_height_, filter_width_, - dilation_height_, dilation_width_, - in_channel_, batch_, has_bias_, - M, K, N, 0, 0, 0}; - - if (config_.shader_type == kConvShaderTypeBasic || config_.shader_type == kConvShaderTypeDepthWise) + else if (fast_1x1) // 1x1 { - int partition_num = 1; - if (config_.shader_type == kConvShaderTypeBasic) - { - param.basic_shader_partition_size = group_y_; - partition_num = (int)ceil(1.0 * out_channel_ / group_y_); - } - - for (int b = 0; b < batch_; b++) - { - param.basic_shader_batch_idx = b; - for (int n = 0; n < partition_num; n++) - { - param.basic_shader_partition_idx = n; - recordCommandBuffer((void *)¶m, sizeof(ShaderParam)); - runCommandBuffer(); - } - } + shader_name = "conv_1x1_fast_spv"; + shaderType = kConvShaderTypeGeneric; + STRIP_LEN = 32; } else { - recordCommandBuffer(); - runCommandBuffer(); + shader_name = "conv_implicit_gemm_spv"; + shaderType = kConvShaderTypeGeneric; + STRIP_LEN = 32; + } + + CgHkWk_aligned = alignSize(CgHkWk, STRIP_LEN); + // repack the weight. The shape is from [K, C, Hk, Wk] to [ngroups, Ceil(K/group), Align(Cg*Hk*Wk, STRIP_LEN)] + if (shaderType == kConvShaderTypeGeneric) + { + std::vector repackWeightShape = {ngroups, Kg, CgHkWk_aligned}; + + Mat repackWeight = Mat(repackWeightShape, CV_32FC1, Scalar_(0.0f)); + float* weightsBufPtr = repackWeight.ptr(); + const float* srcWeight = weightBlob.ptr(); + const size_t wstep = weightBlob.step1(); // Hk*Wk*Cg + + // Pack the weight. + parallel_for_(Range(0, ngroups * Kg), [&](const Range& r0){ + for (int gki = r0.start; gki < r0.end; gki++) + { + const float* wptr = srcWeight + gki * wstep; + float* packed_wptr = weightsBufPtr + gki * CgHkWk_aligned; + + memcpy(packed_wptr, wptr, sizeof(wptr[0]) * CgHkWk); + }}); + + // Create weightTensor + Tensor weightTensor; + CV_Assert(repackWeight.isContinuous() && weightBlob.type() == CV_32F); + weightTensor.reshape((const char*)repackWeight.data, repackWeightShape); + weightTensorPtr = makePtr(weightTensor); + } + else + { + // Create weightTensor + Tensor weightTensor; + CV_Assert(weightBlob.isContinuous() && weightBlob.type() == CV_32F); + std::vector matShape = shape(weightBlob); + weightTensor.reshape((const char*)weightBlob.data, matShape); // This code will copy the src data from Mat to VkBuffer. + + weightTensorPtr = makePtr(weightTensor); + } + + if (!biasvec.empty()) + { + int biasAlignedSize = alignSize(biasvec.size(), BLOCK_SIZE); + std::vector biasShape = {biasAlignedSize}; + + biasCopy.resize(biasAlignedSize, 0.f); + + for (int i = 0; i < biasvec.size(); i++) + { + biasCopy[i] = biasvec[i]; + } + + Tensor biasTensor; + biasTensor.reshape((const char*)biasCopy.data(), biasShape); // This code will copy the src data from Mat to VkBuffer. + + biasTensorPtr = makePtr(biasTensor); + } + else + { + std::vector shape = {K}; + Tensor bias(0, shape); + biasTensorPtr = makePtr(bias); + } +} + +void OpConv::firstForward() +{ + if (!firstForwardFinsh) + { + config.local_size_x = BLOCK_SIZE; + config.local_size_y = BLOCK_SIZE; + config.local_size_z = 1; + + computeGroupCount(); + firstForwardFinsh = true; + } + else + return; +} + +OpConv::~OpConv() +{ +} + +bool OpConv::forward(std::vector& ins, std::vector& outs) +{ + CV_Assert(ins.size() == 1 && outs.size() == 1); + Shape inputShape = ins[0].getShape(); + Shape outputShape = outs[0].getShape(); + CV_Assert(inputShape.size() == outputShape.size()); + + batch = inputShape[kShapeIdxBatch]; + Hi = inputShape[kShapeIdxHeight]; + Wi = inputShape[kShapeIdxWidth]; + + H0 = outputShape[kShapeIdxHeight]; + W0 = outputShape[kShapeIdxWidth]; + + firstForward(); + + std::vector param = {Hi, Wi, + H0, W0, + stride_h, stride_w, + pad_top, pad_left, + Hk, Wk, + dilation_h, dilation_w, + Kg, Cg, + ngroups, + CgHkWk_aligned, + (int)activ, + 0, 0}; + + std::vector shape = {(int)param.size()}; + destTypes = { + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, // input + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, // bias + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, // weight + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, // output + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER // param + }; + + Ptr pipeline = pipelineFactoryPtr->getPipeline(shader_name, destTypes); + Ptr desSet = pipeline->createSet(); + Ptr cmdBuffer = cmdPoolPtr->allocBuffer(); + + VkCommandBuffer cmdBufferReal = cmdBuffer->get(); + desSet->writeTensor(ins[0], 0); + desSet->writeTensor(*biasTensorPtr, 1); + desSet->writeTensor(*weightTensorPtr, 2); + desSet->writeTensor(outs[0], 3); + + if (shaderType == kConvShaderTypeGeneric) + { + for (int b = 0; b < batch; b++) + { + for (int g = 0; g < ngroups; g++) + { + param[17] = b; + param[18] = g; + Tensor paramTensor = Tensor(reinterpret_cast(param.data()), shape, kFormatInt32, VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT); + desSet->writeTensor(paramTensor, 4); + + cmdBuffer->beginRecord(); + pipeline->bind(cmdBufferReal, desSet->get()); + vkCmdDispatch(cmdBufferReal, group_x_, group_y_, group_z_); + cmdBuffer->endRecord(); + + cmdPoolPtr->submitAndWait(cmdBufferReal); + } + } + } + else if (shaderType == kConvShaderTypeDepthWise) + { + for (int b = 0; b < batch; b++) + { + param[17] = b; + Tensor paramTensor = Tensor(reinterpret_cast(param.data()), shape, kFormatInt32, VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT); + desSet->writeTensor(paramTensor, 4); + + cmdBuffer->beginRecord(); + pipeline->bind(cmdBufferReal, desSet->get()); + vkCmdDispatch(cmdBufferReal, group_x_, group_y_, group_z_); + cmdBuffer->endRecord(); + + cmdPoolPtr->submitAndWait(cmdBufferReal); + } } return true; @@ -289,39 +223,28 @@ bool OpConv::forward(Tensor& in, Tensor& filter_weights, Tensor& bias, Tensor& o bool OpConv::computeGroupCount() { - if (config_.shader_type == kConvShaderTypeDepthWise) + int outplan = H0 * W0; + if (shaderType == kConvShaderTypeDepthWise) { - group_x_ = alignSize(out_width_, config_.local_size_x) / config_.local_size_x; - group_y_ = alignSize(out_height_, config_.local_size_y) / config_.local_size_y; - group_z_ = alignSize(in_channel_, config_.local_size_z) / config_.local_size_z; + group_x_ = alignSize(outplan, config.local_size_x) / config.local_size_x; + group_y_ = K; + group_z_ = 1; return true; } - - int M = out_height_ * out_width_; - int N = out_channel_; - - if (config_.shader_type == kConvShaderTypeBasic) + else if (shaderType == kConvShaderTypeGeneric) { - - group_x_ = alignSize(out_height_ * out_width_, config_.local_size_x) / config_.local_size_x; - float GFLOPS = (2.0 * filter_height_ * filter_width_ * in_channel_ + 1) * - (out_channel_ * out_height_ * out_width_) / 1000 / 1000 / 1000; - CV_Assert(config_.local_size_y == 1); - group_y_ = std::min(MAX_GROUP_COUNT_Y, (int)floor(MAX_COMPUTE_GFLOPS / (GFLOPS / out_channel_))); + group_x_ = alignSize(Kg, config.local_size_x) / config.local_size_x; + group_y_ = alignSize(outplan, config.local_size_y) / config.local_size_y; group_z_ = 1; } - else if (config_.shader_type == kConvShaderType48) + else if (shaderType == kConvShaderTest) { - assert(config_.block_width == 8 && - config_.block_height == 4 && - config_.block_depth == 1 && - config_.local_size_z == 1); - group_x_ = N / config_.block_width; - group_y_ = alignSize(alignSize(M, 4) / 4, config_.local_size_y) / config_.local_size_y; - group_z_ = batch_; + group_x_ = 1; + group_y_ = 1; + group_z_ = 1; } else - CV_Assert(0); + CV_Error(CV_StsNotImplemented, "shader type is not supported at compute GroupCount."); CV_Assert(group_x_ <= MAX_GROUP_COUNT_X); CV_Assert(group_y_ <= MAX_GROUP_COUNT_Y); diff --git a/modules/dnn/src/vkcom/src/op_lrn.cpp b/modules/dnn/src/vkcom/src/op_lrn.cpp deleted file mode 100644 index 8a9f1a3344..0000000000 --- a/modules/dnn/src/vkcom/src/op_lrn.cpp +++ /dev/null @@ -1,115 +0,0 @@ -// This file is part of OpenCV project. -// It is subject to the license terms in the LICENSE file found in the top-level directory -// of this distribution and at http://opencv.org/license.html. -// -// Copyright (C) 2018, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. - -#include "../../precomp.hpp" -#include "common.hpp" -#include "internal.hpp" -#include "../include/op_lrn.hpp" - -namespace cv { namespace dnn { namespace vkcom { - -#ifdef HAVE_VULKAN - -#define LOCAL_SZ_X 256 -#define LOCAL_SZ_Y 1 -#define LOCAL_SZ_Z 1 - -struct LRNParam { - int thread_num; - int channels; - int height; - int width; - int filter_len; - int radius; - float alpha; - float bias; - float negative_beta; -}; - -OpLRN::OpLRN(const int radius, const float bias, - const float alpha, const float beta, - const bool norm_by_size) -{ - init(radius, bias, alpha, beta, norm_by_size); - type_ = "LRN"; -} - -void OpLRN::reshapeOutTensor(Tensor& in, Tensor& out) -{ - Shape shape = in.getShape(); - out.reshape(NULL, shape); -} - -bool OpLRN::init(const int radius, const float bias, - const float alpha, const float beta, - const bool norm_by_size) -{ - radius_ = radius; - filter_len_ = 2 * radius_ + 1; - bias_ = bias; - alpha_ = alpha; - beta_ = beta; - norm_by_size_ = norm_by_size; - OpBase::initVulkanThing(2); - return true; -} - -bool OpLRN::forward(std::vector& ins, - std::vector& blobs, - std::vector& outs) -{ - return forward(ins[0], outs[0]); -} - -bool OpLRN::forward(Tensor& in, Tensor& out) -{ - Shape in_shape = in.getShape(); - batch_ = in_shape[kShapeIdxBatch]; - height_ = in_shape[kShapeIdxHeight]; - width_ = in_shape[kShapeIdxWidth]; - channels_= in_shape[kShapeIdxChannel]; - thread_num_ = batch_ * height_ * width_; - - if (pipeline_ == VK_NULL_HANDLE) - { - config_.local_size_x = LOCAL_SZ_X; - config_.local_size_y = LOCAL_SZ_Y; - config_.local_size_z = LOCAL_SZ_Z; - config_.block_height = 1; - config_.block_width = 1; - config_.block_depth = 1; - config_.shader_type = kLRNShaderTypeBasic; - createShaderModule(lrn_spv, sizeof(lrn_spv)); - createPipeline(sizeof(LRNParam)); - computeGroupCount(); - } - - bindTensor(device_, in, 0, descriptor_set_); - bindTensor(device_, out,1, descriptor_set_); - - LRNParam param = {batch_ * height_ * width_, - channels_, height_, width_, - filter_len_, radius_, - alpha_ / (norm_by_size_ ? filter_len_ : 1), - bias_, -1 * beta_}; - recordCommandBuffer((void *)¶m, sizeof(LRNParam)); - runCommandBuffer(); - return true; -} - -bool OpLRN::computeGroupCount() -{ - group_x_ = alignSize(thread_num_, config_.local_size_x) / config_.local_size_x; - group_y_ = 1; - group_z_ = 1; - - return true; -} - -#endif // HAVE_VULKAN - -}}} // namespace cv::dnn::vkcom diff --git a/modules/dnn/src/vkcom/src/op_matmul.cpp b/modules/dnn/src/vkcom/src/op_matmul.cpp new file mode 100644 index 0000000000..479e64e5c8 --- /dev/null +++ b/modules/dnn/src/vkcom/src/op_matmul.cpp @@ -0,0 +1,132 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. + +#include "../../precomp.hpp" +#include "internal.hpp" +#include "../include/op_matmul.hpp" + +namespace cv { namespace dnn { namespace vkcom { + +#ifdef HAVE_VULKAN + +#define KSTRIP_LEN 32 +#define BLOCK_SIZE 64 + +OpMatMul::OpMatMul(std::vector& matBlobs, const int _M, const int _K, const int _N) : M(_M), K(_K), N(_N) +{ + // Convert Weight to GPU Tensor. + type_ = kOpTypeMatMul; + CV_Assert(matBlobs.empty() || matBlobs.size() == 1); + + if (matBlobs.size() == 1) + { + Tensor weightTensor; + CV_Assert(matBlobs[0].isContinuous() && matBlobs[0].type() == CV_32F); + std::vector matShape = shape(matBlobs[0]); + weightTensor.reshape((const char*)matBlobs[0].data, matShape); // This code will copy the src data from Mat to VkBuffer. + + weightTensorPtr = makePtr(weightTensor); + } +} + +void OpMatMul::firstForward() +{ + if (!firstForwardFinsh) + { + config.local_size_x = BLOCK_SIZE; + config.local_size_y = BLOCK_SIZE; + config.local_size_z = 1; + + computeGroupCount(); + firstForwardFinsh = true; + } + else + return; +} + +bool OpMatMul::forward(std::vector& ins, std::vector& outs) +{ + CV_Assert((ins.size() == 1 || ins.size() == 2) && outs.size() == 1); + Shape inputShape = ins[0].getShape(); + Shape outputShape = outs[0].getShape(); + CV_Assert(inputShape.size() == outputShape.size()); + + CV_Assert(inputShape.size() == 2 || inputShape.size() == 4); + + if (inputShape.size() == 2) + { + batch = 0; + Hi = inputShape[0]; + Wi = inputShape[1]; + + H0 = outputShape[0]; + W0 = outputShape[1]; + } + else if (inputShape.size() == 4) + { + batch = inputShape[kShapeIdxBatch]; + Hi = inputShape[kShapeIdxHeight]; + Wi = inputShape[kShapeIdxWidth]; + + H0 = outputShape[kShapeIdxHeight]; + W0 = outputShape[kShapeIdxWidth]; + } + + firstForward(); + + int KStrip = K/KSTRIP_LEN; + int KStripRemain = K - KStrip * KSTRIP_LEN; + std::vector param = {M, K, N, KStrip, KStripRemain}; + + std::vector shape = {(int)param.size()}; + Tensor paramTensor = Tensor(reinterpret_cast(param.data()), shape, kFormatInt32, VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT); + + std::string key = "gemm_spv"; + destTypes = { + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, // input + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, // weight + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, // out + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER // param + }; + + Ptr pipeline = pipelineFactoryPtr->getPipeline(key, destTypes); + Ptr desSet = pipeline->createSet(); + Ptr cmdBuffer = cmdPoolPtr->allocBuffer(); + + VkCommandBuffer cmdBufferReal = cmdBuffer->get(); + desSet->writeTensor(ins[0], 0); + + if (weightTensorPtr) + desSet->writeTensor(*weightTensorPtr, 1); + else + { + CV_Assert(ins.size() == 2); + desSet->writeTensor(ins[1], 1); + } + + desSet->writeTensor(outs[0], 2); + desSet->writeTensor(paramTensor, 3); // TODO change the parameter from pushconstance to buffer. + + cmdBuffer->beginRecord(); + pipeline->bind(cmdBufferReal, desSet->get()); + vkCmdDispatch(cmdBufferReal, group_x_, group_y_, group_z_); + cmdBuffer->endRecord(); + + cmdPoolPtr->submitAndWait(cmdBufferReal); + + return true; +} + +bool OpMatMul::computeGroupCount() +{ + group_x_ = alignSize(M, BLOCK_SIZE) / BLOCK_SIZE; + group_y_ = alignSize(N, BLOCK_SIZE) / BLOCK_SIZE; + group_z_ = 1; + + return true; +} + +#endif // HAVE_VULKAN + +}}} // namespace cv::dnn::vkcom diff --git a/modules/dnn/src/vkcom/src/op_permute.cpp b/modules/dnn/src/vkcom/src/op_permute.cpp deleted file mode 100644 index 8f6c3913cb..0000000000 --- a/modules/dnn/src/vkcom/src/op_permute.cpp +++ /dev/null @@ -1,163 +0,0 @@ -// This file is part of OpenCV project. -// It is subject to the license terms in the LICENSE file found in the top-level directory -// of this distribution and at http://opencv.org/license.html. -// -// Copyright (C) 2018, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. - -#include "../../precomp.hpp" -#include -#include "common.hpp" -#include "internal.hpp" -#include "../include/op_permute.hpp" - -namespace cv { namespace dnn { namespace vkcom { - -#ifdef HAVE_VULKAN - -struct PermuteParam { - int global_size; - int num_axes; - int nthreads; -}; - -static bool needForPermutation(std::vector& order) -{ - for (int i = 0; i < order.size(); ++i) - { - if (order[i] != i) - return true; - } - return false; -} - -OpPermute::OpPermute(std::vector& order) -{ - order_.assign(order.begin(), order.end()); - dims_ = order.size(); - need_permute_ = needForPermutation(order_); - type_ = "Permute"; - if (need_permute_) - OpBase::initVulkanThing(5); -} - -void OpPermute::reshapeOutTensor(std::vector& ins, std::vector& outs) -{ - assert(!ins.empty()); - assert(ins.size() == outs.size()); - - if (need_permute_) - { - assert(dims_ == ins[0]->dimNum()); - - Shape shape_before = ins[0]->getShape(); - Shape shape_after; - for (size_t i = 0; i < dims_; i++) - { - shape_after.push_back(shape_before[order_[i]]); - } - - for (size_t i = 0; i < ins.size(); i++) - { - assert(ins[i]->dimNum() == 4); - assert(ins[i]->dimSize(2) == shape_before[2] && ins[i]->dimSize(3) == shape_before[3]); - assert(ins[i]->count() == shapeCount(shape_after)); - outs[i].reshape(NULL, shape_after); - } - } - else - { - for(int i = 0; i < ins.size(); i++) - { - Shape in_shape = ins[i]->getShape(); - outs[i].reshape(NULL, in_shape); - } - } -} - -void OpPermute::prepareStrides(const Shape &shape_before, const Shape &shape_after) -{ - assert(shape_before.size() == dims_); - assert(shape_after.size() == dims_); - - old_stride_.resize(dims_); - new_stride_.resize(dims_); - - old_stride_[dims_ - 1] = 1; - new_stride_[dims_ - 1] = 1; - - for(int i = dims_ - 2; i >= 0; i--) - { - old_stride_[i] = old_stride_[i + 1] * shape_before[i + 1]; - new_stride_[i] = new_stride_[i + 1] * shape_after[i + 1]; - } - - Shape shape(1, old_stride_.size()); - tensor_old_stride_.reshape((const char*)old_stride_.data(), shape, kFormatInt32); - tensor_new_stride_.reshape((const char*)new_stride_.data(), shape, kFormatInt32); -} - -bool OpPermute::forward(std::vector& ins, - std::vector& blobs, - std::vector& outs) -{ - return forward(ins, outs); -} - -bool OpPermute::forward(std::vector& ins, std::vector& outs) -{ - int num_ins = ins.size(); - in_shape_ = ins[0].getShape(); - out_shape_ = outs[0].getShape(); - if (!need_permute_) - { - for (int i = 0; i < num_ins; i++) - { - assert(outs[i].count() == ins[i].count()); - if (outs[i].getBuffer() != ins[i].getBuffer()) - ins[i].copyTo(outs[i]); - } - return true; - } - - if (pipeline_ == VK_NULL_HANDLE) - { - createShaderModule(permute_spv, sizeof(permute_spv)); - createPipeline(sizeof(PermuteParam)); - } - - prepareStrides(ins[0].getShape(), outs[0].getShape()); - std::vectorshape(1, order_.size()); - tensor_order_.reshape((const char*)order_.data(), shape, kFormatInt32); - bindTensor(device_, tensor_order_, 1, descriptor_set_); - bindTensor(device_, tensor_old_stride_, 2, descriptor_set_); - bindTensor(device_, tensor_new_stride_, 3, descriptor_set_); - - nthreads_ = ins[0].count(); -#define LOCAL_SZ_X 256 - global_size_ = alignSize(nthreads_, LOCAL_SZ_X); - computeGroupCount(); - - PermuteParam param = {global_size_, dims_, nthreads_}; - for (int i = 0; i < num_ins; i++) - { - bindTensor(device_, ins[i], 0, descriptor_set_); - bindTensor(device_, outs[i], 4, descriptor_set_); - recordCommandBuffer((void *)¶m, sizeof(PermuteParam)); - runCommandBuffer(); - } - - return true; -} - -bool OpPermute::computeGroupCount() -{ - group_x_ = global_size_ / LOCAL_SZ_X; - group_y_ = 1; - group_z_ = 1; - return true; -} - -#endif // HAVE_VULKAN - -}}} // namespace cv::dnn::vkcom diff --git a/modules/dnn/src/vkcom/src/op_pool.cpp b/modules/dnn/src/vkcom/src/op_pool.cpp deleted file mode 100644 index ec1c587918..0000000000 --- a/modules/dnn/src/vkcom/src/op_pool.cpp +++ /dev/null @@ -1,154 +0,0 @@ -// This file is part of OpenCV project. -// It is subject to the license terms in the LICENSE file found in the top-level directory -// of this distribution and at http://opencv.org/license.html. -// -// Copyright (C) 2018, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. - -#include "../../precomp.hpp" -#include -#include "common.hpp" -#include "internal.hpp" -#include "../include/op_pool.hpp" - -namespace cv { namespace dnn { namespace vkcom { - -#ifdef HAVE_VULKAN - -#define LOCAL_SZ_X 256 -#define LOCAL_SZ_Y 1 -#define LOCAL_SZ_Z 1 - -struct PoolParam { - int channels; - int in_height; - int in_width; - int out_height; - int out_width; - int padding_top; - int padding_left; - int filter_h; - int filter_w; - int stride_h; - int stride_w; - int total; - int mask_or_padded_area; -}; - -OpPool::OpPool(const int* filter_size, const int* pad, const int* stride, - const int padding_mode, const PoolType type, - const bool avg_pool_padded_area) -{ - init(filter_size, pad, stride, padding_mode, type, avg_pool_padded_area); - type_ = "Pool"; -} - -bool OpPool::init(const int* filter_size, const int* pad, const int* stride, - const int padding_mode, const PoolType type, bool avg_pool_padded_area) -{ - VKCOM_CHECK_BOOL_RET_VAL(padding_mode >= 0 && padding_mode < kPaddingModeNum, false); - VKCOM_CHECK_POINTER_RET_VAL(filter_size, false); - VKCOM_CHECK_POINTER_RET_VAL(pad, false); - VKCOM_CHECK_POINTER_RET_VAL(stride, false); - - filter_height_ = filter_size[0]; - filter_width_ = filter_size[1]; - padding_top_ = pad[0]; - padding_left_ = pad[1]; - padding_mode_ = (PaddingMode)padding_mode; - stride_height_ = stride[0]; - stride_width_ = stride[1]; - pool_type_ = type; - avg_pool_padded_area_ = avg_pool_padded_area ? 1 : 0; - - if (pool_type_ == kPoolTypeAvg) - OpBase::initVulkanThing(2); - else if (pool_type_ == kPoolTypeMax) - OpBase::initVulkanThing(3); - else - assert(0); - return true; -} - -void OpPool::reshapeOutTensor(Tensor& in, Tensor& out) -{ - Shape in_shape = in.getShape(); - batch_ = in_shape[kShapeIdxBatch]; - channels_ = in_shape[kShapeIdxChannel]; - in_height_ = in_shape[kShapeIdxHeight]; - in_width_ = in_shape[kShapeIdxWidth]; - computePoolOutputShape(padding_mode_, padding_top_, padding_left_, - in_height_, in_width_, - filter_height_, filter_width_, - stride_height_, stride_width_, - out_height_, out_width_); - Shape out_shape = {batch_, channels_, out_height_, out_width_}; - out.reshape(NULL, out_shape); -} - -bool OpPool::forward(std::vector& ins, - std::vector& blobs, - std::vector& outs) -{ - Tensor& inpMat = ins[0]; - Tensor& outMat = outs[0]; - Tensor maskMat = outs.size() > 1 ? outs[1] : Tensor(); - return forward(inpMat, outMat, maskMat); -} - -bool OpPool::forward(Tensor& in, Tensor& out, Tensor& mask) -{ - Shape in_shape = in.getShape(); - Shape out_shape = out.getShape(); - batch_ = in_shape[kShapeIdxBatch]; - channels_ = in_shape[kShapeIdxChannel]; - in_height_ = in_shape[kShapeIdxHeight]; - in_width_ = in_shape[kShapeIdxWidth]; - out_height_ = out_shape[kShapeIdxHeight]; - out_width_ = out_shape[kShapeIdxWidth]; - need_mask_ = mask.isEmpty() ? 0 : 1; - - if (pipeline_ == VK_NULL_HANDLE) - { - config_.local_size_x = LOCAL_SZ_X; - config_.local_size_y = LOCAL_SZ_Y; - config_.local_size_z = LOCAL_SZ_Z; - config_.block_height = 1; - config_.block_width = 1; - config_.block_depth = 1; - if (pool_type_ == kPoolTypeAvg) - createShaderModule(avg_pool_spv, sizeof(avg_pool_spv)); - else - createShaderModule(max_pool_spv, sizeof(max_pool_spv)); - createPipeline(sizeof(PoolParam)); - computeGroupCount(); - } - - bindTensor(device_, in, 0, descriptor_set_); - bindTensor(device_, out, 1, descriptor_set_); - if (need_mask_) - bindTensor(device_, mask, 2, descriptor_set_); - PoolParam param = {channels_, - in_height_, in_width_, - out_height_, out_width_, - padding_top_, padding_left_, - filter_height_, filter_width_, - stride_height_, stride_width_, out.count(), - pool_type_ == kPoolTypeAvg ? avg_pool_padded_area_ : need_mask_}; - recordCommandBuffer((void *)¶m, sizeof(PoolParam)); - runCommandBuffer(); - return true; -} - -bool OpPool::computeGroupCount() -{ -#define GLOBAL_SIZE (128 * 128) - group_x_ = alignSize(GLOBAL_SIZE, config_.local_size_x) / config_.local_size_x; - group_y_ = 1; - group_z_ = 1; - return true; -} - -#endif // HAVE_VULKAN - -}}} // namespace cv::dnn::vkcom diff --git a/modules/dnn/src/vkcom/src/op_prior_box.cpp b/modules/dnn/src/vkcom/src/op_prior_box.cpp deleted file mode 100644 index e07e97b8ba..0000000000 --- a/modules/dnn/src/vkcom/src/op_prior_box.cpp +++ /dev/null @@ -1,151 +0,0 @@ -// This file is part of OpenCV project. -// It is subject to the license terms in the LICENSE file found in the top-level directory -// of this distribution and at http://opencv.org/license.html. -// -// Copyright (C) 2018, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. - -#include "../../precomp.hpp" -#include -#include "common.hpp" -#include "internal.hpp" -#include "../include/op_prior_box.hpp" - -namespace cv { namespace dnn { namespace vkcom { - -#ifdef HAVE_VULKAN - -#define LOCAL_SZ_X 256 -struct PriorBoxParam { - int global_size; - int nthreads; - float step_x; - float step_y; - int offsets_x_size; - int width_size; - int layer_w; - int image_h; - int image_w; - int clip; - int variance_off; -}; - -OpPriorBox::OpPriorBox(float step_x, - float step_y, - bool clip, - int num_priors, - std::vector& variance, - std::vector& offsets_x, - std::vector& offsets_y, - std::vector& box_widths, - std::vector& box_heights) -{ - step_x_ = step_x; - step_y_ = step_y; - clip_ = clip; - num_priors_ = num_priors; - variance_ = variance; - offsets_x_ = offsets_x; - offsets_y_ = offsets_y; - box_widths_ = box_widths; - box_heights_ = box_heights; - type_ = "PriorBox"; -#define BUFFER_NUM 6 - OpBase::initVulkanThing(BUFFER_NUM); -} - -void OpPriorBox::reshapeOutTensor(std::vector& ins, Tensor& out) -{ - assert(!ins.empty()); - - Shape in_shape = ins[0]->getShape(); - int layer_h = in_shape[kShapeIdxHeight]; - int layer_w = in_shape[kShapeIdxWidth]; - int out_num = 1; - int out_channel = 2; - Shape out_shape = {out_num, out_channel, layer_h * layer_w * num_priors_ * 4}; - out.reshape(NULL, out_shape); -} - -bool OpPriorBox::forward(std::vector& ins, - std::vector& blobs, - std::vector& outs) -{ - return forward(ins, outs[0]); -} - -bool OpPriorBox::forward(std::vector& ins, Tensor& out) -{ - assert(ins.size() == 2); - Shape in_shape = ins[0].getShape(); - Shape img_shape = ins[1].getShape(); - - in_h_ = in_shape[kShapeIdxHeight]; - in_w_ = in_shape[kShapeIdxWidth]; - img_h_ = img_shape[kShapeIdxHeight]; - img_w_ = img_shape[kShapeIdxWidth]; - out_channel_ = out.dimSize(1); - out_channel_size_ = out.dimSize(2); - nthreads_ = in_h_ * in_w_; - global_size_ = alignSize(nthreads_, LOCAL_SZ_X); - - if (pipeline_ == VK_NULL_HANDLE) - { - createShaderModule(prior_box_spv, sizeof(prior_box_spv)); - createPipeline(sizeof(PriorBoxParam)); - computeGroupCount(); - } - - std::vectorshape; - shape.push_back(offsets_x_.size()); - tensor_offsets_x_.reshape((const char*)offsets_x_.data(), shape); - tensor_offsets_y_.reshape((const char*)offsets_y_.data(), shape); - - shape[0] = box_widths_.size(); - tensor_widths_.reshape((const char*)box_widths_.data(), shape); - tensor_heights_.reshape((const char*)box_heights_.data(), shape); - - float variance[4] = {variance_[0], variance_[0], variance_[0], variance_[0]}; - if (variance_.size() > 1) - { - assert(variance_.size() == 4); - for (int i = 1; i < variance_.size(); i++) - variance[i] = variance_[i]; - } - shape[0] = 4; - tensor_variance_.reshape((const char*)variance, shape); - - bindTensor(device_, tensor_offsets_x_, 0, descriptor_set_); - bindTensor(device_, tensor_offsets_y_, 1, descriptor_set_); - bindTensor(device_, tensor_widths_, 2, descriptor_set_); - bindTensor(device_, tensor_heights_, 3, descriptor_set_); - bindTensor(device_, tensor_variance_, 4, descriptor_set_); - bindTensor(device_, out, 5, descriptor_set_); - - PriorBoxParam param = {global_size_, - nthreads_, - step_x_, - step_y_, - (int)offsets_x_.size(), - (int)box_widths_.size(), - in_w_, - img_h_, - img_w_, - clip_ ? 1 : 0, - out_channel_size_ / 4}; - recordCommandBuffer((void *)¶m, sizeof(PriorBoxParam)); - runCommandBuffer(); - return true; -} - -bool OpPriorBox::computeGroupCount() -{ - group_x_ = global_size_ / LOCAL_SZ_X; - group_y_ = 1; - group_z_ = 1; - return true; -} - -#endif // HAVE_VULKAN - -}}} // namespace cv::dnn::vkcom diff --git a/modules/dnn/src/vkcom/src/op_relu.cpp b/modules/dnn/src/vkcom/src/op_relu.cpp deleted file mode 100644 index 15c3ce5424..0000000000 --- a/modules/dnn/src/vkcom/src/op_relu.cpp +++ /dev/null @@ -1,74 +0,0 @@ -// This file is part of OpenCV project. -// It is subject to the license terms in the LICENSE file found in the top-level directory -// of this distribution and at http://opencv.org/license.html. -// -// Copyright (C) 2018, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. - -#include "../../precomp.hpp" -#include "common.hpp" -#include "internal.hpp" -#include "../include/op_relu.hpp" - -namespace cv { namespace dnn { namespace vkcom { - -#ifdef HAVE_VULKAN - -#define LOCAL_SZ_X 32 - -struct ReLUParam { - int total; - float slope; -}; - -OpReLU::OpReLU(const float slope) : slope_(slope) -{ - OpBase::initVulkanThing(2); - type_ = "ReLU"; -} - -void OpReLU::reshapeOutTensor(Tensor& in, Tensor& out) -{ - Shape shape = in.getShape(); - out.reshape(NULL, shape); -} - -bool OpReLU::forward(std::vector& ins, - std::vector& blobs, - std::vector& outs) -{ - return forward(ins[0], outs[0]); -} - -bool OpReLU::forward(Tensor& in, Tensor& out) -{ - if (pipeline_ == VK_NULL_HANDLE) - { - total_ = in.count(); -#define maxComputeWorkGroupCount 65535 - computeGroupCount(); - createShaderModule(relu_spv, sizeof(relu_spv)); - createPipeline(sizeof(ReLUParam)); - } - - bindTensor(device_, in, 0, descriptor_set_); - bindTensor(device_, out, 1, descriptor_set_); - ReLUParam param = { total_, slope_ }; - recordCommandBuffer((void *)¶m, sizeof(ReLUParam)); - runCommandBuffer(); - return true; -} - -bool OpReLU::computeGroupCount() -{ - group_x_ = alignSize(total_, LOCAL_SZ_X) / LOCAL_SZ_X; - if (group_x_ > maxComputeWorkGroupCount) - group_x_ = maxComputeWorkGroupCount; - group_y_ = 1; - group_z_ = 1; - return true; -} - -#endif // HAVE_VULKAN - -}}} // namespace cv::dnn::vkcom diff --git a/modules/dnn/src/vkcom/src/op_softmax.cpp b/modules/dnn/src/vkcom/src/op_softmax.cpp deleted file mode 100644 index aca0aca5ac..0000000000 --- a/modules/dnn/src/vkcom/src/op_softmax.cpp +++ /dev/null @@ -1,111 +0,0 @@ -// This file is part of OpenCV project. -// It is subject to the license terms in the LICENSE file found in the top-level directory -// of this distribution and at http://opencv.org/license.html. -// -// Copyright (C) 2018, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. - -#include "../../precomp.hpp" -#include "common.hpp" -#include "internal.hpp" -#include "../include/op_softmax.hpp" - -namespace cv { namespace dnn { namespace vkcom { - -#ifdef HAVE_VULKAN - -#define LOCAL_SZ_X 256 -#define LOCAL_SZ_Y 1 -#define LOCAL_SZ_Z 1 - -struct SoftmaxParam { - int channel_size; - int outer_size; - int channels; - int logsoftmax; -}; - -OpSoftmax::OpSoftmax(const int axis, const bool log_softmax) -{ - init(axis, log_softmax); - type_ = "Softmax"; -} - -OpSoftmax::~OpSoftmax() -{ - if (max_tensor_) - delete max_tensor_; - if (sum_tensor_) - delete sum_tensor_; -} - -void OpSoftmax::reshapeOutTensor(Tensor& in, Tensor& out) -{ - Shape shape = in.getShape(); - out.reshape(NULL, shape); -} - -bool OpSoftmax::init(const int axis, const bool log_softmax) -{ - axis_ = axis; - log_softmax_ = log_softmax; - max_tensor_ = NULL; - sum_tensor_ = NULL; - OpBase::initVulkanThing(4); - return true; -} - -bool OpSoftmax::forward(std::vector& ins, - std::vector& blobs, - std::vector& outs) -{ - return forward(ins[0], outs[0]); -} - -bool OpSoftmax::forward(Tensor& in, Tensor& out) -{ - channels_ = in.dimSize(axis_); - channel_size_ = in.count(axis_+1); - outer_size_ = in.count(0, axis_); - - if (pipeline_ == VK_NULL_HANDLE) - { - config_.local_size_x = LOCAL_SZ_X; - config_.local_size_y = LOCAL_SZ_Y; - config_.local_size_z = LOCAL_SZ_Z; - config_.block_height = 1; - config_.block_width = 1; - config_.block_depth = 1; - createShaderModule(softmax_spv, sizeof(softmax_spv)); - createPipeline(sizeof(SoftmaxParam)); - computeGroupCount(); - } - - if (max_tensor_ == NULL || sum_tensor_ == NULL) - { - std::vector shape = {outer_size_, channel_size_}; - max_tensor_ = new Tensor(NULL, shape); - sum_tensor_ = new Tensor(NULL, shape); - } - bindTensor(device_, in, 0, descriptor_set_); - bindTensor(device_, *max_tensor_, 1, descriptor_set_); - bindTensor(device_, *sum_tensor_, 2, descriptor_set_); - bindTensor(device_, out, 3, descriptor_set_); - SoftmaxParam param = {channel_size_, outer_size_, channels_, log_softmax_ == true ? 1 : 0}; - recordCommandBuffer((void *)¶m, sizeof(SoftmaxParam)); - runCommandBuffer(); - return true; -} - -bool OpSoftmax::computeGroupCount() -{ - group_x_ = alignSize(outer_size_, config_.local_size_x) / config_.local_size_x; - group_y_ = 1; - group_z_ = 1; - - return true; -} - -#endif // HAVE_VULKAN - -}}} // namespace cv::dnn::vkcom diff --git a/modules/dnn/src/vkcom/src/pipeline.cpp b/modules/dnn/src/vkcom/src/pipeline.cpp new file mode 100644 index 0000000000..ea29d8824a --- /dev/null +++ b/modules/dnn/src/vkcom/src/pipeline.cpp @@ -0,0 +1,309 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. + +/* +The code has referenced MNN (https://github.com/alibaba/MNN/blob/2.4.0/source/backend/vulkan/component/VulkanPipeline.cpp) +and adapted for OpenCV by Zihao Mu. +Below is the original copyright: +*/ + +// +// VulkanPipeline.cpp +// MNN +// +// Created by MNN on 2019/01/31. +// Copyright © 2018, Alibaba Group Holding Limited +// + +#include "../../precomp.hpp" +#include "internal.hpp" +#include "../include/pipeline.hpp" + +namespace cv { namespace dnn { namespace vkcom { + +#ifdef HAVE_VULKAN + +// *********************** Descriptor ******************** +Ptr Descriptor::create(const VkDescriptorPool& pool, const VkDescriptorSet& set, Pipeline* pipeline) +{ + return Ptr(new Descriptor(pool, set, pipeline)); +} + +Descriptor::Descriptor(const VkDescriptorPool& pool, const VkDescriptorSet& set, Pipeline* _pipeline) +: desPool(pool), desSet(set), pipeline(_pipeline) +{ +} + +void Descriptor::writeTensor(Tensor tensor, int bindIndex) +{ + writeBuffer(tensor.getBuffer()->getVkBuffer(), bindIndex, tensor.size()); // TODO, check if need the size in bit. +} + +void Descriptor::writeBuffer(VkBuffer buffer, int bindIndex, size_t size, VkDeviceSize offset) +{ + CV_Assert(pipeline); + VkWriteDescriptorSet writeSet = {}; + VkDescriptorBufferInfo sourceInfo; + sourceInfo.buffer = buffer; + sourceInfo.offset = offset; + sourceInfo.range = size; + + writeSet.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET; + writeSet.descriptorCount = 1; + + writeSet.descriptorType = pipeline->argType(bindIndex); + writeSet.dstBinding = bindIndex; + writeSet.pBufferInfo = &sourceInfo; + writeSet.dstSet = desSet; + + vkUpdateDescriptorSets(kDevice, 1, &writeSet, 0, nullptr); +} + +Descriptor::~Descriptor() +{ + if (needRelease) + { + // destroy resource + vkFreeDescriptorSets(kDevice, desPool, 1, &desSet); + vkDestroyDescriptorPool(kDevice, desPool, nullptr); + } + else + { + CV_Assert(pipeline); + pipeline->descriptorPairQueue.push(std::make_pair(desPool, desSet)); + } +} + +// *********************** Pipeline ******************** + +Pipeline::Pipeline(const uint32_t* spv, size_t length, + const std::vector& _bufferTypes, VkPipelineCache& cache, + const std::vector& localSize) : bufferTypes(_bufferTypes) +{ + // Step1: create Module from spv file. + // TODO, add the local_size_x, local_size_y, and z at here. + VkShaderModule shaderModule; + VkShaderModuleCreateInfo shaderModuleCreateInfo + { + /* .sType = */ VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO, + /* .pNext = */ nullptr, + /* .flags = */ 0, + /* .codeSize = */ length * sizeof(uint32_t), + /* .pCode = */ spv, + }; + VK_CHECK_RESULT(vkCreateShaderModule(kDevice, &shaderModuleCreateInfo, nullptr, &shaderModule)); + + // Step2: according the bufferType info set the binding. + std::vector bindings; + std::map typeCount; + + for (int i = 0; i < bufferTypes.size(); i++) + { + auto type = bufferTypes[i]; + if (typeCount.find(type) == typeCount.end()) + typeCount[type] = 1; + else + typeCount[type] += 1; + + VkDescriptorSetLayoutBinding binding{(uint32_t)i, type, 1, VK_SHADER_STAGE_COMPUTE_BIT, nullptr}; + bindings.emplace_back(binding); + } + + // Step3 : Create DescriptorSetLayout and PipelineLayout + { + // Create DescriptorSetLayout + VkDescriptorSetLayoutCreateInfo setLayoutCreateInfo = {}; + setLayoutCreateInfo.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO; + setLayoutCreateInfo.bindingCount = bindings.size(); + setLayoutCreateInfo.pBindings = &bindings[0]; + VK_CHECK_RESULT(vkCreateDescriptorSetLayout(kDevice, &setLayoutCreateInfo, NULL, &setLayout)); + + // Create PipelineLayout + VkPipelineLayoutCreateInfo pipeline_layout_create_info = {}; + pipeline_layout_create_info.sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO; + pipeline_layout_create_info.setLayoutCount = 1; + pipeline_layout_create_info.pSetLayouts = &setLayout; + VK_CHECK_RESULT(vkCreatePipelineLayout(kDevice, &pipeline_layout_create_info, NULL, &pipelineLayout)); + } + + //Step: 4 create pipelineVk instance. + VkPipelineShaderStageCreateInfo stageCreateInfo = {}; + stageCreateInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO; + stageCreateInfo.stage = VK_SHADER_STAGE_COMPUTE_BIT; + stageCreateInfo.module = shaderModule; + stageCreateInfo.pName = "main"; + + VkComputePipelineCreateInfo pipelineCreateInfo = {}; + pipelineCreateInfo.sType = VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO; + pipelineCreateInfo.stage = stageCreateInfo; + pipelineCreateInfo.layout = pipelineLayout; + + cv::AutoLock lock(kContextMtx); + VK_CHECK_RESULT(vkCreateComputePipelines(kDevice, cache, 1, &pipelineCreateInfo, 0, &pipelineVK)); + + // Step5: destroy shaderModule + vkDestroyShaderModule(kDevice, shaderModule, nullptr); + + // Step6: add typeCount to desPoolSize + for (auto& iter : typeCount) + { + VkDescriptorPoolSize s; + s.descriptorCount = iter.second; + s.type = iter.first; + desPoolSize.emplace_back(s); + } +} + +Ptr Pipeline::create(const uint32_t* spv, size_t length, const std::vector& bufferTypes, + VkPipelineCache& cache, const std::vector& localSize) +{ + return Ptr(new Pipeline(spv, length, bufferTypes, cache, localSize)); +} + +void Pipeline::bind(VkCommandBuffer cmdBuffer, VkDescriptorSet descriptorSet) const +{ + vkCmdBindPipeline(cmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, pipelineVK); + vkCmdBindDescriptorSets(cmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, pipelineLayout, 0, 1, &descriptorSet, 0, nullptr); +} + +Ptr Pipeline::createSet() +{ + // find unused DescriptorSet at descriptorSetList, if not, create new one and save it at that list. + if (!descriptorPairQueue.empty()) + { + auto iter = descriptorPairQueue.front(); + descriptorPairQueue.pop(); + + Ptr des = Descriptor::create(iter.first, iter.second, this); + des->needRelease = false; // Don't release and try to reuse it. + return des; + } + + // create DescriptorPool + VkDescriptorPool descriptorPool; + VkDescriptorPoolCreateInfo info = {}; + info.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO; + info.maxSets = 1; + info.poolSizeCount = desPoolSize.size(); + info.pPoolSizes = desPoolSize.data(); + info.flags = VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT; + VK_CHECK_RESULT(vkCreateDescriptorPool(kDevice, &info, NULL, &descriptorPool)); + + // Create DescriptorSet + VkDescriptorSet descriptorSet; + VkDescriptorSetAllocateInfo allocate_info = {}; + allocate_info.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO; + allocate_info.descriptorPool = descriptorPool; + allocate_info.descriptorSetCount = 1; + allocate_info.pSetLayouts = &setLayout; + VK_CHECK_RESULT(vkAllocateDescriptorSets(kDevice, &allocate_info, &descriptorSet)); + + Ptr descriptor = Descriptor::create(descriptorPool, descriptorSet, this); + descriptor->needRelease = false; // Don't release and try to reuse it. + return descriptor; +} + +Pipeline::~Pipeline() +{ + // Step1: destroy all descriptors in descriptorSetList. + while (!descriptorPairQueue.empty()) + { + auto iter = descriptorPairQueue.front(); + descriptorPairQueue.pop(); + + CV_Assert(iter.first && iter.second); + vkFreeDescriptorSets(kDevice, iter.first, 1, &iter.second); + vkDestroyDescriptorPool(kDevice, iter.first, nullptr); + } + + // Step2: destroy other resources. + vkDestroyPipelineLayout(kDevice, pipelineLayout, nullptr); + vkDestroyDescriptorSetLayout(kDevice, setLayout, nullptr); + vkDestroyPipeline(kDevice, pipelineVK, nullptr); +} + +// *********************** Pipeline Factory ******************** + +static VkResult createPipelineCache(VkPipelineCache& pipelineCache) +{ + VkPipelineCacheCreateInfo pipelineCacheInfo { + /* .sType = */ VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO, + /* .pNext = */ nullptr, + /* .flags = */ 0, // reserved, must be 0 + /* .initialDataSize = */ 0, + /* .pInitialData = */ nullptr, + }; + return vkCreatePipelineCache(kDevice, &pipelineCacheInfo, nullptr, &pipelineCache); +} + +PipelineFactory::PipelineFactory() +{ + initSPVMaps(); // create maps from spv name to SPV file. + // create PipelineCache + VK_CHECK_RESULT(createPipelineCache(pipelineCache)); +} + +PipelineFactory::~PipelineFactory() +{ + pipelineCreated.clear(); + vkDestroyPipelineCache(kDevice, pipelineCache, nullptr); +} + +void PipelineFactory::reset() +{ + // Step1: destroy old pipelineCache. + vkDestroyPipelineCache(kDevice, pipelineCache, nullptr); + + // Step2: create new PipelineCache + VK_CHECK_RESULT(createPipelineCache(pipelineCache)); + + auto iter = pipelineCreated.begin(); + for (int i = 0; i < pipelineCreated.size(); i++, iter++) + { + iter->second.release(); + } + + pipelineCreated.clear(); +} + +Ptr PipelineFactory::getPipeline(const std::string& key, const std::vector& types, + const std::vector& localSize) +{ + auto iter = pipelineCreated.find(key); + if (iter != pipelineCreated.end()) + { + return iter->second; + } + + // retrieve spv from SPVMaps with given key + auto iterSPV = SPVMaps.find(key); + if (iterSPV == SPVMaps.end()) + CV_Error(CV_StsError, "Can not create SPV with the given name:"+key+"!"); + + const uint32_t* spv = iterSPV->second.first; + size_t length = iterSPV->second.second; + + Ptr pipeline = Pipeline::create(spv, length, types, pipelineCache, localSize); + + if (pipeline) + { + pipelineCreated.insert(std::make_pair(key, pipeline)); + } + else + { + CV_Error(CV_StsError, "Can not Created the VkPipeline "+key); + } + + return pipeline; +} + +Ptr PipelineFactory::create() +{ + Ptr pipelineFactory = Ptr(new PipelineFactory()); + return pipelineFactory; +} + +#endif // HAVE_VULKAN + +}}} // namespace cv::dnn::vkcom diff --git a/modules/dnn/src/vkcom/src/tensor.cpp b/modules/dnn/src/vkcom/src/tensor.cpp index bbb50c857e..c2b73079fa 100644 --- a/modules/dnn/src/vkcom/src/tensor.cpp +++ b/modules/dnn/src/vkcom/src/tensor.cpp @@ -6,24 +6,19 @@ // Third party copyrights are property of their respective owners. #include "../../precomp.hpp" -#include "common.hpp" #include "internal.hpp" namespace cv { namespace dnn { namespace vkcom { #ifdef HAVE_VULKAN -Tensor::Tensor(Format fmt) : size_in_byte_(0), format_(fmt) +Tensor::Tensor(Format fmt, VkBufferUsageFlags usageFlag) : size_in_byte_(0), format_(fmt), usageFlag_(usageFlag) { - createContext(); - device_ = kDevice; } -Tensor::Tensor(const char* data, std::vector& shape, Format fmt) - : size_in_byte_(0), format_(fmt) +Tensor::Tensor(const char* data, std::vector& shape, Format fmt, VkBufferUsageFlags usageFlag) + : size_in_byte_(0), format_(fmt), usageFlag_(usageFlag) { - createContext(); - device_ = kDevice; reshape(data, shape); } @@ -31,7 +26,7 @@ void* Tensor::map() { void *p; - VK_CHECK_RESULT(vkMapMemory(device_, buffer_->getVkMemory(), + VK_CHECK_RESULT(vkMapMemory(kDevice, buffer_->getVkMemory(), 0, size_in_byte_, 0, (void **)&p)); return p; @@ -39,7 +34,7 @@ void* Tensor::map() void Tensor::unMap() { - vkUnmapMemory(device_, buffer_->getVkMemory()); + vkUnmapMemory(kDevice, buffer_->getVkMemory()); } Shape Tensor::getShape() const @@ -67,9 +62,9 @@ int Tensor::dimNum() const Tensor Tensor::reshape(const char* data, const std::vector& shape, bool alloc, Format fmt) { - if (device_ == VK_NULL_HANDLE) + if (kDevice == VK_NULL_HANDLE) { - CV_Error(Error::StsError, "device is NULL"); + CV_Error(Error::StsError, "device is NULL!"); return *this; } @@ -85,7 +80,7 @@ Tensor Tensor::reshape(const char* data, const std::vector& shape, bool all if (alloc) { - buffer_.reset(new Buffer(device_, size_in_byte_, data)); + buffer_.reset(new Buffer(size_in_byte_, data, usageFlag_)); } else if (data) { @@ -99,9 +94,9 @@ Tensor Tensor::reshape(const char* data, const std::vector& shape, bool all void Tensor::setTo(float val) { - if (device_ == VK_NULL_HANDLE) + if (kDevice == VK_NULL_HANDLE) { - CV_Error(Error::StsError, "device is NULL"); + CV_Error(Error::StsError, "device is NULL!"); return; } diff --git a/modules/dnn/src/vkcom/vulkan/vk_loader.cpp b/modules/dnn/src/vkcom/vulkan/vk_loader.cpp index 9b1cdceab8..4640d0a0cb 100644 --- a/modules/dnn/src/vkcom/vulkan/vk_loader.cpp +++ b/modules/dnn/src/vkcom/vulkan/vk_loader.cpp @@ -25,13 +25,30 @@ typedef HMODULE VulkanHandle; #include #include typedef void* VulkanHandle; -#define DEFAULT_VK_LIBRARY_PATH "libvulkan.so.1" +#define DEFAULT_VK_LIBRARY_PATH "libvulkan.so" #define LOAD_VK_LIBRARY(path) dlopen(path, RTLD_LAZY | RTLD_GLOBAL) #define FREE_VK_LIBRARY(handle) dlclose(handle) #define GET_VK_ENTRY_POINT(handle) \ (PFN_vkGetInstanceProcAddr)dlsym(handle, "vkGetInstanceProcAddr"); #endif // __linux__ +#if defined(__APPLE__) +#include +#include +typedef void* VulkanHandle; + +#if defined(__x86_64__) +#define DEFAULT_VK_LIBRARY_PATH "libvulkan.dylib" +#else // For Apple ARM chip, we use MoltenVK lib. +#define DEFAULT_VK_LIBRARY_PATH "libMoltenVK.dylib" +#endif + +#define LOAD_VK_LIBRARY(path) dlopen(path, RTLD_LAZY | RTLD_GLOBAL) +#define FREE_VK_LIBRARY(handle) dlclose(handle) +#define GET_VK_ENTRY_POINT(handle) \ + (PFN_vkGetInstanceProcAddr)dlsym(handle, "vkGetInstanceProcAddr"); +#endif // Macos + #ifndef DEFAULT_VK_LIBRARY_PATH #define DEFAULT_VK_LIBRARY_PATH "" #define LOAD_VK_LIBRARY(path) nullptr @@ -113,6 +130,15 @@ bool loadVulkanLibrary() if( handle == nullptr ) { fprintf(stderr, "Could not load Vulkan library: %s!\n", path); + fprintf(stderr, "Please download the Vulkan SDK and set the environment variable of OPENCV_VULKAN_RUNTIME according " + "to your system environment.\n"); + fprintf(stderr, "For M1 Mac and IOS, we use MoltenVK to map the Vulkan code to native apple Metal code.\n"); + fprintf(stderr, "You can download the SDK from https://vulkan.lunarg.com/sdk/home.\n"); + fprintf(stderr, "The following are some examples:\n"); + fprintf(stderr, "For Windows, OPENCV_VULKAN_RUNTIME=D:\\VulkanSDK\\1.3.236.0\\Bin\\vulkan-1.dll\n"); + fprintf(stderr, "For Linux, OPENCV_VULKAN_RUNTIME=/opt/vulkan/1.3.236.0/x86_64/libvulkan.so\n"); + fprintf(stderr, "For MacOS of x86, OPENCV_VULKAN_RUNTIME=/opt/vulkan/1.3.236.0/x86_64/libvulkan.dylib\n"); + fprintf(stderr, "For MacOS of M1 or IOS, OPENCV_VULKAN_RUNTIME=/opt/VulkanSDK/1.3.231.1/MoltenVK/dylib/macOS/libMoltenVK.dylib\n"); return false; } diff --git a/modules/dnn/test/test_backends.cpp b/modules/dnn/test/test_backends.cpp index d8e69f3bbb..da666ace01 100644 --- a/modules/dnn/test/test_backends.cpp +++ b/modules/dnn/test/test_backends.cpp @@ -545,6 +545,11 @@ TEST_P(DNNTestNetwork, FastNeuralStyle_eccv16) l1 = 0.4; lInf = 19.; } + else if (target == DNN_TARGET_VULKAN) + { + l1 = 0.4; + lInf = 7.46; + } #if defined(INF_ENGINE_RELEASE) && INF_ENGINE_VER_MAJOR_EQ(2022010000) if (backend == DNN_BACKEND_INFERENCE_ENGINE_NGRAPH && target == DNN_TARGET_OPENCL)