Tests for VK_KHR_performance_query
authorBoris Zanin <boris.zanin@mobica.com>
Thu, 16 Aug 2018 08:55:01 +0000 (10:55 +0200)
committerPiotr Byszewski <piotr.byszewski@mobica.com>
Tue, 9 Apr 2019 12:36:20 +0000 (14:36 +0200)
Add tests:
 * dEQP-VK.query_pool.performance_query.*

Components: Vulkan

VK-GL-CTS issue: 1302

Change-Id: I4d3c62dace2d259061f78d3014deb05bc4eac9d7

31 files changed:
AndroidGen.mk
android/cts/master/vk-master.txt
external/vulkancts/framework/vulkan/vkBasicTypes.inl
external/vulkancts/framework/vulkan/vkConcreteDeviceInterface.inl
external/vulkancts/framework/vulkan/vkConcreteInstanceInterface.inl
external/vulkancts/framework/vulkan/vkDeviceDriverImpl.inl
external/vulkancts/framework/vulkan/vkDeviceFunctionPointers.inl
external/vulkancts/framework/vulkan/vkExtensionFunctions.inl
external/vulkancts/framework/vulkan/vkFunctionPointerTypes.inl
external/vulkancts/framework/vulkan/vkGetStructureTypeImpl.inl
external/vulkancts/framework/vulkan/vkInitDeviceFunctionPointers.inl
external/vulkancts/framework/vulkan/vkInitInstanceFunctionPointers.inl
external/vulkancts/framework/vulkan/vkInstanceDriverImpl.inl
external/vulkancts/framework/vulkan/vkInstanceFunctionPointers.inl
external/vulkancts/framework/vulkan/vkNullDriverImpl.inl
external/vulkancts/framework/vulkan/vkStrUtil.inl
external/vulkancts/framework/vulkan/vkStrUtilImpl.inl
external/vulkancts/framework/vulkan/vkStructTypes.inl
external/vulkancts/framework/vulkan/vkVirtualDeviceInterface.inl
external/vulkancts/framework/vulkan/vkVirtualInstanceInterface.inl
external/vulkancts/framework/vulkan/vkVulkan_c.inl
external/vulkancts/modules/vulkan/api/vktApiFeatureInfo.cpp
external/vulkancts/modules/vulkan/query_pool/CMakeLists.txt
external/vulkancts/modules/vulkan/query_pool/vktQueryPoolPerformanceTests.cpp [new file with mode: 0644]
external/vulkancts/modules/vulkan/query_pool/vktQueryPoolPerformanceTests.hpp [new file with mode: 0644]
external/vulkancts/modules/vulkan/query_pool/vktQueryPoolTests.cpp
external/vulkancts/modules/vulkan/vktTestCase.cpp
external/vulkancts/modules/vulkan/vktTestCase.hpp
external/vulkancts/mustpass/1.1.5/vk-default-no-waivers.txt
external/vulkancts/mustpass/1.1.5/vk-default.txt
external/vulkancts/scripts/src/vulkan.h.in

index 653c606..1045902 100644 (file)
@@ -229,6 +229,7 @@ LOCAL_SRC_FILES := \
        external/vulkancts/modules/vulkan/protected_memory/vktProtectedMemWsiSwapchainTests.cpp \
        external/vulkancts/modules/vulkan/protected_memory/vktProtectedMemYCbCrConversionTests.cpp \
        external/vulkancts/modules/vulkan/query_pool/vktQueryPoolOcclusionTests.cpp \
+       external/vulkancts/modules/vulkan/query_pool/vktQueryPoolPerformanceTests.cpp \
        external/vulkancts/modules/vulkan/query_pool/vktQueryPoolStatisticsTests.cpp \
        external/vulkancts/modules/vulkan/query_pool/vktQueryPoolTests.cpp \
        external/vulkancts/modules/vulkan/rasterization/vktRasterizationTests.cpp \
index 3e5404e..3a38b29 100755 (executable)
@@ -311907,6 +311907,12 @@ dEQP-VK.query_pool.statistics_query.host_query_reset.tes_control_patches.tes_con
 dEQP-VK.query_pool.statistics_query.host_query_reset.tes_evaluation_shader_invocations.tes_evaluation_shader_invocations
 dEQP-VK.query_pool.statistics_query.host_query_reset.tes_evaluation_shader_invocations.tes_evaluation_shader_invocations_secondary
 dEQP-VK.query_pool.statistics_query.host_query_reset.tes_evaluation_shader_invocations.tes_evaluation_shader_invocations_secondary_inherited
+dEQP-VK.query_pool.performance_query.enumerate_and_validate_graphic
+dEQP-VK.query_pool.performance_query.enumerate_and_validate_compute
+dEQP-VK.query_pool.performance_query.query_graphic
+dEQP-VK.query_pool.performance_query.query_compute
+dEQP-VK.query_pool.performance_query.multiple_pools_graphic
+dEQP-VK.query_pool.performance_query.multiple_pools_compute
 dEQP-VK.draw.simple_draw.simple_draw_triangle_list
 dEQP-VK.draw.simple_draw.simple_draw_triangle_strip
 dEQP-VK.draw.simple_draw.simple_draw_instanced_triangle_list
index ed3b7b0..49e3a97 100644 (file)
@@ -302,6 +302,13 @@ enum VkStructureType
        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_COUNTER_FEATURES_KHR                              = 1000116000,
+       VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_COUNTER_PROPERTIES_KHR                    = 1000116001,
+       VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_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,
@@ -649,8 +656,7 @@ enum VkQueryType
        VK_QUERY_TYPE_OCCLUSION                         = 0,
        VK_QUERY_TYPE_PIPELINE_STATISTICS       = 1,
        VK_QUERY_TYPE_TIMESTAMP                         = 2,
-
-       VK_QUERY_TYPE_LAST
+       VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR     = 1000116000,
 };
 
 enum VkSharingMode
@@ -1114,6 +1120,44 @@ enum VkPresentModeKHR
        VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR   = 1000111001,
 };
 
+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_KHR_LAST
+};
+
+enum VkPerformanceCounterScopeKHR
+{
+       VK_QUERY_SCOPE_COMMAND_BUFFER_KHR       = 0,
+       VK_QUERY_SCOPE_RENDER_PASS_KHR          = 1,
+       VK_QUERY_SCOPE_COMMAND_KHR                      = 2,
+
+       VK_PERFORMANCE_COUNTER_SCOPE_KHR_LAST
+};
+
+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_KHR_LAST
+};
+
 enum VkDebugReportObjectTypeEXT
 {
        VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT                                                 = 0,
@@ -1813,6 +1857,13 @@ enum VkDisplayPlaneAlphaFlagBitsKHR
 };
 typedef deUint32 VkDisplayPlaneAlphaFlagsKHR;
 
+enum VkPerformanceCounterDescriptionFlagBitsKHR
+{
+       VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR    = 0x00000001,
+       VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR    = 0x00000002,
+};
+typedef deUint32 VkPerformanceCounterDescriptionFlagsKHR;
+
 enum VkResolveModeFlagBitsKHR
 {
        VK_RESOLVE_MODE_NONE_KHR                        = 0,
@@ -1955,6 +2006,8 @@ typedef deUint32 VkAndroidSurfaceCreateFlagsKHR;
 
 typedef deUint32 VkWin32SurfaceCreateFlagsKHR;
 
+typedef deUint32 VkAcquireProfilingLockFlagsKHR;
+
 typedef deUint32 VkViSurfaceCreateFlagsNN;
 
 typedef deUint32 VkPipelineViewportSwizzleStateCreateFlagsNV;
@@ -2127,6 +2180,7 @@ VK_DEFINE_PLATFORM_TYPE(RROutput,                                 void*);
 #define VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO
 #define VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION 1
 #define VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION 1
+#define VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION 1
 #define VK_KHR_MAINTENANCE2_SPEC_VERSION 1
 #define VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT
 #define VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR VK_IMAGE_CREATE_EXTENDED_USAGE_BIT
index 2278a4c..456583d 100644 (file)
@@ -166,6 +166,8 @@ virtual VkResult                    importFenceWin32HandleKHR                                       (VkDevice device, const VkImpor
 virtual VkResult                       getFenceWin32HandleKHR                                          (VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle) const;
 virtual VkResult                       importFenceFdKHR                                                        (VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo) const;
 virtual VkResult                       getFenceFdKHR                                                           (VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd) const;
+virtual VkResult                       acquireProfilingLockKHR                                         (VkDevice device, const VkAcquireProfilingLockInfoKHR* pInfo) const;
+virtual void                           releaseProfilingLockKHR                                         (VkDevice device) const;
 virtual VkResult                       debugMarkerSetObjectTagEXT                                      (VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo) const;
 virtual VkResult                       debugMarkerSetObjectNameEXT                                     (VkDevice device, const VkDebugMarkerObjectNameInfoEXT* pNameInfo) const;
 virtual void                           cmdDebugMarkerBeginEXT                                          (VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) const;
index 0aeea3a..c5836ce 100644 (file)
@@ -1,70 +1,72 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  */
-virtual void           destroyInstance                                                                         (VkInstance instance, const VkAllocationCallbacks* pAllocator) const;
-virtual VkResult       enumeratePhysicalDevices                                                        (VkInstance instance, deUint32* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices) const;
-virtual void           getPhysicalDeviceFeatures                                                       (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures) const;
-virtual void           getPhysicalDeviceFormatProperties                                       (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties) const;
-virtual VkResult       getPhysicalDeviceImageFormatProperties                          (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties) const;
-virtual void           getPhysicalDeviceProperties                                                     (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties) const;
-virtual void           getPhysicalDeviceQueueFamilyProperties                          (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties) const;
-virtual void           getPhysicalDeviceMemoryProperties                                       (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties) const;
-virtual VkResult       createDevice                                                                            (VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice) const;
-virtual VkResult       enumerateDeviceExtensionProperties                                      (VkPhysicalDevice physicalDevice, const char* pLayerName, deUint32* pPropertyCount, VkExtensionProperties* pProperties) const;
-virtual VkResult       enumerateDeviceLayerProperties                                          (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkLayerProperties* pProperties) const;
-virtual void           getPhysicalDeviceSparseImageFormatProperties            (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, deUint32* pPropertyCount, VkSparseImageFormatProperties* pProperties) const;
-virtual VkResult       enumeratePhysicalDeviceGroups                                           (VkInstance instance, deUint32* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties) const;
-virtual void           getPhysicalDeviceFeatures2                                                      (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures) const;
-virtual void           getPhysicalDeviceProperties2                                            (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties) const;
-virtual void           getPhysicalDeviceFormatProperties2                                      (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties) const;
-virtual VkResult       getPhysicalDeviceImageFormatProperties2                         (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties) const;
-virtual void           getPhysicalDeviceQueueFamilyProperties2                         (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties) const;
-virtual void           getPhysicalDeviceMemoryProperties2                                      (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties) const;
-virtual void           getPhysicalDeviceSparseImageFormatProperties2           (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, deUint32* pPropertyCount, VkSparseImageFormatProperties2* pProperties) const;
-virtual void           getPhysicalDeviceExternalBufferProperties                       (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties) const;
-virtual void           getPhysicalDeviceExternalFenceProperties                        (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties) const;
-virtual void           getPhysicalDeviceExternalSemaphoreProperties            (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties) const;
-virtual void           destroySurfaceKHR                                                                       (VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator) const;
-virtual VkResult       getPhysicalDeviceSurfaceSupportKHR                                      (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported) const;
-virtual VkResult       getPhysicalDeviceSurfaceCapabilitiesKHR                         (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities) const;
-virtual VkResult       getPhysicalDeviceSurfaceFormatsKHR                                      (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats) const;
-virtual VkResult       getPhysicalDeviceSurfacePresentModesKHR                         (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pPresentModeCount, VkPresentModeKHR* pPresentModes) const;
-virtual VkResult       getPhysicalDevicePresentRectanglesKHR                           (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pRectCount, VkRect2D* pRects) const;
-virtual VkResult       getPhysicalDeviceDisplayPropertiesKHR                           (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPropertiesKHR* pProperties) const;
-virtual VkResult       getPhysicalDeviceDisplayPlanePropertiesKHR                      (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties) const;
-virtual VkResult       getDisplayPlaneSupportedDisplaysKHR                                     (VkPhysicalDevice physicalDevice, deUint32 planeIndex, deUint32* pDisplayCount, VkDisplayKHR* pDisplays) const;
-virtual VkResult       getDisplayModePropertiesKHR                                                     (VkPhysicalDevice physicalDevice, VkDisplayKHR display, deUint32* pPropertyCount, VkDisplayModePropertiesKHR* pProperties) const;
-virtual VkResult       createDisplayModeKHR                                                            (VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode) const;
-virtual VkResult       getDisplayPlaneCapabilitiesKHR                                          (VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, deUint32 planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities) const;
-virtual VkResult       createDisplayPlaneSurfaceKHR                                            (VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
-virtual VkResult       createXlibSurfaceKHR                                                            (VkInstance instance, const VkXlibSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
-virtual VkBool32       getPhysicalDeviceXlibPresentationSupportKHR                     (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::XlibDisplayPtr dpy, pt::XlibVisualID visualID) const;
-virtual VkResult       createXcbSurfaceKHR                                                                     (VkInstance instance, const VkXcbSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
-virtual VkBool32       getPhysicalDeviceXcbPresentationSupportKHR                      (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::XcbConnectionPtr connection, pt::XcbVisualid visual_id) const;
-virtual VkResult       createWaylandSurfaceKHR                                                         (VkInstance instance, const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
-virtual VkBool32       getPhysicalDeviceWaylandPresentationSupportKHR          (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::WaylandDisplayPtr display) const;
-virtual VkResult       createMirSurfaceKHR                                                                     (VkInstance instance, const VkMirSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
-virtual VkBool32       getPhysicalDeviceMirPresentationSupportKHR                      (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::MirConnectionPtr connection) const;
-virtual VkResult       createAndroidSurfaceKHR                                                         (VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
-virtual VkResult       createWin32SurfaceKHR                                                           (VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
-virtual VkBool32       getPhysicalDeviceWin32PresentationSupportKHR            (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex) const;
-virtual VkResult       getPhysicalDeviceSurfaceCapabilities2KHR                        (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities) const;
-virtual VkResult       getPhysicalDeviceSurfaceFormats2KHR                                     (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, deUint32* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats) const;
-virtual VkResult       getPhysicalDeviceDisplayProperties2KHR                          (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayProperties2KHR* pProperties) const;
-virtual VkResult       getPhysicalDeviceDisplayPlaneProperties2KHR                     (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPlaneProperties2KHR* pProperties) const;
-virtual VkResult       getDisplayModeProperties2KHR                                            (VkPhysicalDevice physicalDevice, VkDisplayKHR display, deUint32* pPropertyCount, VkDisplayModeProperties2KHR* pProperties) const;
-virtual VkResult       getDisplayPlaneCapabilities2KHR                                         (VkPhysicalDevice physicalDevice, const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR* pCapabilities) const;
-virtual VkResult       createDebugReportCallbackEXT                                            (VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback) const;
-virtual void           destroyDebugReportCallbackEXT                                           (VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator) const;
-virtual void           debugReportMessageEXT                                                           (VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, deUint64 object, deUintptr location, deInt32 messageCode, const char* pLayerPrefix, const char* pMessage) const;
-virtual VkResult       getPhysicalDeviceExternalImageFormatPropertiesNV        (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties) const;
-virtual VkResult       createViSurfaceNN                                                                       (VkInstance instance, const VkViSurfaceCreateInfoNN* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
-virtual void           getPhysicalDeviceGeneratedCommandsPropertiesNVX         (VkPhysicalDevice physicalDevice, VkDeviceGeneratedCommandsFeaturesNVX* pFeatures, VkDeviceGeneratedCommandsLimitsNVX* pLimits) const;
-virtual VkResult       releaseDisplayEXT                                                                       (VkPhysicalDevice physicalDevice, VkDisplayKHR display) const;
-virtual VkResult       acquireXlibDisplayEXT                                                           (VkPhysicalDevice physicalDevice, pt::XlibDisplayPtr dpy, VkDisplayKHR display) const;
-virtual VkResult       getRandROutputDisplayEXT                                                        (VkPhysicalDevice physicalDevice, pt::XlibDisplayPtr dpy, pt::RROutput rrOutput, VkDisplayKHR* pDisplay) const;
-virtual VkResult       getPhysicalDeviceSurfaceCapabilities2EXT                        (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities) const;
-virtual VkResult       createIOSSurfaceMVK                                                                     (VkInstance instance, const VkIOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
-virtual VkResult       createMacOSSurfaceMVK                                                           (VkInstance instance, const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
-virtual void           getPhysicalDeviceMultisamplePropertiesEXT                       (VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties) const;
-virtual VkResult       getPhysicalDeviceCooperativeMatrixPropertiesNV          (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkCooperativeMatrixPropertiesNV* pProperties) const;
+virtual void           destroyInstance                                                                                                 (VkInstance instance, const VkAllocationCallbacks* pAllocator) const;
+virtual VkResult       enumeratePhysicalDevices                                                                                (VkInstance instance, deUint32* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices) const;
+virtual void           getPhysicalDeviceFeatures                                                                               (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures) const;
+virtual void           getPhysicalDeviceFormatProperties                                                               (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties) const;
+virtual VkResult       getPhysicalDeviceImageFormatProperties                                                  (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties) const;
+virtual void           getPhysicalDeviceProperties                                                                             (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties) const;
+virtual void           getPhysicalDeviceQueueFamilyProperties                                                  (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties) const;
+virtual void           getPhysicalDeviceMemoryProperties                                                               (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties) const;
+virtual VkResult       createDevice                                                                                                    (VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice) const;
+virtual VkResult       enumerateDeviceExtensionProperties                                                              (VkPhysicalDevice physicalDevice, const char* pLayerName, deUint32* pPropertyCount, VkExtensionProperties* pProperties) const;
+virtual VkResult       enumerateDeviceLayerProperties                                                                  (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkLayerProperties* pProperties) const;
+virtual void           getPhysicalDeviceSparseImageFormatProperties                                    (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, deUint32* pPropertyCount, VkSparseImageFormatProperties* pProperties) const;
+virtual VkResult       enumeratePhysicalDeviceGroups                                                                   (VkInstance instance, deUint32* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties) const;
+virtual void           getPhysicalDeviceFeatures2                                                                              (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures) const;
+virtual void           getPhysicalDeviceProperties2                                                                    (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties) const;
+virtual void           getPhysicalDeviceFormatProperties2                                                              (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties) const;
+virtual VkResult       getPhysicalDeviceImageFormatProperties2                                                 (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties) const;
+virtual void           getPhysicalDeviceQueueFamilyProperties2                                                 (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties) const;
+virtual void           getPhysicalDeviceMemoryProperties2                                                              (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties) const;
+virtual void           getPhysicalDeviceSparseImageFormatProperties2                                   (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, deUint32* pPropertyCount, VkSparseImageFormatProperties2* pProperties) const;
+virtual void           getPhysicalDeviceExternalBufferProperties                                               (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties) const;
+virtual void           getPhysicalDeviceExternalFenceProperties                                                (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties) const;
+virtual void           getPhysicalDeviceExternalSemaphoreProperties                                    (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties) const;
+virtual void           destroySurfaceKHR                                                                                               (VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator) const;
+virtual VkResult       getPhysicalDeviceSurfaceSupportKHR                                                              (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported) const;
+virtual VkResult       getPhysicalDeviceSurfaceCapabilitiesKHR                                                 (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities) const;
+virtual VkResult       getPhysicalDeviceSurfaceFormatsKHR                                                              (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats) const;
+virtual VkResult       getPhysicalDeviceSurfacePresentModesKHR                                                 (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pPresentModeCount, VkPresentModeKHR* pPresentModes) const;
+virtual VkResult       getPhysicalDevicePresentRectanglesKHR                                                   (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pRectCount, VkRect2D* pRects) const;
+virtual VkResult       getPhysicalDeviceDisplayPropertiesKHR                                                   (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPropertiesKHR* pProperties) const;
+virtual VkResult       getPhysicalDeviceDisplayPlanePropertiesKHR                                              (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties) const;
+virtual VkResult       getDisplayPlaneSupportedDisplaysKHR                                                             (VkPhysicalDevice physicalDevice, deUint32 planeIndex, deUint32* pDisplayCount, VkDisplayKHR* pDisplays) const;
+virtual VkResult       getDisplayModePropertiesKHR                                                                             (VkPhysicalDevice physicalDevice, VkDisplayKHR display, deUint32* pPropertyCount, VkDisplayModePropertiesKHR* pProperties) const;
+virtual VkResult       createDisplayModeKHR                                                                                    (VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode) const;
+virtual VkResult       getDisplayPlaneCapabilitiesKHR                                                                  (VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, deUint32 planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities) const;
+virtual VkResult       createDisplayPlaneSurfaceKHR                                                                    (VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
+virtual VkResult       createXlibSurfaceKHR                                                                                    (VkInstance instance, const VkXlibSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
+virtual VkBool32       getPhysicalDeviceXlibPresentationSupportKHR                                             (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::XlibDisplayPtr dpy, pt::XlibVisualID visualID) const;
+virtual VkResult       createXcbSurfaceKHR                                                                                             (VkInstance instance, const VkXcbSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
+virtual VkBool32       getPhysicalDeviceXcbPresentationSupportKHR                                              (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::XcbConnectionPtr connection, pt::XcbVisualid visual_id) const;
+virtual VkResult       createWaylandSurfaceKHR                                                                                 (VkInstance instance, const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
+virtual VkBool32       getPhysicalDeviceWaylandPresentationSupportKHR                                  (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::WaylandDisplayPtr display) const;
+virtual VkResult       createMirSurfaceKHR                                                                                             (VkInstance instance, const VkMirSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
+virtual VkBool32       getPhysicalDeviceMirPresentationSupportKHR                                              (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::MirConnectionPtr connection) const;
+virtual VkResult       createAndroidSurfaceKHR                                                                                 (VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
+virtual VkResult       createWin32SurfaceKHR                                                                                   (VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
+virtual VkBool32       getPhysicalDeviceWin32PresentationSupportKHR                                    (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex) const;
+virtual void           enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR   (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, deUint32* pCounterCount, VkPerformanceCounterKHR* pCounters, VkPerformanceCounterDescriptionKHR* pCounterDescriptions) const;
+virtual void           getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR                   (VkPhysicalDevice physicalDevice, const VkPerformanceQueryCreateInfoKHR* pPerformanceQueryCreateInfo, deUint32* pNumPasses) const;
+virtual VkResult       getPhysicalDeviceSurfaceCapabilities2KHR                                                (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities) const;
+virtual VkResult       getPhysicalDeviceSurfaceFormats2KHR                                                             (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, deUint32* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats) const;
+virtual VkResult       getPhysicalDeviceDisplayProperties2KHR                                                  (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayProperties2KHR* pProperties) const;
+virtual VkResult       getPhysicalDeviceDisplayPlaneProperties2KHR                                             (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPlaneProperties2KHR* pProperties) const;
+virtual VkResult       getDisplayModeProperties2KHR                                                                    (VkPhysicalDevice physicalDevice, VkDisplayKHR display, deUint32* pPropertyCount, VkDisplayModeProperties2KHR* pProperties) const;
+virtual VkResult       getDisplayPlaneCapabilities2KHR                                                                 (VkPhysicalDevice physicalDevice, const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR* pCapabilities) const;
+virtual VkResult       createDebugReportCallbackEXT                                                                    (VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback) const;
+virtual void           destroyDebugReportCallbackEXT                                                                   (VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator) const;
+virtual void           debugReportMessageEXT                                                                                   (VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, deUint64 object, deUintptr location, deInt32 messageCode, const char* pLayerPrefix, const char* pMessage) const;
+virtual VkResult       getPhysicalDeviceExternalImageFormatPropertiesNV                                (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties) const;
+virtual VkResult       createViSurfaceNN                                                                                               (VkInstance instance, const VkViSurfaceCreateInfoNN* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
+virtual void           getPhysicalDeviceGeneratedCommandsPropertiesNVX                                 (VkPhysicalDevice physicalDevice, VkDeviceGeneratedCommandsFeaturesNVX* pFeatures, VkDeviceGeneratedCommandsLimitsNVX* pLimits) const;
+virtual VkResult       releaseDisplayEXT                                                                                               (VkPhysicalDevice physicalDevice, VkDisplayKHR display) const;
+virtual VkResult       acquireXlibDisplayEXT                                                                                   (VkPhysicalDevice physicalDevice, pt::XlibDisplayPtr dpy, VkDisplayKHR display) const;
+virtual VkResult       getRandROutputDisplayEXT                                                                                (VkPhysicalDevice physicalDevice, pt::XlibDisplayPtr dpy, pt::RROutput rrOutput, VkDisplayKHR* pDisplay) const;
+virtual VkResult       getPhysicalDeviceSurfaceCapabilities2EXT                                                (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities) const;
+virtual VkResult       createIOSSurfaceMVK                                                                                             (VkInstance instance, const VkIOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
+virtual VkResult       createMacOSSurfaceMVK                                                                                   (VkInstance instance, const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const;
+virtual void           getPhysicalDeviceMultisamplePropertiesEXT                                               (VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties) const;
+virtual VkResult       getPhysicalDeviceCooperativeMatrixPropertiesNV                                  (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkCooperativeMatrixPropertiesNV* pProperties) const;
index 627e8a4..2bf85b8 100644 (file)
@@ -827,6 +827,16 @@ VkResult DeviceDriver::getFenceFdKHR (VkDevice device, const VkFenceGetFdInfoKHR
        return m_vk.getFenceFdKHR(device, pGetFdInfo, pFd);
 }
 
+VkResult DeviceDriver::acquireProfilingLockKHR (VkDevice device, const VkAcquireProfilingLockInfoKHR* pInfo) const
+{
+       return m_vk.acquireProfilingLockKHR(device, pInfo);
+}
+
+void DeviceDriver::releaseProfilingLockKHR (VkDevice device) const
+{
+       m_vk.releaseProfilingLockKHR(device);
+}
+
 VkResult DeviceDriver::debugMarkerSetObjectTagEXT (VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo) const
 {
        return m_vk.debugMarkerSetObjectTagEXT(device, pTagInfo);
index cbd2fee..226f175 100644 (file)
@@ -166,6 +166,8 @@ ImportFenceWin32HandleKHRFunc                                       importFenceWin32HandleKHR;
 GetFenceWin32HandleKHRFunc                                             getFenceWin32HandleKHR;
 ImportFenceFdKHRFunc                                                   importFenceFdKHR;
 GetFenceFdKHRFunc                                                              getFenceFdKHR;
+AcquireProfilingLockKHRFunc                                            acquireProfilingLockKHR;
+ReleaseProfilingLockKHRFunc                                            releaseProfilingLockKHR;
 DebugMarkerSetObjectTagEXTFunc                                 debugMarkerSetObjectTagEXT;
 DebugMarkerSetObjectNameEXTFunc                                        debugMarkerSetObjectNameEXT;
 CmdDebugMarkerBeginEXTFunc                                             cmdDebugMarkerBeginEXT;
index 6a9a18e..0f5143f 100644 (file)
@@ -69,6 +69,11 @@ void getInstanceExtensionFunctions (::std::string extName, ::std::vector<const c
                functions.push_back("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
        else if (extName == "VK_KHR_external_fence_capabilities")
                functions.push_back("vkGetPhysicalDeviceExternalFencePropertiesKHR");
+       else if (extName == "VK_KHR_performance_query")
+       {
+               functions.push_back("vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR");
+               functions.push_back("vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR");
+       }
        else if (extName == "VK_KHR_get_surface_capabilities2")
        {
                functions.push_back("vkGetPhysicalDeviceSurfaceCapabilities2KHR");
@@ -187,6 +192,11 @@ void getDeviceExtensionFunctions (::std::string extName, ::std::vector<const cha
                functions.push_back("vkImportFenceFdKHR");
                functions.push_back("vkGetFenceFdKHR");
        }
+       else if (extName == "VK_KHR_performance_query")
+       {
+               functions.push_back("vkAcquireProfilingLockKHR");
+               functions.push_back("vkReleaseProfilingLockKHR");
+       }
        else if (extName == "VK_KHR_get_memory_requirements2")
        {
                functions.push_back("vkGetBufferMemoryRequirements2KHR");
@@ -297,6 +307,7 @@ void getDeviceExtensionFunctions (::std::string extName, ::std::vector<const cha
        "VK_KHR_external_memory_capabilities",
        "VK_KHR_external_semaphore_capabilities",
        "VK_KHR_external_fence_capabilities",
+       "VK_KHR_performance_query",
        "VK_KHR_get_surface_capabilities2",
        "VK_KHR_get_display_properties2",
        "VK_EXT_debug_report",
index f94ec23..1c7f9b2 100644 (file)
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  */
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateInstanceFunc)                                                                        (const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyInstanceFunc)                                                                       (VkInstance instance, const VkAllocationCallbacks* pAllocator);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* EnumeratePhysicalDevicesFunc)                                                      (VkInstance instance, deUint32* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceFeaturesFunc)                                                     (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceFormatPropertiesFunc)                                     (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceImageFormatPropertiesFunc)                        (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDevicePropertiesFunc)                                           (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceQueueFamilyPropertiesFunc)                        (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceMemoryPropertiesFunc)                                     (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties);
-typedef VKAPI_ATTR PFN_vkVoidFunction  (VKAPI_CALL* GetInstanceProcAddrFunc)                                                           (VkInstance instance, const char* pName);
-typedef VKAPI_ATTR PFN_vkVoidFunction  (VKAPI_CALL* GetDeviceProcAddrFunc)                                                                     (VkDevice device, const char* pName);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateDeviceFunc)                                                                          (VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyDeviceFunc)                                                                         (VkDevice device, const VkAllocationCallbacks* pAllocator);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* EnumerateInstanceExtensionPropertiesFunc)                          (const char* pLayerName, deUint32* pPropertyCount, VkExtensionProperties* pProperties);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* EnumerateDeviceExtensionPropertiesFunc)                            (VkPhysicalDevice physicalDevice, const char* pLayerName, deUint32* pPropertyCount, VkExtensionProperties* pProperties);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* EnumerateInstanceLayerPropertiesFunc)                                      (deUint32* pPropertyCount, VkLayerProperties* pProperties);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* EnumerateDeviceLayerPropertiesFunc)                                        (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkLayerProperties* pProperties);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetDeviceQueueFunc)                                                                        (VkDevice device, deUint32 queueFamilyIndex, deUint32 queueIndex, VkQueue* pQueue);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* QueueSubmitFunc)                                                                           (VkQueue queue, deUint32 submitCount, const VkSubmitInfo* pSubmits, VkFence fence);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* QueueWaitIdleFunc)                                                                         (VkQueue queue);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* DeviceWaitIdleFunc)                                                                        (VkDevice device);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* AllocateMemoryFunc)                                                                        (VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* FreeMemoryFunc)                                                                            (VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* MapMemoryFunc)                                                                                     (VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* UnmapMemoryFunc)                                                                           (VkDevice device, VkDeviceMemory memory);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* FlushMappedMemoryRangesFunc)                                                       (VkDevice device, deUint32 memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* InvalidateMappedMemoryRangesFunc)                                          (VkDevice device, deUint32 memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetDeviceMemoryCommitmentFunc)                                                     (VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* BindBufferMemoryFunc)                                                                      (VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* BindImageMemoryFunc)                                                                       (VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetBufferMemoryRequirementsFunc)                                           (VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetImageMemoryRequirementsFunc)                                            (VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetImageSparseMemoryRequirementsFunc)                                      (VkDevice device, VkImage image, deUint32* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceSparseImageFormatPropertiesFunc)          (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, deUint32* pPropertyCount, VkSparseImageFormatProperties* pProperties);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* QueueBindSparseFunc)                                                                       (VkQueue queue, deUint32 bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateFenceFunc)                                                                           (VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyFenceFunc)                                                                          (VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* ResetFencesFunc)                                                                           (VkDevice device, deUint32 fenceCount, const VkFence* pFences);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetFenceStatusFunc)                                                                        (VkDevice device, VkFence fence);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* WaitForFencesFunc)                                                                         (VkDevice device, deUint32 fenceCount, const VkFence* pFences, VkBool32 waitAll, deUint64 timeout);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateSemaphoreFunc)                                                                       (VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroySemaphoreFunc)                                                                      (VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateEventFunc)                                                                           (VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyEventFunc)                                                                          (VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetEventStatusFunc)                                                                        (VkDevice device, VkEvent event);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* SetEventFunc)                                                                                      (VkDevice device, VkEvent event);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* ResetEventFunc)                                                                            (VkDevice device, VkEvent event);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateQueryPoolFunc)                                                                       (VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyQueryPoolFunc)                                                                      (VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetQueryPoolResultsFunc)                                                           (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount, deUintptr dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateBufferFunc)                                                                          (VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyBufferFunc)                                                                         (VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateBufferViewFunc)                                                                      (VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyBufferViewFunc)                                                                     (VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateImageFunc)                                                                           (VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyImageFunc)                                                                          (VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetImageSubresourceLayoutFunc)                                                     (VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateImageViewFunc)                                                                       (VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyImageViewFunc)                                                                      (VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateShaderModuleFunc)                                                            (VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyShaderModuleFunc)                                                           (VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreatePipelineCacheFunc)                                                           (VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyPipelineCacheFunc)                                                          (VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPipelineCacheDataFunc)                                                          (VkDevice device, VkPipelineCache pipelineCache, deUintptr* pDataSize, void* pData);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* MergePipelineCachesFunc)                                                           (VkDevice device, VkPipelineCache dstCache, deUint32 srcCacheCount, const VkPipelineCache* pSrcCaches);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateGraphicsPipelinesFunc)                                                       (VkDevice device, VkPipelineCache pipelineCache, deUint32 createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateComputePipelinesFunc)                                                        (VkDevice device, VkPipelineCache pipelineCache, deUint32 createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyPipelineFunc)                                                                       (VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreatePipelineLayoutFunc)                                                          (VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyPipelineLayoutFunc)                                                         (VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateSamplerFunc)                                                                         (VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroySamplerFunc)                                                                        (VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateDescriptorSetLayoutFunc)                                                     (VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyDescriptorSetLayoutFunc)                                            (VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateDescriptorPoolFunc)                                                          (VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyDescriptorPoolFunc)                                                         (VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* ResetDescriptorPoolFunc)                                                           (VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* AllocateDescriptorSetsFunc)                                                        (VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* FreeDescriptorSetsFunc)                                                            (VkDevice device, VkDescriptorPool descriptorPool, deUint32 descriptorSetCount, const VkDescriptorSet* pDescriptorSets);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* UpdateDescriptorSetsFunc)                                                          (VkDevice device, deUint32 descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, deUint32 descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateFramebufferFunc)                                                                     (VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyFramebufferFunc)                                                            (VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateRenderPassFunc)                                                                      (VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyRenderPassFunc)                                                                     (VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetRenderAreaGranularityFunc)                                                      (VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateCommandPoolFunc)                                                                     (VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyCommandPoolFunc)                                                            (VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* ResetCommandPoolFunc)                                                                      (VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* AllocateCommandBuffersFunc)                                                        (VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* FreeCommandBuffersFunc)                                                            (VkDevice device, VkCommandPool commandPool, deUint32 commandBufferCount, const VkCommandBuffer* pCommandBuffers);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* BeginCommandBufferFunc)                                                            (VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* EndCommandBufferFunc)                                                                      (VkCommandBuffer commandBuffer);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* ResetCommandBufferFunc)                                                            (VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdBindPipelineFunc)                                                                       (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdSetViewportFunc)                                                                        (VkCommandBuffer commandBuffer, deUint32 firstViewport, deUint32 viewportCount, const VkViewport* pViewports);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdSetScissorFunc)                                                                         (VkCommandBuffer commandBuffer, deUint32 firstScissor, deUint32 scissorCount, const VkRect2D* pScissors);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdSetLineWidthFunc)                                                                       (VkCommandBuffer commandBuffer, float lineWidth);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdSetDepthBiasFunc)                                                                       (VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdSetBlendConstantsFunc)                                                          (VkCommandBuffer commandBuffer, const float blendConstants[4]);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdSetDepthBoundsFunc)                                                                     (VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdSetStencilCompareMaskFunc)                                                      (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 compareMask);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdSetStencilWriteMaskFunc)                                                        (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 writeMask);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdSetStencilReferenceFunc)                                                        (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 reference);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdBindDescriptorSetsFunc)                                                         (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, deUint32 firstSet, deUint32 descriptorSetCount, const VkDescriptorSet* pDescriptorSets, deUint32 dynamicOffsetCount, const deUint32* pDynamicOffsets);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdBindIndexBufferFunc)                                                            (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdBindVertexBuffersFunc)                                                          (VkCommandBuffer commandBuffer, deUint32 firstBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDrawFunc)                                                                                       (VkCommandBuffer commandBuffer, deUint32 vertexCount, deUint32 instanceCount, deUint32 firstVertex, deUint32 firstInstance);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDrawIndexedFunc)                                                                        (VkCommandBuffer commandBuffer, deUint32 indexCount, deUint32 instanceCount, deUint32 firstIndex, deInt32 vertexOffset, deUint32 firstInstance);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDrawIndirectFunc)                                                                       (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 drawCount, deUint32 stride);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDrawIndexedIndirectFunc)                                                        (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 drawCount, deUint32 stride);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDispatchFunc)                                                                           (VkCommandBuffer commandBuffer, deUint32 groupCountX, deUint32 groupCountY, deUint32 groupCountZ);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDispatchIndirectFunc)                                                           (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdCopyBufferFunc)                                                                         (VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, deUint32 regionCount, const VkBufferCopy* pRegions);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdCopyImageFunc)                                                                          (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageCopy* pRegions);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdBlitImageFunc)                                                                          (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageBlit* pRegions, VkFilter filter);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdCopyBufferToImageFunc)                                                          (VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkBufferImageCopy* pRegions);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdCopyImageToBufferFunc)                                                          (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, deUint32 regionCount, const VkBufferImageCopy* pRegions);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdUpdateBufferFunc)                                                                       (VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdFillBufferFunc)                                                                         (VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, deUint32 data);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdClearColorImageFunc)                                                            (VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, deUint32 rangeCount, const VkImageSubresourceRange* pRanges);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdClearDepthStencilImageFunc)                                                     (VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, deUint32 rangeCount, const VkImageSubresourceRange* pRanges);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdClearAttachmentsFunc)                                                           (VkCommandBuffer commandBuffer, deUint32 attachmentCount, const VkClearAttachment* pAttachments, deUint32 rectCount, const VkClearRect* pRects);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdResolveImageFunc)                                                                       (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageResolve* pRegions);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdSetEventFunc)                                                                           (VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdResetEventFunc)                                                                         (VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdWaitEventsFunc)                                                                         (VkCommandBuffer commandBuffer, deUint32 eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, deUint32 memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, deUint32 bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, deUint32 imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdPipelineBarrierFunc)                                                            (VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, deUint32 memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, deUint32 bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, deUint32 imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdBeginQueryFunc)                                                                         (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, VkQueryControlFlags flags);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdEndQueryFunc)                                                                           (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdResetQueryPoolFunc)                                                                     (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdWriteTimestampFunc)                                                                     (VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, deUint32 query);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdCopyQueryPoolResultsFunc)                                                       (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdPushConstantsFunc)                                                                      (VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, deUint32 offset, deUint32 size, const void* pValues);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdBeginRenderPassFunc)                                                            (VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdNextSubpassFunc)                                                                        (VkCommandBuffer commandBuffer, VkSubpassContents contents);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdEndRenderPassFunc)                                                                      (VkCommandBuffer commandBuffer);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdExecuteCommandsFunc)                                                            (VkCommandBuffer commandBuffer, deUint32 commandBufferCount, const VkCommandBuffer* pCommandBuffers);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* EnumerateInstanceVersionFunc)                                                      (deUint32* pApiVersion);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* BindBufferMemory2Func)                                                                     (VkDevice device, deUint32 bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* BindImageMemory2Func)                                                                      (VkDevice device, deUint32 bindInfoCount, const VkBindImageMemoryInfo* pBindInfos);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetDeviceGroupPeerMemoryFeaturesFunc)                                      (VkDevice device, deUint32 heapIndex, deUint32 localDeviceIndex, deUint32 remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdSetDeviceMaskFunc)                                                                      (VkCommandBuffer commandBuffer, deUint32 deviceMask);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDispatchBaseFunc)                                                                       (VkCommandBuffer commandBuffer, deUint32 baseGroupX, deUint32 baseGroupY, deUint32 baseGroupZ, deUint32 groupCountX, deUint32 groupCountY, deUint32 groupCountZ);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* EnumeratePhysicalDeviceGroupsFunc)                                         (VkInstance instance, deUint32* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetImageMemoryRequirements2Func)                                           (VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetBufferMemoryRequirements2Func)                                          (VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetImageSparseMemoryRequirements2Func)                                     (VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, deUint32* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceFeatures2Func)                                            (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceProperties2Func)                                          (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceFormatProperties2Func)                            (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceImageFormatProperties2Func)                       (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceQueueFamilyProperties2Func)                       (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceMemoryProperties2Func)                            (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceSparseImageFormatProperties2Func)         (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, deUint32* pPropertyCount, VkSparseImageFormatProperties2* pProperties);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* TrimCommandPoolFunc)                                                                       (VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetDeviceQueue2Func)                                                                       (VkDevice device, const VkDeviceQueueInfo2* pQueueInfo, VkQueue* pQueue);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateSamplerYcbcrConversionFunc)                                          (VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroySamplerYcbcrConversionFunc)                                         (VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateDescriptorUpdateTemplateFunc)                                        (VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyDescriptorUpdateTemplateFunc)                                       (VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* UpdateDescriptorSetWithTemplateFunc)                                       (VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceExternalBufferPropertiesFunc)                     (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceExternalFencePropertiesFunc)                      (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceExternalSemaphorePropertiesFunc)          (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetDescriptorSetLayoutSupportFunc)                                         (VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroySurfaceKHRFunc)                                                                     (VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceSurfaceSupportKHRFunc)                            (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceSurfaceCapabilitiesKHRFunc)                       (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceSurfaceFormatsKHRFunc)                            (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceSurfacePresentModesKHRFunc)                       (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pPresentModeCount, VkPresentModeKHR* pPresentModes);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateSwapchainKHRFunc)                                                            (VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroySwapchainKHRFunc)                                                           (VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetSwapchainImagesKHRFunc)                                                         (VkDevice device, VkSwapchainKHR swapchain, deUint32* pSwapchainImageCount, VkImage* pSwapchainImages);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* AcquireNextImageKHRFunc)                                                           (VkDevice device, VkSwapchainKHR swapchain, deUint64 timeout, VkSemaphore semaphore, VkFence fence, deUint32* pImageIndex);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* QueuePresentKHRFunc)                                                                       (VkQueue queue, const VkPresentInfoKHR* pPresentInfo);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetDeviceGroupPresentCapabilitiesKHRFunc)                          (VkDevice device, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetDeviceGroupSurfacePresentModesKHRFunc)                          (VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR* pModes);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDevicePresentRectanglesKHRFunc)                         (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pRectCount, VkRect2D* pRects);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* AcquireNextImage2KHRFunc)                                                          (VkDevice device, const VkAcquireNextImageInfoKHR* pAcquireInfo, deUint32* pImageIndex);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceDisplayPropertiesKHRFunc)                         (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPropertiesKHR* pProperties);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceDisplayPlanePropertiesKHRFunc)            (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetDisplayPlaneSupportedDisplaysKHRFunc)                           (VkPhysicalDevice physicalDevice, deUint32 planeIndex, deUint32* pDisplayCount, VkDisplayKHR* pDisplays);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetDisplayModePropertiesKHRFunc)                                           (VkPhysicalDevice physicalDevice, VkDisplayKHR display, deUint32* pPropertyCount, VkDisplayModePropertiesKHR* pProperties);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateDisplayModeKHRFunc)                                                          (VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetDisplayPlaneCapabilitiesKHRFunc)                                        (VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, deUint32 planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateDisplayPlaneSurfaceKHRFunc)                                          (VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateSharedSwapchainsKHRFunc)                                                     (VkDevice device, deUint32 swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateXlibSurfaceKHRFunc)                                                          (VkInstance instance, const VkXlibSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
-typedef VKAPI_ATTR VkBool32                            (VKAPI_CALL* GetPhysicalDeviceXlibPresentationSupportKHRFunc)           (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::XlibDisplayPtr dpy, pt::XlibVisualID visualID);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateXcbSurfaceKHRFunc)                                                           (VkInstance instance, const VkXcbSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
-typedef VKAPI_ATTR VkBool32                            (VKAPI_CALL* GetPhysicalDeviceXcbPresentationSupportKHRFunc)            (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::XcbConnectionPtr connection, pt::XcbVisualid visual_id);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateWaylandSurfaceKHRFunc)                                                       (VkInstance instance, const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
-typedef VKAPI_ATTR VkBool32                            (VKAPI_CALL* GetPhysicalDeviceWaylandPresentationSupportKHRFunc)        (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::WaylandDisplayPtr display);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateMirSurfaceKHRFunc)                                                           (VkInstance instance, const VkMirSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
-typedef VKAPI_ATTR VkBool32                            (VKAPI_CALL* GetPhysicalDeviceMirPresentationSupportKHRFunc)            (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::MirConnectionPtr connection);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateAndroidSurfaceKHRFunc)                                                       (VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateWin32SurfaceKHRFunc)                                                         (VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
-typedef VKAPI_ATTR VkBool32                            (VKAPI_CALL* GetPhysicalDeviceWin32PresentationSupportKHRFunc)          (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceFeatures2KHRFunc)                                         (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceFormatProperties2KHRFunc)                         (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceImageFormatProperties2KHRFunc)            (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceMemoryProperties2KHRFunc)                         (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceProperties2KHRFunc)                                       (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceQueueFamilyProperties2KHRFunc)            (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceSparseImageFormatProperties2KHRFunc)      (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, deUint32* pPropertyCount, VkSparseImageFormatProperties2* pProperties);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDispatchBaseKHRFunc)                                                            (VkCommandBuffer commandBuffer, deUint32 baseGroupX, deUint32 baseGroupY, deUint32 baseGroupZ, deUint32 groupCountX, deUint32 groupCountY, deUint32 groupCountZ);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdSetDeviceMaskKHRFunc)                                                           (VkCommandBuffer commandBuffer, deUint32 deviceMask);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetDeviceGroupPeerMemoryFeaturesKHRFunc)                           (VkDevice device, deUint32 heapIndex, deUint32 localDeviceIndex, deUint32 remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* TrimCommandPoolKHRFunc)                                                            (VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* EnumeratePhysicalDeviceGroupsKHRFunc)                                      (VkInstance instance, deUint32* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceExternalBufferPropertiesKHRFunc)          (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetMemoryWin32HandleKHRFunc)                                                       (VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetMemoryWin32HandlePropertiesKHRFunc)                                     (VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, pt::Win32Handle handle, VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetMemoryFdKHRFunc)                                                                        (VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo, int* pFd);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetMemoryFdPropertiesKHRFunc)                                                      (VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceExternalSemaphorePropertiesKHRFunc)       (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* ImportSemaphoreWin32HandleKHRFunc)                                         (VkDevice device, const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetSemaphoreWin32HandleKHRFunc)                                            (VkDevice device, const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* ImportSemaphoreFdKHRFunc)                                                          (VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetSemaphoreFdKHRFunc)                                                                     (VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdPushDescriptorSetKHRFunc)                                                       (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, deUint32 set, deUint32 descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdPushDescriptorSetWithTemplateKHRFunc)                           (VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate, VkPipelineLayout layout, deUint32 set, const void* pData);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateDescriptorUpdateTemplateKHRFunc)                                     (VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyDescriptorUpdateTemplateKHRFunc)                            (VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* UpdateDescriptorSetWithTemplateKHRFunc)                            (VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateRenderPass2KHRFunc)                                                          (VkDevice device, const VkRenderPassCreateInfo2KHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdBeginRenderPass2KHRFunc)                                                        (VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfoKHR* pSubpassBeginInfo);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdNextSubpass2KHRFunc)                                                            (VkCommandBuffer commandBuffer, const VkSubpassBeginInfoKHR* pSubpassBeginInfo, const VkSubpassEndInfoKHR* pSubpassEndInfo);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdEndRenderPass2KHRFunc)                                                          (VkCommandBuffer commandBuffer, const VkSubpassEndInfoKHR* pSubpassEndInfo);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetSwapchainStatusKHRFunc)                                                         (VkDevice device, VkSwapchainKHR swapchain);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceExternalFencePropertiesKHRFunc)           (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* ImportFenceWin32HandleKHRFunc)                                                     (VkDevice device, const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetFenceWin32HandleKHRFunc)                                                        (VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* ImportFenceFdKHRFunc)                                                                      (VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetFenceFdKHRFunc)                                                                         (VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceSurfaceCapabilities2KHRFunc)                      (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceSurfaceFormats2KHRFunc)                           (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, deUint32* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceDisplayProperties2KHRFunc)                        (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayProperties2KHR* pProperties);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceDisplayPlaneProperties2KHRFunc)           (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPlaneProperties2KHR* pProperties);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetDisplayModeProperties2KHRFunc)                                          (VkPhysicalDevice physicalDevice, VkDisplayKHR display, deUint32* pPropertyCount, VkDisplayModeProperties2KHR* pProperties);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetDisplayPlaneCapabilities2KHRFunc)                                       (VkPhysicalDevice physicalDevice, const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR* pCapabilities);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetBufferMemoryRequirements2KHRFunc)                                       (VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetImageMemoryRequirements2KHRFunc)                                        (VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetImageSparseMemoryRequirements2KHRFunc)                          (VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, deUint32* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateSamplerYcbcrConversionKHRFunc)                                       (VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroySamplerYcbcrConversionKHRFunc)                                      (VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* BindBufferMemory2KHRFunc)                                                          (VkDevice device, deUint32 bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* BindImageMemory2KHRFunc)                                                           (VkDevice device, deUint32 bindInfoCount, const VkBindImageMemoryInfo* pBindInfos);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetDescriptorSetLayoutSupportKHRFunc)                                      (VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateDebugReportCallbackEXTFunc)                                          (VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyDebugReportCallbackEXTFunc)                                         (VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* DebugReportMessageEXTFunc)                                                         (VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, deUint64 object, deUintptr location, deInt32 messageCode, const char* pLayerPrefix, const char* pMessage);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* DebugMarkerSetObjectTagEXTFunc)                                            (VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* DebugMarkerSetObjectNameEXTFunc)                                           (VkDevice device, const VkDebugMarkerObjectNameInfoEXT* pNameInfo);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDebugMarkerBeginEXTFunc)                                                        (VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDebugMarkerEndEXTFunc)                                                          (VkCommandBuffer commandBuffer);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDebugMarkerInsertEXTFunc)                                                       (VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDrawIndirectCountAMDFunc)                                                       (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDrawIndexedIndirectCountAMDFunc)                                        (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDrawIndirectCountKHRFunc)                                                       (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDrawIndexedIndirectCountKHRFunc)                                        (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceExternalImageFormatPropertiesNVFunc)      (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetMemoryWin32HandleNVFunc)                                                        (VkDevice device, VkDeviceMemory memory, VkExternalMemoryHandleTypeFlagsNV handleType, pt::Win32Handle* pHandle);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateViSurfaceNNFunc)                                                                     (VkInstance instance, const VkViSurfaceCreateInfoNN* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdBeginConditionalRenderingEXTFunc)                                       (VkCommandBuffer commandBuffer, const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdEndConditionalRenderingEXTFunc)                                         (VkCommandBuffer commandBuffer);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdProcessCommandsNVXFunc)                                                         (VkCommandBuffer commandBuffer, const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdReserveSpaceForCommandsNVXFunc)                                         (VkCommandBuffer commandBuffer, const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateIndirectCommandsLayoutNVXFunc)                                       (VkDevice device, const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyIndirectCommandsLayoutNVXFunc)                                      (VkDevice device, VkIndirectCommandsLayoutNVX indirectCommandsLayout, const VkAllocationCallbacks* pAllocator);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateObjectTableNVXFunc)                                                          (VkDevice device, const VkObjectTableCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkObjectTableNVX* pObjectTable);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyObjectTableNVXFunc)                                                         (VkDevice device, VkObjectTableNVX objectTable, const VkAllocationCallbacks* pAllocator);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* RegisterObjectsNVXFunc)                                                            (VkDevice device, VkObjectTableNVX objectTable, deUint32 objectCount, const VkObjectTableEntryNVX* const* ppObjectTableEntries, const deUint32* pObjectIndices);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* UnregisterObjectsNVXFunc)                                                          (VkDevice device, VkObjectTableNVX objectTable, deUint32 objectCount, const VkObjectEntryTypeNVX* pObjectEntryTypes, const deUint32* pObjectIndices);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceGeneratedCommandsPropertiesNVXFunc)       (VkPhysicalDevice physicalDevice, VkDeviceGeneratedCommandsFeaturesNVX* pFeatures, VkDeviceGeneratedCommandsLimitsNVX* pLimits);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdSetViewportWScalingNVFunc)                                                      (VkCommandBuffer commandBuffer, deUint32 firstViewport, deUint32 viewportCount, const VkViewportWScalingNV* pViewportWScalings);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* ReleaseDisplayEXTFunc)                                                                     (VkPhysicalDevice physicalDevice, VkDisplayKHR display);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* AcquireXlibDisplayEXTFunc)                                                         (VkPhysicalDevice physicalDevice, pt::XlibDisplayPtr dpy, VkDisplayKHR display);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetRandROutputDisplayEXTFunc)                                                      (VkPhysicalDevice physicalDevice, pt::XlibDisplayPtr dpy, pt::RROutput rrOutput, VkDisplayKHR* pDisplay);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceSurfaceCapabilities2EXTFunc)                      (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* DisplayPowerControlEXTFunc)                                                        (VkDevice device, VkDisplayKHR display, const VkDisplayPowerInfoEXT* pDisplayPowerInfo);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* RegisterDeviceEventEXTFunc)                                                        (VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* RegisterDisplayEventEXTFunc)                                                       (VkDevice device, VkDisplayKHR display, const VkDisplayEventInfoEXT* pDisplayEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetSwapchainCounterEXTFunc)                                                        (VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, deUint64* pCounterValue);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetRefreshCycleDurationGOOGLEFunc)                                         (VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPastPresentationTimingGOOGLEFunc)                                       (VkDevice device, VkSwapchainKHR swapchain, deUint32* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdSetDiscardRectangleEXTFunc)                                                     (VkCommandBuffer commandBuffer, deUint32 firstDiscardRectangle, deUint32 discardRectangleCount, const VkRect2D* pDiscardRectangles);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* SetHdrMetadataEXTFunc)                                                                     (VkDevice device, deUint32 swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateIOSSurfaceMVKFunc)                                                           (VkInstance instance, const VkIOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateMacOSSurfaceMVKFunc)                                                         (VkInstance instance, const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdSetSampleLocationsEXTFunc)                                                      (VkCommandBuffer commandBuffer, const VkSampleLocationsInfoEXT* pSampleLocationsInfo);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceMultisamplePropertiesEXTFunc)                     (VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateValidationCacheEXTFunc)                                                      (VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkValidationCacheEXT* pValidationCache);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyValidationCacheEXTFunc)                                                     (VkDevice device, VkValidationCacheEXT validationCache, const VkAllocationCallbacks* pAllocator);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* MergeValidationCachesEXTFunc)                                                      (VkDevice device, VkValidationCacheEXT dstCache, deUint32 srcCacheCount, const VkValidationCacheEXT* pSrcCaches);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetValidationCacheDataEXTFunc)                                                     (VkDevice device, VkValidationCacheEXT validationCache, deUintptr* pDataSize, void* pData);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetMemoryHostPointerPropertiesEXTFunc)                                     (VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetAndroidHardwareBufferPropertiesANDROIDFunc)                     (VkDevice device, const struct pt::AndroidHardwareBufferPtr buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetMemoryAndroidHardwareBufferANDROIDFunc)                         (VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct pt::AndroidHardwareBufferPtr* pBuffer);
-typedef VKAPI_ATTR VkDeviceAddress             (VKAPI_CALL* GetBufferDeviceAddressEXTFunc)                                                     (VkDevice device, const VkBufferDeviceAddressInfoEXT* pInfo);
-typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceCooperativeMatrixPropertiesNVFunc)        (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkCooperativeMatrixPropertiesNV* pProperties);
-typedef VKAPI_ATTR void                                        (VKAPI_CALL* ResetQueryPoolEXTFunc)                                                                     (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateInstanceFunc)                                                                                                (const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyInstanceFunc)                                                                                               (VkInstance instance, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* EnumeratePhysicalDevicesFunc)                                                                              (VkInstance instance, deUint32* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceFeaturesFunc)                                                                             (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceFormatPropertiesFunc)                                                             (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceImageFormatPropertiesFunc)                                                (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDevicePropertiesFunc)                                                                   (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceQueueFamilyPropertiesFunc)                                                (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceMemoryPropertiesFunc)                                                             (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties);
+typedef VKAPI_ATTR PFN_vkVoidFunction  (VKAPI_CALL* GetInstanceProcAddrFunc)                                                                                   (VkInstance instance, const char* pName);
+typedef VKAPI_ATTR PFN_vkVoidFunction  (VKAPI_CALL* GetDeviceProcAddrFunc)                                                                                             (VkDevice device, const char* pName);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateDeviceFunc)                                                                                                  (VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyDeviceFunc)                                                                                                 (VkDevice device, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* EnumerateInstanceExtensionPropertiesFunc)                                                  (const char* pLayerName, deUint32* pPropertyCount, VkExtensionProperties* pProperties);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* EnumerateDeviceExtensionPropertiesFunc)                                                    (VkPhysicalDevice physicalDevice, const char* pLayerName, deUint32* pPropertyCount, VkExtensionProperties* pProperties);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* EnumerateInstanceLayerPropertiesFunc)                                                              (deUint32* pPropertyCount, VkLayerProperties* pProperties);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* EnumerateDeviceLayerPropertiesFunc)                                                                (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkLayerProperties* pProperties);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetDeviceQueueFunc)                                                                                                (VkDevice device, deUint32 queueFamilyIndex, deUint32 queueIndex, VkQueue* pQueue);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* QueueSubmitFunc)                                                                                                   (VkQueue queue, deUint32 submitCount, const VkSubmitInfo* pSubmits, VkFence fence);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* QueueWaitIdleFunc)                                                                                                 (VkQueue queue);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* DeviceWaitIdleFunc)                                                                                                (VkDevice device);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* AllocateMemoryFunc)                                                                                                (VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* FreeMemoryFunc)                                                                                                    (VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* MapMemoryFunc)                                                                                                             (VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* UnmapMemoryFunc)                                                                                                   (VkDevice device, VkDeviceMemory memory);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* FlushMappedMemoryRangesFunc)                                                                               (VkDevice device, deUint32 memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* InvalidateMappedMemoryRangesFunc)                                                                  (VkDevice device, deUint32 memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetDeviceMemoryCommitmentFunc)                                                                             (VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* BindBufferMemoryFunc)                                                                                              (VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* BindImageMemoryFunc)                                                                                               (VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetBufferMemoryRequirementsFunc)                                                                   (VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetImageMemoryRequirementsFunc)                                                                    (VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetImageSparseMemoryRequirementsFunc)                                                              (VkDevice device, VkImage image, deUint32* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceSparseImageFormatPropertiesFunc)                                  (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, deUint32* pPropertyCount, VkSparseImageFormatProperties* pProperties);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* QueueBindSparseFunc)                                                                                               (VkQueue queue, deUint32 bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateFenceFunc)                                                                                                   (VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyFenceFunc)                                                                                                  (VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* ResetFencesFunc)                                                                                                   (VkDevice device, deUint32 fenceCount, const VkFence* pFences);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetFenceStatusFunc)                                                                                                (VkDevice device, VkFence fence);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* WaitForFencesFunc)                                                                                                 (VkDevice device, deUint32 fenceCount, const VkFence* pFences, VkBool32 waitAll, deUint64 timeout);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateSemaphoreFunc)                                                                                               (VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroySemaphoreFunc)                                                                                              (VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateEventFunc)                                                                                                   (VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyEventFunc)                                                                                                  (VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetEventStatusFunc)                                                                                                (VkDevice device, VkEvent event);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* SetEventFunc)                                                                                                              (VkDevice device, VkEvent event);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* ResetEventFunc)                                                                                                    (VkDevice device, VkEvent event);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateQueryPoolFunc)                                                                                               (VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyQueryPoolFunc)                                                                                              (VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetQueryPoolResultsFunc)                                                                                   (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount, deUintptr dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateBufferFunc)                                                                                                  (VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyBufferFunc)                                                                                                 (VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateBufferViewFunc)                                                                                              (VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyBufferViewFunc)                                                                                             (VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateImageFunc)                                                                                                   (VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyImageFunc)                                                                                                  (VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetImageSubresourceLayoutFunc)                                                                             (VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateImageViewFunc)                                                                                               (VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyImageViewFunc)                                                                                              (VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateShaderModuleFunc)                                                                                    (VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyShaderModuleFunc)                                                                                   (VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreatePipelineCacheFunc)                                                                                   (VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyPipelineCacheFunc)                                                                                  (VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPipelineCacheDataFunc)                                                                                  (VkDevice device, VkPipelineCache pipelineCache, deUintptr* pDataSize, void* pData);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* MergePipelineCachesFunc)                                                                                   (VkDevice device, VkPipelineCache dstCache, deUint32 srcCacheCount, const VkPipelineCache* pSrcCaches);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateGraphicsPipelinesFunc)                                                                               (VkDevice device, VkPipelineCache pipelineCache, deUint32 createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateComputePipelinesFunc)                                                                                (VkDevice device, VkPipelineCache pipelineCache, deUint32 createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyPipelineFunc)                                                                                               (VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreatePipelineLayoutFunc)                                                                                  (VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyPipelineLayoutFunc)                                                                                 (VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateSamplerFunc)                                                                                                 (VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroySamplerFunc)                                                                                                (VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateDescriptorSetLayoutFunc)                                                                             (VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyDescriptorSetLayoutFunc)                                                                    (VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateDescriptorPoolFunc)                                                                                  (VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyDescriptorPoolFunc)                                                                                 (VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* ResetDescriptorPoolFunc)                                                                                   (VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* AllocateDescriptorSetsFunc)                                                                                (VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* FreeDescriptorSetsFunc)                                                                                    (VkDevice device, VkDescriptorPool descriptorPool, deUint32 descriptorSetCount, const VkDescriptorSet* pDescriptorSets);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* UpdateDescriptorSetsFunc)                                                                                  (VkDevice device, deUint32 descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, deUint32 descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateFramebufferFunc)                                                                                             (VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyFramebufferFunc)                                                                                    (VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateRenderPassFunc)                                                                                              (VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyRenderPassFunc)                                                                                             (VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetRenderAreaGranularityFunc)                                                                              (VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateCommandPoolFunc)                                                                                             (VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyCommandPoolFunc)                                                                                    (VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* ResetCommandPoolFunc)                                                                                              (VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* AllocateCommandBuffersFunc)                                                                                (VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* FreeCommandBuffersFunc)                                                                                    (VkDevice device, VkCommandPool commandPool, deUint32 commandBufferCount, const VkCommandBuffer* pCommandBuffers);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* BeginCommandBufferFunc)                                                                                    (VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* EndCommandBufferFunc)                                                                                              (VkCommandBuffer commandBuffer);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* ResetCommandBufferFunc)                                                                                    (VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdBindPipelineFunc)                                                                                               (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdSetViewportFunc)                                                                                                (VkCommandBuffer commandBuffer, deUint32 firstViewport, deUint32 viewportCount, const VkViewport* pViewports);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdSetScissorFunc)                                                                                                 (VkCommandBuffer commandBuffer, deUint32 firstScissor, deUint32 scissorCount, const VkRect2D* pScissors);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdSetLineWidthFunc)                                                                                               (VkCommandBuffer commandBuffer, float lineWidth);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdSetDepthBiasFunc)                                                                                               (VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdSetBlendConstantsFunc)                                                                                  (VkCommandBuffer commandBuffer, const float blendConstants[4]);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdSetDepthBoundsFunc)                                                                                             (VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdSetStencilCompareMaskFunc)                                                                              (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 compareMask);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdSetStencilWriteMaskFunc)                                                                                (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 writeMask);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdSetStencilReferenceFunc)                                                                                (VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, deUint32 reference);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdBindDescriptorSetsFunc)                                                                                 (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, deUint32 firstSet, deUint32 descriptorSetCount, const VkDescriptorSet* pDescriptorSets, deUint32 dynamicOffsetCount, const deUint32* pDynamicOffsets);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdBindIndexBufferFunc)                                                                                    (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdBindVertexBuffersFunc)                                                                                  (VkCommandBuffer commandBuffer, deUint32 firstBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDrawFunc)                                                                                                               (VkCommandBuffer commandBuffer, deUint32 vertexCount, deUint32 instanceCount, deUint32 firstVertex, deUint32 firstInstance);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDrawIndexedFunc)                                                                                                (VkCommandBuffer commandBuffer, deUint32 indexCount, deUint32 instanceCount, deUint32 firstIndex, deInt32 vertexOffset, deUint32 firstInstance);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDrawIndirectFunc)                                                                                               (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 drawCount, deUint32 stride);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDrawIndexedIndirectFunc)                                                                                (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 drawCount, deUint32 stride);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDispatchFunc)                                                                                                   (VkCommandBuffer commandBuffer, deUint32 groupCountX, deUint32 groupCountY, deUint32 groupCountZ);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDispatchIndirectFunc)                                                                                   (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdCopyBufferFunc)                                                                                                 (VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, deUint32 regionCount, const VkBufferCopy* pRegions);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdCopyImageFunc)                                                                                                  (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageCopy* pRegions);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdBlitImageFunc)                                                                                                  (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageBlit* pRegions, VkFilter filter);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdCopyBufferToImageFunc)                                                                                  (VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkBufferImageCopy* pRegions);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdCopyImageToBufferFunc)                                                                                  (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, deUint32 regionCount, const VkBufferImageCopy* pRegions);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdUpdateBufferFunc)                                                                                               (VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdFillBufferFunc)                                                                                                 (VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, deUint32 data);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdClearColorImageFunc)                                                                                    (VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, deUint32 rangeCount, const VkImageSubresourceRange* pRanges);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdClearDepthStencilImageFunc)                                                                             (VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, deUint32 rangeCount, const VkImageSubresourceRange* pRanges);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdClearAttachmentsFunc)                                                                                   (VkCommandBuffer commandBuffer, deUint32 attachmentCount, const VkClearAttachment* pAttachments, deUint32 rectCount, const VkClearRect* pRects);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdResolveImageFunc)                                                                                               (VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, deUint32 regionCount, const VkImageResolve* pRegions);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdSetEventFunc)                                                                                                   (VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdResetEventFunc)                                                                                                 (VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdWaitEventsFunc)                                                                                                 (VkCommandBuffer commandBuffer, deUint32 eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, deUint32 memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, deUint32 bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, deUint32 imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdPipelineBarrierFunc)                                                                                    (VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, deUint32 memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, deUint32 bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, deUint32 imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdBeginQueryFunc)                                                                                                 (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query, VkQueryControlFlags flags);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdEndQueryFunc)                                                                                                   (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 query);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdResetQueryPoolFunc)                                                                                             (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdWriteTimestampFunc)                                                                                             (VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, deUint32 query);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdCopyQueryPoolResultsFunc)                                                                               (VkCommandBuffer commandBuffer, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdPushConstantsFunc)                                                                                              (VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, deUint32 offset, deUint32 size, const void* pValues);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdBeginRenderPassFunc)                                                                                    (VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdNextSubpassFunc)                                                                                                (VkCommandBuffer commandBuffer, VkSubpassContents contents);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdEndRenderPassFunc)                                                                                              (VkCommandBuffer commandBuffer);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdExecuteCommandsFunc)                                                                                    (VkCommandBuffer commandBuffer, deUint32 commandBufferCount, const VkCommandBuffer* pCommandBuffers);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* EnumerateInstanceVersionFunc)                                                                              (deUint32* pApiVersion);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* BindBufferMemory2Func)                                                                                             (VkDevice device, deUint32 bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* BindImageMemory2Func)                                                                                              (VkDevice device, deUint32 bindInfoCount, const VkBindImageMemoryInfo* pBindInfos);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetDeviceGroupPeerMemoryFeaturesFunc)                                                              (VkDevice device, deUint32 heapIndex, deUint32 localDeviceIndex, deUint32 remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdSetDeviceMaskFunc)                                                                                              (VkCommandBuffer commandBuffer, deUint32 deviceMask);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDispatchBaseFunc)                                                                                               (VkCommandBuffer commandBuffer, deUint32 baseGroupX, deUint32 baseGroupY, deUint32 baseGroupZ, deUint32 groupCountX, deUint32 groupCountY, deUint32 groupCountZ);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* EnumeratePhysicalDeviceGroupsFunc)                                                                 (VkInstance instance, deUint32* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetImageMemoryRequirements2Func)                                                                   (VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetBufferMemoryRequirements2Func)                                                                  (VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetImageSparseMemoryRequirements2Func)                                                             (VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, deUint32* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceFeatures2Func)                                                                    (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceProperties2Func)                                                                  (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceFormatProperties2Func)                                                    (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceImageFormatProperties2Func)                                               (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceQueueFamilyProperties2Func)                                               (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceMemoryProperties2Func)                                                    (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceSparseImageFormatProperties2Func)                                 (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, deUint32* pPropertyCount, VkSparseImageFormatProperties2* pProperties);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* TrimCommandPoolFunc)                                                                                               (VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetDeviceQueue2Func)                                                                                               (VkDevice device, const VkDeviceQueueInfo2* pQueueInfo, VkQueue* pQueue);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateSamplerYcbcrConversionFunc)                                                                  (VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroySamplerYcbcrConversionFunc)                                                                 (VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateDescriptorUpdateTemplateFunc)                                                                (VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyDescriptorUpdateTemplateFunc)                                                               (VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* UpdateDescriptorSetWithTemplateFunc)                                                               (VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceExternalBufferPropertiesFunc)                                             (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceExternalFencePropertiesFunc)                                              (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceExternalSemaphorePropertiesFunc)                                  (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetDescriptorSetLayoutSupportFunc)                                                                 (VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroySurfaceKHRFunc)                                                                                             (VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceSurfaceSupportKHRFunc)                                                    (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceSurfaceCapabilitiesKHRFunc)                                               (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceSurfaceFormatsKHRFunc)                                                    (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceSurfacePresentModesKHRFunc)                                               (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pPresentModeCount, VkPresentModeKHR* pPresentModes);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateSwapchainKHRFunc)                                                                                    (VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroySwapchainKHRFunc)                                                                                   (VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetSwapchainImagesKHRFunc)                                                                                 (VkDevice device, VkSwapchainKHR swapchain, deUint32* pSwapchainImageCount, VkImage* pSwapchainImages);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* AcquireNextImageKHRFunc)                                                                                   (VkDevice device, VkSwapchainKHR swapchain, deUint64 timeout, VkSemaphore semaphore, VkFence fence, deUint32* pImageIndex);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* QueuePresentKHRFunc)                                                                                               (VkQueue queue, const VkPresentInfoKHR* pPresentInfo);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetDeviceGroupPresentCapabilitiesKHRFunc)                                                  (VkDevice device, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetDeviceGroupSurfacePresentModesKHRFunc)                                                  (VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR* pModes);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDevicePresentRectanglesKHRFunc)                                                 (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pRectCount, VkRect2D* pRects);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* AcquireNextImage2KHRFunc)                                                                                  (VkDevice device, const VkAcquireNextImageInfoKHR* pAcquireInfo, deUint32* pImageIndex);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceDisplayPropertiesKHRFunc)                                                 (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPropertiesKHR* pProperties);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceDisplayPlanePropertiesKHRFunc)                                    (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetDisplayPlaneSupportedDisplaysKHRFunc)                                                   (VkPhysicalDevice physicalDevice, deUint32 planeIndex, deUint32* pDisplayCount, VkDisplayKHR* pDisplays);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetDisplayModePropertiesKHRFunc)                                                                   (VkPhysicalDevice physicalDevice, VkDisplayKHR display, deUint32* pPropertyCount, VkDisplayModePropertiesKHR* pProperties);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateDisplayModeKHRFunc)                                                                                  (VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetDisplayPlaneCapabilitiesKHRFunc)                                                                (VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, deUint32 planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateDisplayPlaneSurfaceKHRFunc)                                                                  (VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateSharedSwapchainsKHRFunc)                                                                             (VkDevice device, deUint32 swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateXlibSurfaceKHRFunc)                                                                                  (VkInstance instance, const VkXlibSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
+typedef VKAPI_ATTR VkBool32                            (VKAPI_CALL* GetPhysicalDeviceXlibPresentationSupportKHRFunc)                                   (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::XlibDisplayPtr dpy, pt::XlibVisualID visualID);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateXcbSurfaceKHRFunc)                                                                                   (VkInstance instance, const VkXcbSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
+typedef VKAPI_ATTR VkBool32                            (VKAPI_CALL* GetPhysicalDeviceXcbPresentationSupportKHRFunc)                                    (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::XcbConnectionPtr connection, pt::XcbVisualid visual_id);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateWaylandSurfaceKHRFunc)                                                                               (VkInstance instance, const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
+typedef VKAPI_ATTR VkBool32                            (VKAPI_CALL* GetPhysicalDeviceWaylandPresentationSupportKHRFunc)                                (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::WaylandDisplayPtr display);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateMirSurfaceKHRFunc)                                                                                   (VkInstance instance, const VkMirSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
+typedef VKAPI_ATTR VkBool32                            (VKAPI_CALL* GetPhysicalDeviceMirPresentationSupportKHRFunc)                                    (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::MirConnectionPtr connection);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateAndroidSurfaceKHRFunc)                                                                               (VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateWin32SurfaceKHRFunc)                                                                                 (VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
+typedef VKAPI_ATTR VkBool32                            (VKAPI_CALL* GetPhysicalDeviceWin32PresentationSupportKHRFunc)                                  (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceFeatures2KHRFunc)                                                                 (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceFormatProperties2KHRFunc)                                                 (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceImageFormatProperties2KHRFunc)                                    (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceMemoryProperties2KHRFunc)                                                 (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceProperties2KHRFunc)                                                               (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceQueueFamilyProperties2KHRFunc)                                    (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceSparseImageFormatProperties2KHRFunc)                              (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, deUint32* pPropertyCount, VkSparseImageFormatProperties2* pProperties);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDispatchBaseKHRFunc)                                                                                    (VkCommandBuffer commandBuffer, deUint32 baseGroupX, deUint32 baseGroupY, deUint32 baseGroupZ, deUint32 groupCountX, deUint32 groupCountY, deUint32 groupCountZ);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdSetDeviceMaskKHRFunc)                                                                                   (VkCommandBuffer commandBuffer, deUint32 deviceMask);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetDeviceGroupPeerMemoryFeaturesKHRFunc)                                                   (VkDevice device, deUint32 heapIndex, deUint32 localDeviceIndex, deUint32 remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* TrimCommandPoolKHRFunc)                                                                                    (VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* EnumeratePhysicalDeviceGroupsKHRFunc)                                                              (VkInstance instance, deUint32* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceExternalBufferPropertiesKHRFunc)                                  (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetMemoryWin32HandleKHRFunc)                                                                               (VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetMemoryWin32HandlePropertiesKHRFunc)                                                             (VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, pt::Win32Handle handle, VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetMemoryFdKHRFunc)                                                                                                (VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo, int* pFd);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetMemoryFdPropertiesKHRFunc)                                                                              (VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceExternalSemaphorePropertiesKHRFunc)                               (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* ImportSemaphoreWin32HandleKHRFunc)                                                                 (VkDevice device, const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetSemaphoreWin32HandleKHRFunc)                                                                    (VkDevice device, const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* ImportSemaphoreFdKHRFunc)                                                                                  (VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetSemaphoreFdKHRFunc)                                                                                             (VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdPushDescriptorSetKHRFunc)                                                                               (VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, deUint32 set, deUint32 descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdPushDescriptorSetWithTemplateKHRFunc)                                                   (VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate, VkPipelineLayout layout, deUint32 set, const void* pData);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateDescriptorUpdateTemplateKHRFunc)                                                             (VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyDescriptorUpdateTemplateKHRFunc)                                                    (VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* UpdateDescriptorSetWithTemplateKHRFunc)                                                    (VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateRenderPass2KHRFunc)                                                                                  (VkDevice device, const VkRenderPassCreateInfo2KHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdBeginRenderPass2KHRFunc)                                                                                (VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfoKHR* pSubpassBeginInfo);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdNextSubpass2KHRFunc)                                                                                    (VkCommandBuffer commandBuffer, const VkSubpassBeginInfoKHR* pSubpassBeginInfo, const VkSubpassEndInfoKHR* pSubpassEndInfo);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdEndRenderPass2KHRFunc)                                                                                  (VkCommandBuffer commandBuffer, const VkSubpassEndInfoKHR* pSubpassEndInfo);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetSwapchainStatusKHRFunc)                                                                                 (VkDevice device, VkSwapchainKHR swapchain);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceExternalFencePropertiesKHRFunc)                                   (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* ImportFenceWin32HandleKHRFunc)                                                                             (VkDevice device, const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetFenceWin32HandleKHRFunc)                                                                                (VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* ImportFenceFdKHRFunc)                                                                                              (VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetFenceFdKHRFunc)                                                                                                 (VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHRFunc) (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, deUint32* pCounterCount, VkPerformanceCounterKHR* pCounters, VkPerformanceCounterDescriptionKHR* pCounterDescriptions);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHRFunc)                 (VkPhysicalDevice physicalDevice, const VkPerformanceQueryCreateInfoKHR* pPerformanceQueryCreateInfo, deUint32* pNumPasses);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* AcquireProfilingLockKHRFunc)                                                                               (VkDevice device, const VkAcquireProfilingLockInfoKHR* pInfo);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* ReleaseProfilingLockKHRFunc)                                                                               (VkDevice device);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceSurfaceCapabilities2KHRFunc)                                              (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceSurfaceFormats2KHRFunc)                                                   (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, deUint32* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceDisplayProperties2KHRFunc)                                                (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayProperties2KHR* pProperties);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceDisplayPlaneProperties2KHRFunc)                                   (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPlaneProperties2KHR* pProperties);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetDisplayModeProperties2KHRFunc)                                                                  (VkPhysicalDevice physicalDevice, VkDisplayKHR display, deUint32* pPropertyCount, VkDisplayModeProperties2KHR* pProperties);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetDisplayPlaneCapabilities2KHRFunc)                                                               (VkPhysicalDevice physicalDevice, const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR* pCapabilities);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetBufferMemoryRequirements2KHRFunc)                                                               (VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetImageMemoryRequirements2KHRFunc)                                                                (VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetImageSparseMemoryRequirements2KHRFunc)                                                  (VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, deUint32* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateSamplerYcbcrConversionKHRFunc)                                                               (VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroySamplerYcbcrConversionKHRFunc)                                                              (VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* BindBufferMemory2KHRFunc)                                                                                  (VkDevice device, deUint32 bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* BindImageMemory2KHRFunc)                                                                                   (VkDevice device, deUint32 bindInfoCount, const VkBindImageMemoryInfo* pBindInfos);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetDescriptorSetLayoutSupportKHRFunc)                                                              (VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateDebugReportCallbackEXTFunc)                                                                  (VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyDebugReportCallbackEXTFunc)                                                                 (VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DebugReportMessageEXTFunc)                                                                                 (VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, deUint64 object, deUintptr location, deInt32 messageCode, const char* pLayerPrefix, const char* pMessage);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* DebugMarkerSetObjectTagEXTFunc)                                                                    (VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* DebugMarkerSetObjectNameEXTFunc)                                                                   (VkDevice device, const VkDebugMarkerObjectNameInfoEXT* pNameInfo);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDebugMarkerBeginEXTFunc)                                                                                (VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDebugMarkerEndEXTFunc)                                                                                  (VkCommandBuffer commandBuffer);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDebugMarkerInsertEXTFunc)                                                                               (VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDrawIndirectCountAMDFunc)                                                                               (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDrawIndexedIndirectCountAMDFunc)                                                                (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDrawIndirectCountKHRFunc)                                                                               (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdDrawIndexedIndirectCountKHRFunc)                                                                (VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, deUint32 maxDrawCount, deUint32 stride);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceExternalImageFormatPropertiesNVFunc)                              (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetMemoryWin32HandleNVFunc)                                                                                (VkDevice device, VkDeviceMemory memory, VkExternalMemoryHandleTypeFlagsNV handleType, pt::Win32Handle* pHandle);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateViSurfaceNNFunc)                                                                                             (VkInstance instance, const VkViSurfaceCreateInfoNN* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdBeginConditionalRenderingEXTFunc)                                                               (VkCommandBuffer commandBuffer, const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdEndConditionalRenderingEXTFunc)                                                                 (VkCommandBuffer commandBuffer);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdProcessCommandsNVXFunc)                                                                                 (VkCommandBuffer commandBuffer, const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdReserveSpaceForCommandsNVXFunc)                                                                 (VkCommandBuffer commandBuffer, const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateIndirectCommandsLayoutNVXFunc)                                                               (VkDevice device, const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyIndirectCommandsLayoutNVXFunc)                                                              (VkDevice device, VkIndirectCommandsLayoutNVX indirectCommandsLayout, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateObjectTableNVXFunc)                                                                                  (VkDevice device, const VkObjectTableCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkObjectTableNVX* pObjectTable);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyObjectTableNVXFunc)                                                                                 (VkDevice device, VkObjectTableNVX objectTable, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* RegisterObjectsNVXFunc)                                                                                    (VkDevice device, VkObjectTableNVX objectTable, deUint32 objectCount, const VkObjectTableEntryNVX* const* ppObjectTableEntries, const deUint32* pObjectIndices);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* UnregisterObjectsNVXFunc)                                                                                  (VkDevice device, VkObjectTableNVX objectTable, deUint32 objectCount, const VkObjectEntryTypeNVX* pObjectEntryTypes, const deUint32* pObjectIndices);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceGeneratedCommandsPropertiesNVXFunc)                               (VkPhysicalDevice physicalDevice, VkDeviceGeneratedCommandsFeaturesNVX* pFeatures, VkDeviceGeneratedCommandsLimitsNVX* pLimits);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdSetViewportWScalingNVFunc)                                                                              (VkCommandBuffer commandBuffer, deUint32 firstViewport, deUint32 viewportCount, const VkViewportWScalingNV* pViewportWScalings);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* ReleaseDisplayEXTFunc)                                                                                             (VkPhysicalDevice physicalDevice, VkDisplayKHR display);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* AcquireXlibDisplayEXTFunc)                                                                                 (VkPhysicalDevice physicalDevice, pt::XlibDisplayPtr dpy, VkDisplayKHR display);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetRandROutputDisplayEXTFunc)                                                                              (VkPhysicalDevice physicalDevice, pt::XlibDisplayPtr dpy, pt::RROutput rrOutput, VkDisplayKHR* pDisplay);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceSurfaceCapabilities2EXTFunc)                                              (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* DisplayPowerControlEXTFunc)                                                                                (VkDevice device, VkDisplayKHR display, const VkDisplayPowerInfoEXT* pDisplayPowerInfo);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* RegisterDeviceEventEXTFunc)                                                                                (VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* RegisterDisplayEventEXTFunc)                                                                               (VkDevice device, VkDisplayKHR display, const VkDisplayEventInfoEXT* pDisplayEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetSwapchainCounterEXTFunc)                                                                                (VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, deUint64* pCounterValue);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetRefreshCycleDurationGOOGLEFunc)                                                                 (VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPastPresentationTimingGOOGLEFunc)                                                               (VkDevice device, VkSwapchainKHR swapchain, deUint32* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdSetDiscardRectangleEXTFunc)                                                                             (VkCommandBuffer commandBuffer, deUint32 firstDiscardRectangle, deUint32 discardRectangleCount, const VkRect2D* pDiscardRectangles);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* SetHdrMetadataEXTFunc)                                                                                             (VkDevice device, deUint32 swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateIOSSurfaceMVKFunc)                                                                                   (VkInstance instance, const VkIOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateMacOSSurfaceMVKFunc)                                                                                 (VkInstance instance, const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* CmdSetSampleLocationsEXTFunc)                                                                              (VkCommandBuffer commandBuffer, const VkSampleLocationsInfoEXT* pSampleLocationsInfo);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* GetPhysicalDeviceMultisamplePropertiesEXTFunc)                                             (VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* CreateValidationCacheEXTFunc)                                                                              (VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkValidationCacheEXT* pValidationCache);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* DestroyValidationCacheEXTFunc)                                                                             (VkDevice device, VkValidationCacheEXT validationCache, const VkAllocationCallbacks* pAllocator);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* MergeValidationCachesEXTFunc)                                                                              (VkDevice device, VkValidationCacheEXT dstCache, deUint32 srcCacheCount, const VkValidationCacheEXT* pSrcCaches);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetValidationCacheDataEXTFunc)                                                                             (VkDevice device, VkValidationCacheEXT validationCache, deUintptr* pDataSize, void* pData);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetMemoryHostPointerPropertiesEXTFunc)                                                             (VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetAndroidHardwareBufferPropertiesANDROIDFunc)                                             (VkDevice device, const struct pt::AndroidHardwareBufferPtr buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetMemoryAndroidHardwareBufferANDROIDFunc)                                                 (VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct pt::AndroidHardwareBufferPtr* pBuffer);
+typedef VKAPI_ATTR VkDeviceAddress             (VKAPI_CALL* GetBufferDeviceAddressEXTFunc)                                                                             (VkDevice device, const VkBufferDeviceAddressInfoEXT* pInfo);
+typedef VKAPI_ATTR VkResult                            (VKAPI_CALL* GetPhysicalDeviceCooperativeMatrixPropertiesNVFunc)                                (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkCooperativeMatrixPropertiesNV* pProperties);
+typedef VKAPI_ATTR void                                        (VKAPI_CALL* ResetQueryPoolEXTFunc)                                                                                             (VkDevice device, VkQueryPool queryPool, deUint32 firstQuery, deUint32 queryCount);
index 01cec7b..169c744 100644 (file)
@@ -821,6 +821,41 @@ template<> VkStructureType getStructureType<VkFenceGetFdInfoKHR> (void)
        return VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR;
 }
 
+template<> VkStructureType getStructureType<VkPhysicalDevicePerformanceCounterFeaturesKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_COUNTER_FEATURES_KHR;
+}
+
+template<> VkStructureType getStructureType<VkPhysicalDevicePerformanceCounterPropertiesKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_COUNTER_PROPERTIES_KHR;
+}
+
+template<> VkStructureType getStructureType<VkPerformanceCounterKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR;
+}
+
+template<> VkStructureType getStructureType<VkPerformanceCounterDescriptionKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR;
+}
+
+template<> VkStructureType getStructureType<VkPerformanceQueryCreateInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_CREATE_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkAcquireProfilingLockInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR;
+}
+
+template<> VkStructureType getStructureType<VkPerformanceQuerySubmitInfoKHR> (void)
+{
+       return VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR;
+}
+
 template<> VkStructureType getStructureType<VkPhysicalDeviceSurfaceInfo2KHR> (void)
 {
        return VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR;
index 5d6ac14..2b665be 100644 (file)
@@ -196,6 +196,8 @@ m_vk.importFenceWin32HandleKHR                                      = (ImportFenceWin32HandleKHRFunc)                                       GET_PRO
 m_vk.getFenceWin32HandleKHR                                            = (GetFenceWin32HandleKHRFunc)                                          GET_PROC_ADDR("vkGetFenceWin32HandleKHR");
 m_vk.importFenceFdKHR                                                  = (ImportFenceFdKHRFunc)                                                        GET_PROC_ADDR("vkImportFenceFdKHR");
 m_vk.getFenceFdKHR                                                             = (GetFenceFdKHRFunc)                                                           GET_PROC_ADDR("vkGetFenceFdKHR");
+m_vk.acquireProfilingLockKHR                                   = (AcquireProfilingLockKHRFunc)                                         GET_PROC_ADDR("vkAcquireProfilingLockKHR");
+m_vk.releaseProfilingLockKHR                                   = (ReleaseProfilingLockKHRFunc)                                         GET_PROC_ADDR("vkReleaseProfilingLockKHR");
 m_vk.debugMarkerSetObjectTagEXT                                        = (DebugMarkerSetObjectTagEXTFunc)                                      GET_PROC_ADDR("vkDebugMarkerSetObjectTagEXT");
 m_vk.debugMarkerSetObjectNameEXT                               = (DebugMarkerSetObjectNameEXTFunc)                                     GET_PROC_ADDR("vkDebugMarkerSetObjectNameEXT");
 m_vk.cmdDebugMarkerBeginEXT                                            = (CmdDebugMarkerBeginEXTFunc)                                          GET_PROC_ADDR("vkCmdDebugMarkerBeginEXT");
index 4fdc000..e2cba8d 100644 (file)
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  */
-m_vk.destroyInstance                                                                           = (DestroyInstanceFunc)                                                                         GET_PROC_ADDR("vkDestroyInstance");
-m_vk.enumeratePhysicalDevices                                                          = (EnumeratePhysicalDevicesFunc)                                                        GET_PROC_ADDR("vkEnumeratePhysicalDevices");
-m_vk.getPhysicalDeviceFeatures                                                         = (GetPhysicalDeviceFeaturesFunc)                                                       GET_PROC_ADDR("vkGetPhysicalDeviceFeatures");
-m_vk.getPhysicalDeviceFormatProperties                                         = (GetPhysicalDeviceFormatPropertiesFunc)                                       GET_PROC_ADDR("vkGetPhysicalDeviceFormatProperties");
-m_vk.getPhysicalDeviceImageFormatProperties                                    = (GetPhysicalDeviceImageFormatPropertiesFunc)                          GET_PROC_ADDR("vkGetPhysicalDeviceImageFormatProperties");
-m_vk.getPhysicalDeviceProperties                                                       = (GetPhysicalDevicePropertiesFunc)                                                     GET_PROC_ADDR("vkGetPhysicalDeviceProperties");
-m_vk.getPhysicalDeviceQueueFamilyProperties                                    = (GetPhysicalDeviceQueueFamilyPropertiesFunc)                          GET_PROC_ADDR("vkGetPhysicalDeviceQueueFamilyProperties");
-m_vk.getPhysicalDeviceMemoryProperties                                         = (GetPhysicalDeviceMemoryPropertiesFunc)                                       GET_PROC_ADDR("vkGetPhysicalDeviceMemoryProperties");
-m_vk.createDevice                                                                                      = (CreateDeviceFunc)                                                                            GET_PROC_ADDR("vkCreateDevice");
-m_vk.enumerateDeviceExtensionProperties                                                = (EnumerateDeviceExtensionPropertiesFunc)                                      GET_PROC_ADDR("vkEnumerateDeviceExtensionProperties");
-m_vk.enumerateDeviceLayerProperties                                                    = (EnumerateDeviceLayerPropertiesFunc)                                          GET_PROC_ADDR("vkEnumerateDeviceLayerProperties");
-m_vk.getPhysicalDeviceSparseImageFormatProperties                      = (GetPhysicalDeviceSparseImageFormatPropertiesFunc)            GET_PROC_ADDR("vkGetPhysicalDeviceSparseImageFormatProperties");
-m_vk.enumeratePhysicalDeviceGroups                                                     = (EnumeratePhysicalDeviceGroupsFunc)                                           GET_PROC_ADDR("vkEnumeratePhysicalDeviceGroups");
+m_vk.destroyInstance                                                                                           = (DestroyInstanceFunc)                                                                                                 GET_PROC_ADDR("vkDestroyInstance");
+m_vk.enumeratePhysicalDevices                                                                          = (EnumeratePhysicalDevicesFunc)                                                                                GET_PROC_ADDR("vkEnumeratePhysicalDevices");
+m_vk.getPhysicalDeviceFeatures                                                                         = (GetPhysicalDeviceFeaturesFunc)                                                                               GET_PROC_ADDR("vkGetPhysicalDeviceFeatures");
+m_vk.getPhysicalDeviceFormatProperties                                                         = (GetPhysicalDeviceFormatPropertiesFunc)                                                               GET_PROC_ADDR("vkGetPhysicalDeviceFormatProperties");
+m_vk.getPhysicalDeviceImageFormatProperties                                                    = (GetPhysicalDeviceImageFormatPropertiesFunc)                                                  GET_PROC_ADDR("vkGetPhysicalDeviceImageFormatProperties");
+m_vk.getPhysicalDeviceProperties                                                                       = (GetPhysicalDevicePropertiesFunc)                                                                             GET_PROC_ADDR("vkGetPhysicalDeviceProperties");
+m_vk.getPhysicalDeviceQueueFamilyProperties                                                    = (GetPhysicalDeviceQueueFamilyPropertiesFunc)                                                  GET_PROC_ADDR("vkGetPhysicalDeviceQueueFamilyProperties");
+m_vk.getPhysicalDeviceMemoryProperties                                                         = (GetPhysicalDeviceMemoryPropertiesFunc)                                                               GET_PROC_ADDR("vkGetPhysicalDeviceMemoryProperties");
+m_vk.createDevice                                                                                                      = (CreateDeviceFunc)                                                                                                    GET_PROC_ADDR("vkCreateDevice");
+m_vk.enumerateDeviceExtensionProperties                                                                = (EnumerateDeviceExtensionPropertiesFunc)                                                              GET_PROC_ADDR("vkEnumerateDeviceExtensionProperties");
+m_vk.enumerateDeviceLayerProperties                                                                    = (EnumerateDeviceLayerPropertiesFunc)                                                                  GET_PROC_ADDR("vkEnumerateDeviceLayerProperties");
+m_vk.getPhysicalDeviceSparseImageFormatProperties                                      = (GetPhysicalDeviceSparseImageFormatPropertiesFunc)                                    GET_PROC_ADDR("vkGetPhysicalDeviceSparseImageFormatProperties");
+m_vk.enumeratePhysicalDeviceGroups                                                                     = (EnumeratePhysicalDeviceGroupsFunc)                                                                   GET_PROC_ADDR("vkEnumeratePhysicalDeviceGroups");
 if (!m_vk.enumeratePhysicalDeviceGroups)
-       m_vk.enumeratePhysicalDeviceGroups                                              = (EnumeratePhysicalDeviceGroupsFunc)                                           GET_PROC_ADDR("vkEnumeratePhysicalDeviceGroupsKHR");
-m_vk.getPhysicalDeviceFeatures2                                                                = (GetPhysicalDeviceFeatures2Func)                                                      GET_PROC_ADDR("vkGetPhysicalDeviceFeatures2");
+       m_vk.enumeratePhysicalDeviceGroups                                                              = (EnumeratePhysicalDeviceGroupsFunc)                                                                   GET_PROC_ADDR("vkEnumeratePhysicalDeviceGroupsKHR");
+m_vk.getPhysicalDeviceFeatures2                                                                                = (GetPhysicalDeviceFeatures2Func)                                                                              GET_PROC_ADDR("vkGetPhysicalDeviceFeatures2");
 if (!m_vk.getPhysicalDeviceFeatures2)
-       m_vk.getPhysicalDeviceFeatures2                                                 = (GetPhysicalDeviceFeatures2Func)                                                      GET_PROC_ADDR("vkGetPhysicalDeviceFeatures2KHR");
-m_vk.getPhysicalDeviceProperties2                                                      = (GetPhysicalDeviceProperties2Func)                                            GET_PROC_ADDR("vkGetPhysicalDeviceProperties2");
+       m_vk.getPhysicalDeviceFeatures2                                                                 = (GetPhysicalDeviceFeatures2Func)                                                                              GET_PROC_ADDR("vkGetPhysicalDeviceFeatures2KHR");
+m_vk.getPhysicalDeviceProperties2                                                                      = (GetPhysicalDeviceProperties2Func)                                                                    GET_PROC_ADDR("vkGetPhysicalDeviceProperties2");
 if (!m_vk.getPhysicalDeviceProperties2)
-       m_vk.getPhysicalDeviceProperties2                                               = (GetPhysicalDeviceProperties2Func)                                            GET_PROC_ADDR("vkGetPhysicalDeviceProperties2KHR");
-m_vk.getPhysicalDeviceFormatProperties2                                                = (GetPhysicalDeviceFormatProperties2Func)                                      GET_PROC_ADDR("vkGetPhysicalDeviceFormatProperties2");
+       m_vk.getPhysicalDeviceProperties2                                                               = (GetPhysicalDeviceProperties2Func)                                                                    GET_PROC_ADDR("vkGetPhysicalDeviceProperties2KHR");
+m_vk.getPhysicalDeviceFormatProperties2                                                                = (GetPhysicalDeviceFormatProperties2Func)                                                              GET_PROC_ADDR("vkGetPhysicalDeviceFormatProperties2");
 if (!m_vk.getPhysicalDeviceFormatProperties2)
-       m_vk.getPhysicalDeviceFormatProperties2                                 = (GetPhysicalDeviceFormatProperties2Func)                                      GET_PROC_ADDR("vkGetPhysicalDeviceFormatProperties2KHR");
-m_vk.getPhysicalDeviceImageFormatProperties2                           = (GetPhysicalDeviceImageFormatProperties2Func)                         GET_PROC_ADDR("vkGetPhysicalDeviceImageFormatProperties2");
+       m_vk.getPhysicalDeviceFormatProperties2                                                 = (GetPhysicalDeviceFormatProperties2Func)                                                              GET_PROC_ADDR("vkGetPhysicalDeviceFormatProperties2KHR");
+m_vk.getPhysicalDeviceImageFormatProperties2                                           = (GetPhysicalDeviceImageFormatProperties2Func)                                                 GET_PROC_ADDR("vkGetPhysicalDeviceImageFormatProperties2");
 if (!m_vk.getPhysicalDeviceImageFormatProperties2)
-       m_vk.getPhysicalDeviceImageFormatProperties2                    = (GetPhysicalDeviceImageFormatProperties2Func)                         GET_PROC_ADDR("vkGetPhysicalDeviceImageFormatProperties2KHR");
-m_vk.getPhysicalDeviceQueueFamilyProperties2                           = (GetPhysicalDeviceQueueFamilyProperties2Func)                         GET_PROC_ADDR("vkGetPhysicalDeviceQueueFamilyProperties2");
+       m_vk.getPhysicalDeviceImageFormatProperties2                                    = (GetPhysicalDeviceImageFormatProperties2Func)                                                 GET_PROC_ADDR("vkGetPhysicalDeviceImageFormatProperties2KHR");
+m_vk.getPhysicalDeviceQueueFamilyProperties2                                           = (GetPhysicalDeviceQueueFamilyProperties2Func)                                                 GET_PROC_ADDR("vkGetPhysicalDeviceQueueFamilyProperties2");
 if (!m_vk.getPhysicalDeviceQueueFamilyProperties2)
-       m_vk.getPhysicalDeviceQueueFamilyProperties2                    = (GetPhysicalDeviceQueueFamilyProperties2Func)                         GET_PROC_ADDR("vkGetPhysicalDeviceQueueFamilyProperties2KHR");
-m_vk.getPhysicalDeviceMemoryProperties2                                                = (GetPhysicalDeviceMemoryProperties2Func)                                      GET_PROC_ADDR("vkGetPhysicalDeviceMemoryProperties2");
+       m_vk.getPhysicalDeviceQueueFamilyProperties2                                    = (GetPhysicalDeviceQueueFamilyProperties2Func)                                                 GET_PROC_ADDR("vkGetPhysicalDeviceQueueFamilyProperties2KHR");
+m_vk.getPhysicalDeviceMemoryProperties2                                                                = (GetPhysicalDeviceMemoryProperties2Func)                                                              GET_PROC_ADDR("vkGetPhysicalDeviceMemoryProperties2");
 if (!m_vk.getPhysicalDeviceMemoryProperties2)
-       m_vk.getPhysicalDeviceMemoryProperties2                                 = (GetPhysicalDeviceMemoryProperties2Func)                                      GET_PROC_ADDR("vkGetPhysicalDeviceMemoryProperties2KHR");
-m_vk.getPhysicalDeviceSparseImageFormatProperties2                     = (GetPhysicalDeviceSparseImageFormatProperties2Func)           GET_PROC_ADDR("vkGetPhysicalDeviceSparseImageFormatProperties2");
+       m_vk.getPhysicalDeviceMemoryProperties2                                                 = (GetPhysicalDeviceMemoryProperties2Func)                                                              GET_PROC_ADDR("vkGetPhysicalDeviceMemoryProperties2KHR");
+m_vk.getPhysicalDeviceSparseImageFormatProperties2                                     = (GetPhysicalDeviceSparseImageFormatProperties2Func)                                   GET_PROC_ADDR("vkGetPhysicalDeviceSparseImageFormatProperties2");
 if (!m_vk.getPhysicalDeviceSparseImageFormatProperties2)
-       m_vk.getPhysicalDeviceSparseImageFormatProperties2              = (GetPhysicalDeviceSparseImageFormatProperties2Func)           GET_PROC_ADDR("vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
-m_vk.getPhysicalDeviceExternalBufferProperties                         = (GetPhysicalDeviceExternalBufferPropertiesFunc)                       GET_PROC_ADDR("vkGetPhysicalDeviceExternalBufferProperties");
+       m_vk.getPhysicalDeviceSparseImageFormatProperties2                              = (GetPhysicalDeviceSparseImageFormatProperties2Func)                                   GET_PROC_ADDR("vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
+m_vk.getPhysicalDeviceExternalBufferProperties                                         = (GetPhysicalDeviceExternalBufferPropertiesFunc)                                               GET_PROC_ADDR("vkGetPhysicalDeviceExternalBufferProperties");
 if (!m_vk.getPhysicalDeviceExternalBufferProperties)
-       m_vk.getPhysicalDeviceExternalBufferProperties                  = (GetPhysicalDeviceExternalBufferPropertiesFunc)                       GET_PROC_ADDR("vkGetPhysicalDeviceExternalBufferPropertiesKHR");
-m_vk.getPhysicalDeviceExternalFenceProperties                          = (GetPhysicalDeviceExternalFencePropertiesFunc)                        GET_PROC_ADDR("vkGetPhysicalDeviceExternalFenceProperties");
+       m_vk.getPhysicalDeviceExternalBufferProperties                                  = (GetPhysicalDeviceExternalBufferPropertiesFunc)                                               GET_PROC_ADDR("vkGetPhysicalDeviceExternalBufferPropertiesKHR");
+m_vk.getPhysicalDeviceExternalFenceProperties                                          = (GetPhysicalDeviceExternalFencePropertiesFunc)                                                GET_PROC_ADDR("vkGetPhysicalDeviceExternalFenceProperties");
 if (!m_vk.getPhysicalDeviceExternalFenceProperties)
-       m_vk.getPhysicalDeviceExternalFenceProperties                   = (GetPhysicalDeviceExternalFencePropertiesFunc)                        GET_PROC_ADDR("vkGetPhysicalDeviceExternalFencePropertiesKHR");
-m_vk.getPhysicalDeviceExternalSemaphoreProperties                      = (GetPhysicalDeviceExternalSemaphorePropertiesFunc)            GET_PROC_ADDR("vkGetPhysicalDeviceExternalSemaphoreProperties");
+       m_vk.getPhysicalDeviceExternalFenceProperties                                   = (GetPhysicalDeviceExternalFencePropertiesFunc)                                                GET_PROC_ADDR("vkGetPhysicalDeviceExternalFencePropertiesKHR");
+m_vk.getPhysicalDeviceExternalSemaphoreProperties                                      = (GetPhysicalDeviceExternalSemaphorePropertiesFunc)                                    GET_PROC_ADDR("vkGetPhysicalDeviceExternalSemaphoreProperties");
 if (!m_vk.getPhysicalDeviceExternalSemaphoreProperties)
-       m_vk.getPhysicalDeviceExternalSemaphoreProperties               = (GetPhysicalDeviceExternalSemaphorePropertiesFunc)            GET_PROC_ADDR("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
-m_vk.destroySurfaceKHR                                                                         = (DestroySurfaceKHRFunc)                                                                       GET_PROC_ADDR("vkDestroySurfaceKHR");
-m_vk.getPhysicalDeviceSurfaceSupportKHR                                                = (GetPhysicalDeviceSurfaceSupportKHRFunc)                                      GET_PROC_ADDR("vkGetPhysicalDeviceSurfaceSupportKHR");
-m_vk.getPhysicalDeviceSurfaceCapabilitiesKHR                           = (GetPhysicalDeviceSurfaceCapabilitiesKHRFunc)                         GET_PROC_ADDR("vkGetPhysicalDeviceSurfaceCapabilitiesKHR");
-m_vk.getPhysicalDeviceSurfaceFormatsKHR                                                = (GetPhysicalDeviceSurfaceFormatsKHRFunc)                                      GET_PROC_ADDR("vkGetPhysicalDeviceSurfaceFormatsKHR");
-m_vk.getPhysicalDeviceSurfacePresentModesKHR                           = (GetPhysicalDeviceSurfacePresentModesKHRFunc)                         GET_PROC_ADDR("vkGetPhysicalDeviceSurfacePresentModesKHR");
-m_vk.getPhysicalDevicePresentRectanglesKHR                                     = (GetPhysicalDevicePresentRectanglesKHRFunc)                           GET_PROC_ADDR("vkGetPhysicalDevicePresentRectanglesKHR");
-m_vk.getPhysicalDeviceDisplayPropertiesKHR                                     = (GetPhysicalDeviceDisplayPropertiesKHRFunc)                           GET_PROC_ADDR("vkGetPhysicalDeviceDisplayPropertiesKHR");
-m_vk.getPhysicalDeviceDisplayPlanePropertiesKHR                                = (GetPhysicalDeviceDisplayPlanePropertiesKHRFunc)                      GET_PROC_ADDR("vkGetPhysicalDeviceDisplayPlanePropertiesKHR");
-m_vk.getDisplayPlaneSupportedDisplaysKHR                                       = (GetDisplayPlaneSupportedDisplaysKHRFunc)                                     GET_PROC_ADDR("vkGetDisplayPlaneSupportedDisplaysKHR");
-m_vk.getDisplayModePropertiesKHR                                                       = (GetDisplayModePropertiesKHRFunc)                                                     GET_PROC_ADDR("vkGetDisplayModePropertiesKHR");
-m_vk.createDisplayModeKHR                                                                      = (CreateDisplayModeKHRFunc)                                                            GET_PROC_ADDR("vkCreateDisplayModeKHR");
-m_vk.getDisplayPlaneCapabilitiesKHR                                                    = (GetDisplayPlaneCapabilitiesKHRFunc)                                          GET_PROC_ADDR("vkGetDisplayPlaneCapabilitiesKHR");
-m_vk.createDisplayPlaneSurfaceKHR                                                      = (CreateDisplayPlaneSurfaceKHRFunc)                                            GET_PROC_ADDR("vkCreateDisplayPlaneSurfaceKHR");
-m_vk.createXlibSurfaceKHR                                                                      = (CreateXlibSurfaceKHRFunc)                                                            GET_PROC_ADDR("vkCreateXlibSurfaceKHR");
-m_vk.getPhysicalDeviceXlibPresentationSupportKHR                       = (GetPhysicalDeviceXlibPresentationSupportKHRFunc)                     GET_PROC_ADDR("vkGetPhysicalDeviceXlibPresentationSupportKHR");
-m_vk.createXcbSurfaceKHR                                                                       = (CreateXcbSurfaceKHRFunc)                                                                     GET_PROC_ADDR("vkCreateXcbSurfaceKHR");
-m_vk.getPhysicalDeviceXcbPresentationSupportKHR                                = (GetPhysicalDeviceXcbPresentationSupportKHRFunc)                      GET_PROC_ADDR("vkGetPhysicalDeviceXcbPresentationSupportKHR");
-m_vk.createWaylandSurfaceKHR                                                           = (CreateWaylandSurfaceKHRFunc)                                                         GET_PROC_ADDR("vkCreateWaylandSurfaceKHR");
-m_vk.getPhysicalDeviceWaylandPresentationSupportKHR                    = (GetPhysicalDeviceWaylandPresentationSupportKHRFunc)          GET_PROC_ADDR("vkGetPhysicalDeviceWaylandPresentationSupportKHR");
-m_vk.createMirSurfaceKHR                                                                       = (CreateMirSurfaceKHRFunc)                                                                     GET_PROC_ADDR("vkCreateMirSurfaceKHR");
-m_vk.getPhysicalDeviceMirPresentationSupportKHR                                = (GetPhysicalDeviceMirPresentationSupportKHRFunc)                      GET_PROC_ADDR("vkGetPhysicalDeviceMirPresentationSupportKHR");
-m_vk.createAndroidSurfaceKHR                                                           = (CreateAndroidSurfaceKHRFunc)                                                         GET_PROC_ADDR("vkCreateAndroidSurfaceKHR");
-m_vk.createWin32SurfaceKHR                                                                     = (CreateWin32SurfaceKHRFunc)                                                           GET_PROC_ADDR("vkCreateWin32SurfaceKHR");
-m_vk.getPhysicalDeviceWin32PresentationSupportKHR                      = (GetPhysicalDeviceWin32PresentationSupportKHRFunc)            GET_PROC_ADDR("vkGetPhysicalDeviceWin32PresentationSupportKHR");
-m_vk.getPhysicalDeviceFeatures2KHR                                                     = (GetPhysicalDeviceFeatures2KHRFunc)                                           GET_PROC_ADDR("vkGetPhysicalDeviceFeatures2KHR");
-m_vk.getPhysicalDeviceFormatProperties2KHR                                     = (GetPhysicalDeviceFormatProperties2KHRFunc)                           GET_PROC_ADDR("vkGetPhysicalDeviceFormatProperties2KHR");
-m_vk.getPhysicalDeviceImageFormatProperties2KHR                                = (GetPhysicalDeviceImageFormatProperties2KHRFunc)                      GET_PROC_ADDR("vkGetPhysicalDeviceImageFormatProperties2KHR");
-m_vk.getPhysicalDeviceMemoryProperties2KHR                                     = (GetPhysicalDeviceMemoryProperties2KHRFunc)                           GET_PROC_ADDR("vkGetPhysicalDeviceMemoryProperties2KHR");
-m_vk.getPhysicalDeviceProperties2KHR                                           = (GetPhysicalDeviceProperties2KHRFunc)                                         GET_PROC_ADDR("vkGetPhysicalDeviceProperties2KHR");
-m_vk.getPhysicalDeviceQueueFamilyProperties2KHR                                = (GetPhysicalDeviceQueueFamilyProperties2KHRFunc)                      GET_PROC_ADDR("vkGetPhysicalDeviceQueueFamilyProperties2KHR");
-m_vk.getPhysicalDeviceSparseImageFormatProperties2KHR          = (GetPhysicalDeviceSparseImageFormatProperties2KHRFunc)        GET_PROC_ADDR("vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
-m_vk.getPhysicalDeviceExternalBufferPropertiesKHR                      = (GetPhysicalDeviceExternalBufferPropertiesKHRFunc)            GET_PROC_ADDR("vkGetPhysicalDeviceExternalBufferPropertiesKHR");
-m_vk.getPhysicalDeviceExternalSemaphorePropertiesKHR           = (GetPhysicalDeviceExternalSemaphorePropertiesKHRFunc)         GET_PROC_ADDR("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
-m_vk.getPhysicalDeviceExternalFencePropertiesKHR                       = (GetPhysicalDeviceExternalFencePropertiesKHRFunc)                     GET_PROC_ADDR("vkGetPhysicalDeviceExternalFencePropertiesKHR");
-m_vk.getPhysicalDeviceSurfaceCapabilities2KHR                          = (GetPhysicalDeviceSurfaceCapabilities2KHRFunc)                        GET_PROC_ADDR("vkGetPhysicalDeviceSurfaceCapabilities2KHR");
-m_vk.getPhysicalDeviceSurfaceFormats2KHR                                       = (GetPhysicalDeviceSurfaceFormats2KHRFunc)                                     GET_PROC_ADDR("vkGetPhysicalDeviceSurfaceFormats2KHR");
-m_vk.getPhysicalDeviceDisplayProperties2KHR                                    = (GetPhysicalDeviceDisplayProperties2KHRFunc)                          GET_PROC_ADDR("vkGetPhysicalDeviceDisplayProperties2KHR");
-m_vk.getPhysicalDeviceDisplayPlaneProperties2KHR                       = (GetPhysicalDeviceDisplayPlaneProperties2KHRFunc)                     GET_PROC_ADDR("vkGetPhysicalDeviceDisplayPlaneProperties2KHR");
-m_vk.getDisplayModeProperties2KHR                                                      = (GetDisplayModeProperties2KHRFunc)                                            GET_PROC_ADDR("vkGetDisplayModeProperties2KHR");
-m_vk.getDisplayPlaneCapabilities2KHR                                           = (GetDisplayPlaneCapabilities2KHRFunc)                                         GET_PROC_ADDR("vkGetDisplayPlaneCapabilities2KHR");
-m_vk.createDebugReportCallbackEXT                                                      = (CreateDebugReportCallbackEXTFunc)                                            GET_PROC_ADDR("vkCreateDebugReportCallbackEXT");
-m_vk.destroyDebugReportCallbackEXT                                                     = (DestroyDebugReportCallbackEXTFunc)                                           GET_PROC_ADDR("vkDestroyDebugReportCallbackEXT");
-m_vk.debugReportMessageEXT                                                                     = (DebugReportMessageEXTFunc)                                                           GET_PROC_ADDR("vkDebugReportMessageEXT");
-m_vk.getPhysicalDeviceExternalImageFormatPropertiesNV          = (GetPhysicalDeviceExternalImageFormatPropertiesNVFunc)        GET_PROC_ADDR("vkGetPhysicalDeviceExternalImageFormatPropertiesNV");
-m_vk.createViSurfaceNN                                                                         = (CreateViSurfaceNNFunc)                                                                       GET_PROC_ADDR("vkCreateViSurfaceNN");
-m_vk.getPhysicalDeviceGeneratedCommandsPropertiesNVX           = (GetPhysicalDeviceGeneratedCommandsPropertiesNVXFunc)         GET_PROC_ADDR("vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX");
-m_vk.releaseDisplayEXT                                                                         = (ReleaseDisplayEXTFunc)                                                                       GET_PROC_ADDR("vkReleaseDisplayEXT");
-m_vk.acquireXlibDisplayEXT                                                                     = (AcquireXlibDisplayEXTFunc)                                                           GET_PROC_ADDR("vkAcquireXlibDisplayEXT");
-m_vk.getRandROutputDisplayEXT                                                          = (GetRandROutputDisplayEXTFunc)                                                        GET_PROC_ADDR("vkGetRandROutputDisplayEXT");
-m_vk.getPhysicalDeviceSurfaceCapabilities2EXT                          = (GetPhysicalDeviceSurfaceCapabilities2EXTFunc)                        GET_PROC_ADDR("vkGetPhysicalDeviceSurfaceCapabilities2EXT");
-m_vk.createIOSSurfaceMVK                                                                       = (CreateIOSSurfaceMVKFunc)                                                                     GET_PROC_ADDR("vkCreateIOSSurfaceMVK");
-m_vk.createMacOSSurfaceMVK                                                                     = (CreateMacOSSurfaceMVKFunc)                                                           GET_PROC_ADDR("vkCreateMacOSSurfaceMVK");
-m_vk.getPhysicalDeviceMultisamplePropertiesEXT                         = (GetPhysicalDeviceMultisamplePropertiesEXTFunc)                       GET_PROC_ADDR("vkGetPhysicalDeviceMultisamplePropertiesEXT");
-m_vk.getPhysicalDeviceCooperativeMatrixPropertiesNV                    = (GetPhysicalDeviceCooperativeMatrixPropertiesNVFunc)          GET_PROC_ADDR("vkGetPhysicalDeviceCooperativeMatrixPropertiesNV");
+       m_vk.getPhysicalDeviceExternalSemaphoreProperties                               = (GetPhysicalDeviceExternalSemaphorePropertiesFunc)                                    GET_PROC_ADDR("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
+m_vk.destroySurfaceKHR                                                                                         = (DestroySurfaceKHRFunc)                                                                                               GET_PROC_ADDR("vkDestroySurfaceKHR");
+m_vk.getPhysicalDeviceSurfaceSupportKHR                                                                = (GetPhysicalDeviceSurfaceSupportKHRFunc)                                                              GET_PROC_ADDR("vkGetPhysicalDeviceSurfaceSupportKHR");
+m_vk.getPhysicalDeviceSurfaceCapabilitiesKHR                                           = (GetPhysicalDeviceSurfaceCapabilitiesKHRFunc)                                                 GET_PROC_ADDR("vkGetPhysicalDeviceSurfaceCapabilitiesKHR");
+m_vk.getPhysicalDeviceSurfaceFormatsKHR                                                                = (GetPhysicalDeviceSurfaceFormatsKHRFunc)                                                              GET_PROC_ADDR("vkGetPhysicalDeviceSurfaceFormatsKHR");
+m_vk.getPhysicalDeviceSurfacePresentModesKHR                                           = (GetPhysicalDeviceSurfacePresentModesKHRFunc)                                                 GET_PROC_ADDR("vkGetPhysicalDeviceSurfacePresentModesKHR");
+m_vk.getPhysicalDevicePresentRectanglesKHR                                                     = (GetPhysicalDevicePresentRectanglesKHRFunc)                                                   GET_PROC_ADDR("vkGetPhysicalDevicePresentRectanglesKHR");
+m_vk.getPhysicalDeviceDisplayPropertiesKHR                                                     = (GetPhysicalDeviceDisplayPropertiesKHRFunc)                                                   GET_PROC_ADDR("vkGetPhysicalDeviceDisplayPropertiesKHR");
+m_vk.getPhysicalDeviceDisplayPlanePropertiesKHR                                                = (GetPhysicalDeviceDisplayPlanePropertiesKHRFunc)                                              GET_PROC_ADDR("vkGetPhysicalDeviceDisplayPlanePropertiesKHR");
+m_vk.getDisplayPlaneSupportedDisplaysKHR                                                       = (GetDisplayPlaneSupportedDisplaysKHRFunc)                                                             GET_PROC_ADDR("vkGetDisplayPlaneSupportedDisplaysKHR");
+m_vk.getDisplayModePropertiesKHR                                                                       = (GetDisplayModePropertiesKHRFunc)                                                                             GET_PROC_ADDR("vkGetDisplayModePropertiesKHR");
+m_vk.createDisplayModeKHR                                                                                      = (CreateDisplayModeKHRFunc)                                                                                    GET_PROC_ADDR("vkCreateDisplayModeKHR");
+m_vk.getDisplayPlaneCapabilitiesKHR                                                                    = (GetDisplayPlaneCapabilitiesKHRFunc)                                                                  GET_PROC_ADDR("vkGetDisplayPlaneCapabilitiesKHR");
+m_vk.createDisplayPlaneSurfaceKHR                                                                      = (CreateDisplayPlaneSurfaceKHRFunc)                                                                    GET_PROC_ADDR("vkCreateDisplayPlaneSurfaceKHR");
+m_vk.createXlibSurfaceKHR                                                                                      = (CreateXlibSurfaceKHRFunc)                                                                                    GET_PROC_ADDR("vkCreateXlibSurfaceKHR");
+m_vk.getPhysicalDeviceXlibPresentationSupportKHR                                       = (GetPhysicalDeviceXlibPresentationSupportKHRFunc)                                             GET_PROC_ADDR("vkGetPhysicalDeviceXlibPresentationSupportKHR");
+m_vk.createXcbSurfaceKHR                                                                                       = (CreateXcbSurfaceKHRFunc)                                                                                             GET_PROC_ADDR("vkCreateXcbSurfaceKHR");
+m_vk.getPhysicalDeviceXcbPresentationSupportKHR                                                = (GetPhysicalDeviceXcbPresentationSupportKHRFunc)                                              GET_PROC_ADDR("vkGetPhysicalDeviceXcbPresentationSupportKHR");
+m_vk.createWaylandSurfaceKHR                                                                           = (CreateWaylandSurfaceKHRFunc)                                                                                 GET_PROC_ADDR("vkCreateWaylandSurfaceKHR");
+m_vk.getPhysicalDeviceWaylandPresentationSupportKHR                                    = (GetPhysicalDeviceWaylandPresentationSupportKHRFunc)                                  GET_PROC_ADDR("vkGetPhysicalDeviceWaylandPresentationSupportKHR");
+m_vk.createMirSurfaceKHR                                                                                       = (CreateMirSurfaceKHRFunc)                                                                                             GET_PROC_ADDR("vkCreateMirSurfaceKHR");
+m_vk.getPhysicalDeviceMirPresentationSupportKHR                                                = (GetPhysicalDeviceMirPresentationSupportKHRFunc)                                              GET_PROC_ADDR("vkGetPhysicalDeviceMirPresentationSupportKHR");
+m_vk.createAndroidSurfaceKHR                                                                           = (CreateAndroidSurfaceKHRFunc)                                                                                 GET_PROC_ADDR("vkCreateAndroidSurfaceKHR");
+m_vk.createWin32SurfaceKHR                                                                                     = (CreateWin32SurfaceKHRFunc)                                                                                   GET_PROC_ADDR("vkCreateWin32SurfaceKHR");
+m_vk.getPhysicalDeviceWin32PresentationSupportKHR                                      = (GetPhysicalDeviceWin32PresentationSupportKHRFunc)                                    GET_PROC_ADDR("vkGetPhysicalDeviceWin32PresentationSupportKHR");
+m_vk.getPhysicalDeviceFeatures2KHR                                                                     = (GetPhysicalDeviceFeatures2KHRFunc)                                                                   GET_PROC_ADDR("vkGetPhysicalDeviceFeatures2KHR");
+m_vk.getPhysicalDeviceFormatProperties2KHR                                                     = (GetPhysicalDeviceFormatProperties2KHRFunc)                                                   GET_PROC_ADDR("vkGetPhysicalDeviceFormatProperties2KHR");
+m_vk.getPhysicalDeviceImageFormatProperties2KHR                                                = (GetPhysicalDeviceImageFormatProperties2KHRFunc)                                              GET_PROC_ADDR("vkGetPhysicalDeviceImageFormatProperties2KHR");
+m_vk.getPhysicalDeviceMemoryProperties2KHR                                                     = (GetPhysicalDeviceMemoryProperties2KHRFunc)                                                   GET_PROC_ADDR("vkGetPhysicalDeviceMemoryProperties2KHR");
+m_vk.getPhysicalDeviceProperties2KHR                                                           = (GetPhysicalDeviceProperties2KHRFunc)                                                                 GET_PROC_ADDR("vkGetPhysicalDeviceProperties2KHR");
+m_vk.getPhysicalDeviceQueueFamilyProperties2KHR                                                = (GetPhysicalDeviceQueueFamilyProperties2KHRFunc)                                              GET_PROC_ADDR("vkGetPhysicalDeviceQueueFamilyProperties2KHR");
+m_vk.getPhysicalDeviceSparseImageFormatProperties2KHR                          = (GetPhysicalDeviceSparseImageFormatProperties2KHRFunc)                                GET_PROC_ADDR("vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
+m_vk.getPhysicalDeviceExternalBufferPropertiesKHR                                      = (GetPhysicalDeviceExternalBufferPropertiesKHRFunc)                                    GET_PROC_ADDR("vkGetPhysicalDeviceExternalBufferPropertiesKHR");
+m_vk.getPhysicalDeviceExternalSemaphorePropertiesKHR                           = (GetPhysicalDeviceExternalSemaphorePropertiesKHRFunc)                                 GET_PROC_ADDR("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
+m_vk.getPhysicalDeviceExternalFencePropertiesKHR                                       = (GetPhysicalDeviceExternalFencePropertiesKHRFunc)                                             GET_PROC_ADDR("vkGetPhysicalDeviceExternalFencePropertiesKHR");
+m_vk.enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR     = (EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHRFunc)   GET_PROC_ADDR("vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR");
+m_vk.getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR                     = (GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHRFunc)                   GET_PROC_ADDR("vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR");
+m_vk.getPhysicalDeviceSurfaceCapabilities2KHR                                          = (GetPhysicalDeviceSurfaceCapabilities2KHRFunc)                                                GET_PROC_ADDR("vkGetPhysicalDeviceSurfaceCapabilities2KHR");
+m_vk.getPhysicalDeviceSurfaceFormats2KHR                                                       = (GetPhysicalDeviceSurfaceFormats2KHRFunc)                                                             GET_PROC_ADDR("vkGetPhysicalDeviceSurfaceFormats2KHR");
+m_vk.getPhysicalDeviceDisplayProperties2KHR                                                    = (GetPhysicalDeviceDisplayProperties2KHRFunc)                                                  GET_PROC_ADDR("vkGetPhysicalDeviceDisplayProperties2KHR");
+m_vk.getPhysicalDeviceDisplayPlaneProperties2KHR                                       = (GetPhysicalDeviceDisplayPlaneProperties2KHRFunc)                                             GET_PROC_ADDR("vkGetPhysicalDeviceDisplayPlaneProperties2KHR");
+m_vk.getDisplayModeProperties2KHR                                                                      = (GetDisplayModeProperties2KHRFunc)                                                                    GET_PROC_ADDR("vkGetDisplayModeProperties2KHR");
+m_vk.getDisplayPlaneCapabilities2KHR                                                           = (GetDisplayPlaneCapabilities2KHRFunc)                                                                 GET_PROC_ADDR("vkGetDisplayPlaneCapabilities2KHR");
+m_vk.createDebugReportCallbackEXT                                                                      = (CreateDebugReportCallbackEXTFunc)                                                                    GET_PROC_ADDR("vkCreateDebugReportCallbackEXT");
+m_vk.destroyDebugReportCallbackEXT                                                                     = (DestroyDebugReportCallbackEXTFunc)                                                                   GET_PROC_ADDR("vkDestroyDebugReportCallbackEXT");
+m_vk.debugReportMessageEXT                                                                                     = (DebugReportMessageEXTFunc)                                                                                   GET_PROC_ADDR("vkDebugReportMessageEXT");
+m_vk.getPhysicalDeviceExternalImageFormatPropertiesNV                          = (GetPhysicalDeviceExternalImageFormatPropertiesNVFunc)                                GET_PROC_ADDR("vkGetPhysicalDeviceExternalImageFormatPropertiesNV");
+m_vk.createViSurfaceNN                                                                                         = (CreateViSurfaceNNFunc)                                                                                               GET_PROC_ADDR("vkCreateViSurfaceNN");
+m_vk.getPhysicalDeviceGeneratedCommandsPropertiesNVX                           = (GetPhysicalDeviceGeneratedCommandsPropertiesNVXFunc)                                 GET_PROC_ADDR("vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX");
+m_vk.releaseDisplayEXT                                                                                         = (ReleaseDisplayEXTFunc)                                                                                               GET_PROC_ADDR("vkReleaseDisplayEXT");
+m_vk.acquireXlibDisplayEXT                                                                                     = (AcquireXlibDisplayEXTFunc)                                                                                   GET_PROC_ADDR("vkAcquireXlibDisplayEXT");
+m_vk.getRandROutputDisplayEXT                                                                          = (GetRandROutputDisplayEXTFunc)                                                                                GET_PROC_ADDR("vkGetRandROutputDisplayEXT");
+m_vk.getPhysicalDeviceSurfaceCapabilities2EXT                                          = (GetPhysicalDeviceSurfaceCapabilities2EXTFunc)                                                GET_PROC_ADDR("vkGetPhysicalDeviceSurfaceCapabilities2EXT");
+m_vk.createIOSSurfaceMVK                                                                                       = (CreateIOSSurfaceMVKFunc)                                                                                             GET_PROC_ADDR("vkCreateIOSSurfaceMVK");
+m_vk.createMacOSSurfaceMVK                                                                                     = (CreateMacOSSurfaceMVKFunc)                                                                                   GET_PROC_ADDR("vkCreateMacOSSurfaceMVK");
+m_vk.getPhysicalDeviceMultisamplePropertiesEXT                                         = (GetPhysicalDeviceMultisamplePropertiesEXTFunc)                                               GET_PROC_ADDR("vkGetPhysicalDeviceMultisamplePropertiesEXT");
+m_vk.getPhysicalDeviceCooperativeMatrixPropertiesNV                                    = (GetPhysicalDeviceCooperativeMatrixPropertiesNVFunc)                                  GET_PROC_ADDR("vkGetPhysicalDeviceCooperativeMatrixPropertiesNV");
index b610e32..db464b5 100644 (file)
@@ -287,6 +287,16 @@ VkBool32 InstanceDriver::getPhysicalDeviceWin32PresentationSupportKHR (VkPhysica
        return m_vk.getPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFamilyIndex);
 }
 
+void InstanceDriver::enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, deUint32* pCounterCount, VkPerformanceCounterKHR* pCounters, VkPerformanceCounterDescriptionKHR* pCounterDescriptions) const
+{
+       m_vk.enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions);
+}
+
+void InstanceDriver::getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR (VkPhysicalDevice physicalDevice, const VkPerformanceQueryCreateInfoKHR* pPerformanceQueryCreateInfo, deUint32* pNumPasses) const
+{
+       m_vk.getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses);
+}
+
 VkResult InstanceDriver::getPhysicalDeviceSurfaceCapabilities2KHR (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities) const
 {
        return m_vk.getPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities);
index 8b1c4e1..b0812ca 100644 (file)
@@ -1,80 +1,82 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  */
-DestroyInstanceFunc                                                                            destroyInstance;
-EnumeratePhysicalDevicesFunc                                                   enumeratePhysicalDevices;
-GetPhysicalDeviceFeaturesFunc                                                  getPhysicalDeviceFeatures;
-GetPhysicalDeviceFormatPropertiesFunc                                  getPhysicalDeviceFormatProperties;
-GetPhysicalDeviceImageFormatPropertiesFunc                             getPhysicalDeviceImageFormatProperties;
-GetPhysicalDevicePropertiesFunc                                                        getPhysicalDeviceProperties;
-GetPhysicalDeviceQueueFamilyPropertiesFunc                             getPhysicalDeviceQueueFamilyProperties;
-GetPhysicalDeviceMemoryPropertiesFunc                                  getPhysicalDeviceMemoryProperties;
-CreateDeviceFunc                                                                               createDevice;
-EnumerateDeviceExtensionPropertiesFunc                                 enumerateDeviceExtensionProperties;
-EnumerateDeviceLayerPropertiesFunc                                             enumerateDeviceLayerProperties;
-GetPhysicalDeviceSparseImageFormatPropertiesFunc               getPhysicalDeviceSparseImageFormatProperties;
-EnumeratePhysicalDeviceGroupsFunc                                              enumeratePhysicalDeviceGroups;
-GetPhysicalDeviceFeatures2Func                                                 getPhysicalDeviceFeatures2;
-GetPhysicalDeviceProperties2Func                                               getPhysicalDeviceProperties2;
-GetPhysicalDeviceFormatProperties2Func                                 getPhysicalDeviceFormatProperties2;
-GetPhysicalDeviceImageFormatProperties2Func                            getPhysicalDeviceImageFormatProperties2;
-GetPhysicalDeviceQueueFamilyProperties2Func                            getPhysicalDeviceQueueFamilyProperties2;
-GetPhysicalDeviceMemoryProperties2Func                                 getPhysicalDeviceMemoryProperties2;
-GetPhysicalDeviceSparseImageFormatProperties2Func              getPhysicalDeviceSparseImageFormatProperties2;
-GetPhysicalDeviceExternalBufferPropertiesFunc                  getPhysicalDeviceExternalBufferProperties;
-GetPhysicalDeviceExternalFencePropertiesFunc                   getPhysicalDeviceExternalFenceProperties;
-GetPhysicalDeviceExternalSemaphorePropertiesFunc               getPhysicalDeviceExternalSemaphoreProperties;
-DestroySurfaceKHRFunc                                                                  destroySurfaceKHR;
-GetPhysicalDeviceSurfaceSupportKHRFunc                                 getPhysicalDeviceSurfaceSupportKHR;
-GetPhysicalDeviceSurfaceCapabilitiesKHRFunc                            getPhysicalDeviceSurfaceCapabilitiesKHR;
-GetPhysicalDeviceSurfaceFormatsKHRFunc                                 getPhysicalDeviceSurfaceFormatsKHR;
-GetPhysicalDeviceSurfacePresentModesKHRFunc                            getPhysicalDeviceSurfacePresentModesKHR;
-GetPhysicalDevicePresentRectanglesKHRFunc                              getPhysicalDevicePresentRectanglesKHR;
-GetPhysicalDeviceDisplayPropertiesKHRFunc                              getPhysicalDeviceDisplayPropertiesKHR;
-GetPhysicalDeviceDisplayPlanePropertiesKHRFunc                 getPhysicalDeviceDisplayPlanePropertiesKHR;
-GetDisplayPlaneSupportedDisplaysKHRFunc                                        getDisplayPlaneSupportedDisplaysKHR;
-GetDisplayModePropertiesKHRFunc                                                        getDisplayModePropertiesKHR;
-CreateDisplayModeKHRFunc                                                               createDisplayModeKHR;
-GetDisplayPlaneCapabilitiesKHRFunc                                             getDisplayPlaneCapabilitiesKHR;
-CreateDisplayPlaneSurfaceKHRFunc                                               createDisplayPlaneSurfaceKHR;
-CreateXlibSurfaceKHRFunc                                                               createXlibSurfaceKHR;
-GetPhysicalDeviceXlibPresentationSupportKHRFunc                        getPhysicalDeviceXlibPresentationSupportKHR;
-CreateXcbSurfaceKHRFunc                                                                        createXcbSurfaceKHR;
-GetPhysicalDeviceXcbPresentationSupportKHRFunc                 getPhysicalDeviceXcbPresentationSupportKHR;
-CreateWaylandSurfaceKHRFunc                                                            createWaylandSurfaceKHR;
-GetPhysicalDeviceWaylandPresentationSupportKHRFunc             getPhysicalDeviceWaylandPresentationSupportKHR;
-CreateMirSurfaceKHRFunc                                                                        createMirSurfaceKHR;
-GetPhysicalDeviceMirPresentationSupportKHRFunc                 getPhysicalDeviceMirPresentationSupportKHR;
-CreateAndroidSurfaceKHRFunc                                                            createAndroidSurfaceKHR;
-CreateWin32SurfaceKHRFunc                                                              createWin32SurfaceKHR;
-GetPhysicalDeviceWin32PresentationSupportKHRFunc               getPhysicalDeviceWin32PresentationSupportKHR;
-GetPhysicalDeviceFeatures2KHRFunc                                              getPhysicalDeviceFeatures2KHR;
-GetPhysicalDeviceFormatProperties2KHRFunc                              getPhysicalDeviceFormatProperties2KHR;
-GetPhysicalDeviceImageFormatProperties2KHRFunc                 getPhysicalDeviceImageFormatProperties2KHR;
-GetPhysicalDeviceMemoryProperties2KHRFunc                              getPhysicalDeviceMemoryProperties2KHR;
-GetPhysicalDeviceProperties2KHRFunc                                            getPhysicalDeviceProperties2KHR;
-GetPhysicalDeviceQueueFamilyProperties2KHRFunc                 getPhysicalDeviceQueueFamilyProperties2KHR;
-GetPhysicalDeviceSparseImageFormatProperties2KHRFunc   getPhysicalDeviceSparseImageFormatProperties2KHR;
-GetPhysicalDeviceExternalBufferPropertiesKHRFunc               getPhysicalDeviceExternalBufferPropertiesKHR;
-GetPhysicalDeviceExternalSemaphorePropertiesKHRFunc            getPhysicalDeviceExternalSemaphorePropertiesKHR;
-GetPhysicalDeviceExternalFencePropertiesKHRFunc                        getPhysicalDeviceExternalFencePropertiesKHR;
-GetPhysicalDeviceSurfaceCapabilities2KHRFunc                   getPhysicalDeviceSurfaceCapabilities2KHR;
-GetPhysicalDeviceSurfaceFormats2KHRFunc                                        getPhysicalDeviceSurfaceFormats2KHR;
-GetPhysicalDeviceDisplayProperties2KHRFunc                             getPhysicalDeviceDisplayProperties2KHR;
-GetPhysicalDeviceDisplayPlaneProperties2KHRFunc                        getPhysicalDeviceDisplayPlaneProperties2KHR;
-GetDisplayModeProperties2KHRFunc                                               getDisplayModeProperties2KHR;
-GetDisplayPlaneCapabilities2KHRFunc                                            getDisplayPlaneCapabilities2KHR;
-CreateDebugReportCallbackEXTFunc                                               createDebugReportCallbackEXT;
-DestroyDebugReportCallbackEXTFunc                                              destroyDebugReportCallbackEXT;
-DebugReportMessageEXTFunc                                                              debugReportMessageEXT;
-GetPhysicalDeviceExternalImageFormatPropertiesNVFunc   getPhysicalDeviceExternalImageFormatPropertiesNV;
-CreateViSurfaceNNFunc                                                                  createViSurfaceNN;
-GetPhysicalDeviceGeneratedCommandsPropertiesNVXFunc            getPhysicalDeviceGeneratedCommandsPropertiesNVX;
-ReleaseDisplayEXTFunc                                                                  releaseDisplayEXT;
-AcquireXlibDisplayEXTFunc                                                              acquireXlibDisplayEXT;
-GetRandROutputDisplayEXTFunc                                                   getRandROutputDisplayEXT;
-GetPhysicalDeviceSurfaceCapabilities2EXTFunc                   getPhysicalDeviceSurfaceCapabilities2EXT;
-CreateIOSSurfaceMVKFunc                                                                        createIOSSurfaceMVK;
-CreateMacOSSurfaceMVKFunc                                                              createMacOSSurfaceMVK;
-GetPhysicalDeviceMultisamplePropertiesEXTFunc                  getPhysicalDeviceMultisamplePropertiesEXT;
-GetPhysicalDeviceCooperativeMatrixPropertiesNVFunc             getPhysicalDeviceCooperativeMatrixPropertiesNV;
+DestroyInstanceFunc                                                                                                    destroyInstance;
+EnumeratePhysicalDevicesFunc                                                                           enumeratePhysicalDevices;
+GetPhysicalDeviceFeaturesFunc                                                                          getPhysicalDeviceFeatures;
+GetPhysicalDeviceFormatPropertiesFunc                                                          getPhysicalDeviceFormatProperties;
+GetPhysicalDeviceImageFormatPropertiesFunc                                                     getPhysicalDeviceImageFormatProperties;
+GetPhysicalDevicePropertiesFunc                                                                                getPhysicalDeviceProperties;
+GetPhysicalDeviceQueueFamilyPropertiesFunc                                                     getPhysicalDeviceQueueFamilyProperties;
+GetPhysicalDeviceMemoryPropertiesFunc                                                          getPhysicalDeviceMemoryProperties;
+CreateDeviceFunc                                                                                                       createDevice;
+EnumerateDeviceExtensionPropertiesFunc                                                         enumerateDeviceExtensionProperties;
+EnumerateDeviceLayerPropertiesFunc                                                                     enumerateDeviceLayerProperties;
+GetPhysicalDeviceSparseImageFormatPropertiesFunc                                       getPhysicalDeviceSparseImageFormatProperties;
+EnumeratePhysicalDeviceGroupsFunc                                                                      enumeratePhysicalDeviceGroups;
+GetPhysicalDeviceFeatures2Func                                                                         getPhysicalDeviceFeatures2;
+GetPhysicalDeviceProperties2Func                                                                       getPhysicalDeviceProperties2;
+GetPhysicalDeviceFormatProperties2Func                                                         getPhysicalDeviceFormatProperties2;
+GetPhysicalDeviceImageFormatProperties2Func                                                    getPhysicalDeviceImageFormatProperties2;
+GetPhysicalDeviceQueueFamilyProperties2Func                                                    getPhysicalDeviceQueueFamilyProperties2;
+GetPhysicalDeviceMemoryProperties2Func                                                         getPhysicalDeviceMemoryProperties2;
+GetPhysicalDeviceSparseImageFormatProperties2Func                                      getPhysicalDeviceSparseImageFormatProperties2;
+GetPhysicalDeviceExternalBufferPropertiesFunc                                          getPhysicalDeviceExternalBufferProperties;
+GetPhysicalDeviceExternalFencePropertiesFunc                                           getPhysicalDeviceExternalFenceProperties;
+GetPhysicalDeviceExternalSemaphorePropertiesFunc                                       getPhysicalDeviceExternalSemaphoreProperties;
+DestroySurfaceKHRFunc                                                                                          destroySurfaceKHR;
+GetPhysicalDeviceSurfaceSupportKHRFunc                                                         getPhysicalDeviceSurfaceSupportKHR;
+GetPhysicalDeviceSurfaceCapabilitiesKHRFunc                                                    getPhysicalDeviceSurfaceCapabilitiesKHR;
+GetPhysicalDeviceSurfaceFormatsKHRFunc                                                         getPhysicalDeviceSurfaceFormatsKHR;
+GetPhysicalDeviceSurfacePresentModesKHRFunc                                                    getPhysicalDeviceSurfacePresentModesKHR;
+GetPhysicalDevicePresentRectanglesKHRFunc                                                      getPhysicalDevicePresentRectanglesKHR;
+GetPhysicalDeviceDisplayPropertiesKHRFunc                                                      getPhysicalDeviceDisplayPropertiesKHR;
+GetPhysicalDeviceDisplayPlanePropertiesKHRFunc                                         getPhysicalDeviceDisplayPlanePropertiesKHR;
+GetDisplayPlaneSupportedDisplaysKHRFunc                                                                getDisplayPlaneSupportedDisplaysKHR;
+GetDisplayModePropertiesKHRFunc                                                                                getDisplayModePropertiesKHR;
+CreateDisplayModeKHRFunc                                                                                       createDisplayModeKHR;
+GetDisplayPlaneCapabilitiesKHRFunc                                                                     getDisplayPlaneCapabilitiesKHR;
+CreateDisplayPlaneSurfaceKHRFunc                                                                       createDisplayPlaneSurfaceKHR;
+CreateXlibSurfaceKHRFunc                                                                                       createXlibSurfaceKHR;
+GetPhysicalDeviceXlibPresentationSupportKHRFunc                                                getPhysicalDeviceXlibPresentationSupportKHR;
+CreateXcbSurfaceKHRFunc                                                                                                createXcbSurfaceKHR;
+GetPhysicalDeviceXcbPresentationSupportKHRFunc                                         getPhysicalDeviceXcbPresentationSupportKHR;
+CreateWaylandSurfaceKHRFunc                                                                                    createWaylandSurfaceKHR;
+GetPhysicalDeviceWaylandPresentationSupportKHRFunc                                     getPhysicalDeviceWaylandPresentationSupportKHR;
+CreateMirSurfaceKHRFunc                                                                                                createMirSurfaceKHR;
+GetPhysicalDeviceMirPresentationSupportKHRFunc                                         getPhysicalDeviceMirPresentationSupportKHR;
+CreateAndroidSurfaceKHRFunc                                                                                    createAndroidSurfaceKHR;
+CreateWin32SurfaceKHRFunc                                                                                      createWin32SurfaceKHR;
+GetPhysicalDeviceWin32PresentationSupportKHRFunc                                       getPhysicalDeviceWin32PresentationSupportKHR;
+GetPhysicalDeviceFeatures2KHRFunc                                                                      getPhysicalDeviceFeatures2KHR;
+GetPhysicalDeviceFormatProperties2KHRFunc                                                      getPhysicalDeviceFormatProperties2KHR;
+GetPhysicalDeviceImageFormatProperties2KHRFunc                                         getPhysicalDeviceImageFormatProperties2KHR;
+GetPhysicalDeviceMemoryProperties2KHRFunc                                                      getPhysicalDeviceMemoryProperties2KHR;
+GetPhysicalDeviceProperties2KHRFunc                                                                    getPhysicalDeviceProperties2KHR;
+GetPhysicalDeviceQueueFamilyProperties2KHRFunc                                         getPhysicalDeviceQueueFamilyProperties2KHR;
+GetPhysicalDeviceSparseImageFormatProperties2KHRFunc                           getPhysicalDeviceSparseImageFormatProperties2KHR;
+GetPhysicalDeviceExternalBufferPropertiesKHRFunc                                       getPhysicalDeviceExternalBufferPropertiesKHR;
+GetPhysicalDeviceExternalSemaphorePropertiesKHRFunc                                    getPhysicalDeviceExternalSemaphorePropertiesKHR;
+GetPhysicalDeviceExternalFencePropertiesKHRFunc                                                getPhysicalDeviceExternalFencePropertiesKHR;
+EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHRFunc      enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR;
+GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHRFunc                      getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR;
+GetPhysicalDeviceSurfaceCapabilities2KHRFunc                                           getPhysicalDeviceSurfaceCapabilities2KHR;
+GetPhysicalDeviceSurfaceFormats2KHRFunc                                                                getPhysicalDeviceSurfaceFormats2KHR;
+GetPhysicalDeviceDisplayProperties2KHRFunc                                                     getPhysicalDeviceDisplayProperties2KHR;
+GetPhysicalDeviceDisplayPlaneProperties2KHRFunc                                                getPhysicalDeviceDisplayPlaneProperties2KHR;
+GetDisplayModeProperties2KHRFunc                                                                       getDisplayModeProperties2KHR;
+GetDisplayPlaneCapabilities2KHRFunc                                                                    getDisplayPlaneCapabilities2KHR;
+CreateDebugReportCallbackEXTFunc                                                                       createDebugReportCallbackEXT;
+DestroyDebugReportCallbackEXTFunc                                                                      destroyDebugReportCallbackEXT;
+DebugReportMessageEXTFunc                                                                                      debugReportMessageEXT;
+GetPhysicalDeviceExternalImageFormatPropertiesNVFunc                           getPhysicalDeviceExternalImageFormatPropertiesNV;
+CreateViSurfaceNNFunc                                                                                          createViSurfaceNN;
+GetPhysicalDeviceGeneratedCommandsPropertiesNVXFunc                                    getPhysicalDeviceGeneratedCommandsPropertiesNVX;
+ReleaseDisplayEXTFunc                                                                                          releaseDisplayEXT;
+AcquireXlibDisplayEXTFunc                                                                                      acquireXlibDisplayEXT;
+GetRandROutputDisplayEXTFunc                                                                           getRandROutputDisplayEXT;
+GetPhysicalDeviceSurfaceCapabilities2EXTFunc                                           getPhysicalDeviceSurfaceCapabilities2EXT;
+CreateIOSSurfaceMVKFunc                                                                                                createIOSSurfaceMVK;
+CreateMacOSSurfaceMVKFunc                                                                                      createMacOSSurfaceMVK;
+GetPhysicalDeviceMultisamplePropertiesEXTFunc                                          getPhysicalDeviceMultisamplePropertiesEXT;
+GetPhysicalDeviceCooperativeMatrixPropertiesNVFunc                                     getPhysicalDeviceCooperativeMatrixPropertiesNV;
index a4297a8..a1d55cc 100644 (file)
@@ -1507,6 +1507,34 @@ VKAPI_ATTR VkResult VKAPI_CALL getFenceFdKHR (VkDevice device, const VkFenceGetF
        return VK_SUCCESS;
 }
 
+VKAPI_ATTR void VKAPI_CALL enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, deUint32* pCounterCount, VkPerformanceCounterKHR* pCounters, VkPerformanceCounterDescriptionKHR* pCounterDescriptions)
+{
+       DE_UNREF(physicalDevice);
+       DE_UNREF(queueFamilyIndex);
+       DE_UNREF(pCounterCount);
+       DE_UNREF(pCounters);
+       DE_UNREF(pCounterDescriptions);
+}
+
+VKAPI_ATTR void VKAPI_CALL getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR (VkPhysicalDevice physicalDevice, const VkPerformanceQueryCreateInfoKHR* pPerformanceQueryCreateInfo, deUint32* pNumPasses)
+{
+       DE_UNREF(physicalDevice);
+       DE_UNREF(pPerformanceQueryCreateInfo);
+       DE_UNREF(pNumPasses);
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL acquireProfilingLockKHR (VkDevice device, const VkAcquireProfilingLockInfoKHR* pInfo)
+{
+       DE_UNREF(device);
+       DE_UNREF(pInfo);
+       return VK_SUCCESS;
+}
+
+VKAPI_ATTR void VKAPI_CALL releaseProfilingLockKHR (VkDevice device)
+{
+       DE_UNREF(device);
+}
+
 VKAPI_ATTR VkResult VKAPI_CALL getPhysicalDeviceSurfaceCapabilities2KHR (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities)
 {
        DE_UNREF(physicalDevice);
@@ -1907,84 +1935,86 @@ static const tcu::StaticFunctionLibrary::Entry s_platformFunctions[] =
 
 static const tcu::StaticFunctionLibrary::Entry s_instanceFunctions[] =
 {
-       VK_NULL_FUNC_ENTRY(vkDestroyInstance,                                                                   destroyInstance),
-       VK_NULL_FUNC_ENTRY(vkEnumeratePhysicalDevices,                                                  enumeratePhysicalDevices),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceFeatures,                                                 getPhysicalDeviceFeatures),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceFormatProperties,                                 getPhysicalDeviceFormatProperties),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceImageFormatProperties,                    getPhysicalDeviceImageFormatProperties),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceProperties,                                               getPhysicalDeviceProperties),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceQueueFamilyProperties,                    getPhysicalDeviceQueueFamilyProperties),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceMemoryProperties,                                 getPhysicalDeviceMemoryProperties),
-       VK_NULL_FUNC_ENTRY(vkCreateDevice,                                                                              createDevice),
-       VK_NULL_FUNC_ENTRY(vkEnumerateDeviceExtensionProperties,                                enumerateDeviceExtensionProperties),
-       VK_NULL_FUNC_ENTRY(vkEnumerateDeviceLayerProperties,                                    enumerateDeviceLayerProperties),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceSparseImageFormatProperties,              getPhysicalDeviceSparseImageFormatProperties),
-       VK_NULL_FUNC_ENTRY(vkEnumeratePhysicalDeviceGroups,                                             enumeratePhysicalDeviceGroups),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceFeatures2,                                                getPhysicalDeviceFeatures2),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceProperties2,                                              getPhysicalDeviceProperties2),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceFormatProperties2,                                getPhysicalDeviceFormatProperties2),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceImageFormatProperties2,                   getPhysicalDeviceImageFormatProperties2),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceQueueFamilyProperties2,                   getPhysicalDeviceQueueFamilyProperties2),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceMemoryProperties2,                                getPhysicalDeviceMemoryProperties2),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceSparseImageFormatProperties2,             getPhysicalDeviceSparseImageFormatProperties2),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceExternalBufferProperties,                 getPhysicalDeviceExternalBufferProperties),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceExternalFenceProperties,                  getPhysicalDeviceExternalFenceProperties),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceExternalSemaphoreProperties,              getPhysicalDeviceExternalSemaphoreProperties),
-       VK_NULL_FUNC_ENTRY(vkDestroySurfaceKHR,                                                                 destroySurfaceKHR),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceSurfaceSupportKHR,                                getPhysicalDeviceSurfaceSupportKHR),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceSurfaceCapabilitiesKHR,                   getPhysicalDeviceSurfaceCapabilitiesKHR),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceSurfaceFormatsKHR,                                getPhysicalDeviceSurfaceFormatsKHR),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceSurfacePresentModesKHR,                   getPhysicalDeviceSurfacePresentModesKHR),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDevicePresentRectanglesKHR,                             getPhysicalDevicePresentRectanglesKHR),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceDisplayPropertiesKHR,                             getPhysicalDeviceDisplayPropertiesKHR),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceDisplayPlanePropertiesKHR,                getPhysicalDeviceDisplayPlanePropertiesKHR),
-       VK_NULL_FUNC_ENTRY(vkGetDisplayPlaneSupportedDisplaysKHR,                               getDisplayPlaneSupportedDisplaysKHR),
-       VK_NULL_FUNC_ENTRY(vkGetDisplayModePropertiesKHR,                                               getDisplayModePropertiesKHR),
-       VK_NULL_FUNC_ENTRY(vkCreateDisplayModeKHR,                                                              createDisplayModeKHR),
-       VK_NULL_FUNC_ENTRY(vkGetDisplayPlaneCapabilitiesKHR,                                    getDisplayPlaneCapabilitiesKHR),
-       VK_NULL_FUNC_ENTRY(vkCreateDisplayPlaneSurfaceKHR,                                              createDisplayPlaneSurfaceKHR),
-       VK_NULL_FUNC_ENTRY(vkCreateXlibSurfaceKHR,                                                              createXlibSurfaceKHR),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceXlibPresentationSupportKHR,               getPhysicalDeviceXlibPresentationSupportKHR),
-       VK_NULL_FUNC_ENTRY(vkCreateXcbSurfaceKHR,                                                               createXcbSurfaceKHR),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceXcbPresentationSupportKHR,                getPhysicalDeviceXcbPresentationSupportKHR),
-       VK_NULL_FUNC_ENTRY(vkCreateWaylandSurfaceKHR,                                                   createWaylandSurfaceKHR),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceWaylandPresentationSupportKHR,    getPhysicalDeviceWaylandPresentationSupportKHR),
-       VK_NULL_FUNC_ENTRY(vkCreateMirSurfaceKHR,                                                               createMirSurfaceKHR),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceMirPresentationSupportKHR,                getPhysicalDeviceMirPresentationSupportKHR),
-       VK_NULL_FUNC_ENTRY(vkCreateAndroidSurfaceKHR,                                                   createAndroidSurfaceKHR),
-       VK_NULL_FUNC_ENTRY(vkCreateWin32SurfaceKHR,                                                             createWin32SurfaceKHR),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceWin32PresentationSupportKHR,              getPhysicalDeviceWin32PresentationSupportKHR),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceFeatures2KHR,                                             getPhysicalDeviceFeatures2),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceFormatProperties2KHR,                             getPhysicalDeviceFormatProperties2),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceImageFormatProperties2KHR,                getPhysicalDeviceImageFormatProperties2),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceMemoryProperties2KHR,                             getPhysicalDeviceMemoryProperties2),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceProperties2KHR,                                   getPhysicalDeviceProperties2),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceQueueFamilyProperties2KHR,                getPhysicalDeviceQueueFamilyProperties2),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceSparseImageFormatProperties2KHR,  getPhysicalDeviceSparseImageFormatProperties2),
-       VK_NULL_FUNC_ENTRY(vkEnumeratePhysicalDeviceGroupsKHR,                                  enumeratePhysicalDeviceGroups),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceExternalBufferPropertiesKHR,              getPhysicalDeviceExternalBufferProperties),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceExternalSemaphorePropertiesKHR,   getPhysicalDeviceExternalSemaphoreProperties),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceExternalFencePropertiesKHR,               getPhysicalDeviceExternalFenceProperties),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceSurfaceCapabilities2KHR,                  getPhysicalDeviceSurfaceCapabilities2KHR),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceSurfaceFormats2KHR,                               getPhysicalDeviceSurfaceFormats2KHR),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceDisplayProperties2KHR,                    getPhysicalDeviceDisplayProperties2KHR),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceDisplayPlaneProperties2KHR,               getPhysicalDeviceDisplayPlaneProperties2KHR),
-       VK_NULL_FUNC_ENTRY(vkGetDisplayModeProperties2KHR,                                              getDisplayModeProperties2KHR),
-       VK_NULL_FUNC_ENTRY(vkGetDisplayPlaneCapabilities2KHR,                                   getDisplayPlaneCapabilities2KHR),
-       VK_NULL_FUNC_ENTRY(vkCreateDebugReportCallbackEXT,                                              createDebugReportCallbackEXT),
-       VK_NULL_FUNC_ENTRY(vkDestroyDebugReportCallbackEXT,                                             destroyDebugReportCallbackEXT),
-       VK_NULL_FUNC_ENTRY(vkDebugReportMessageEXT,                                                             debugReportMessageEXT),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceExternalImageFormatPropertiesNV,  getPhysicalDeviceExternalImageFormatPropertiesNV),
-       VK_NULL_FUNC_ENTRY(vkCreateViSurfaceNN,                                                                 createViSurfaceNN),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX,   getPhysicalDeviceGeneratedCommandsPropertiesNVX),
-       VK_NULL_FUNC_ENTRY(vkReleaseDisplayEXT,                                                                 releaseDisplayEXT),
-       VK_NULL_FUNC_ENTRY(vkAcquireXlibDisplayEXT,                                                             acquireXlibDisplayEXT),
-       VK_NULL_FUNC_ENTRY(vkGetRandROutputDisplayEXT,                                                  getRandROutputDisplayEXT),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceSurfaceCapabilities2EXT,                  getPhysicalDeviceSurfaceCapabilities2EXT),
-       VK_NULL_FUNC_ENTRY(vkCreateIOSSurfaceMVK,                                                               createIOSSurfaceMVK),
-       VK_NULL_FUNC_ENTRY(vkCreateMacOSSurfaceMVK,                                                             createMacOSSurfaceMVK),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceMultisamplePropertiesEXT,                 getPhysicalDeviceMultisamplePropertiesEXT),
-       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceCooperativeMatrixPropertiesNV,    getPhysicalDeviceCooperativeMatrixPropertiesNV),
+       VK_NULL_FUNC_ENTRY(vkDestroyInstance,                                                                                           destroyInstance),
+       VK_NULL_FUNC_ENTRY(vkEnumeratePhysicalDevices,                                                                          enumeratePhysicalDevices),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceFeatures,                                                                         getPhysicalDeviceFeatures),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceFormatProperties,                                                         getPhysicalDeviceFormatProperties),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceImageFormatProperties,                                            getPhysicalDeviceImageFormatProperties),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceProperties,                                                                       getPhysicalDeviceProperties),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceQueueFamilyProperties,                                            getPhysicalDeviceQueueFamilyProperties),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceMemoryProperties,                                                         getPhysicalDeviceMemoryProperties),
+       VK_NULL_FUNC_ENTRY(vkCreateDevice,                                                                                                      createDevice),
+       VK_NULL_FUNC_ENTRY(vkEnumerateDeviceExtensionProperties,                                                        enumerateDeviceExtensionProperties),
+       VK_NULL_FUNC_ENTRY(vkEnumerateDeviceLayerProperties,                                                            enumerateDeviceLayerProperties),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceSparseImageFormatProperties,                                      getPhysicalDeviceSparseImageFormatProperties),
+       VK_NULL_FUNC_ENTRY(vkEnumeratePhysicalDeviceGroups,                                                                     enumeratePhysicalDeviceGroups),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceFeatures2,                                                                        getPhysicalDeviceFeatures2),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceProperties2,                                                                      getPhysicalDeviceProperties2),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceFormatProperties2,                                                        getPhysicalDeviceFormatProperties2),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceImageFormatProperties2,                                           getPhysicalDeviceImageFormatProperties2),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceQueueFamilyProperties2,                                           getPhysicalDeviceQueueFamilyProperties2),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceMemoryProperties2,                                                        getPhysicalDeviceMemoryProperties2),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceSparseImageFormatProperties2,                                     getPhysicalDeviceSparseImageFormatProperties2),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceExternalBufferProperties,                                         getPhysicalDeviceExternalBufferProperties),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceExternalFenceProperties,                                          getPhysicalDeviceExternalFenceProperties),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceExternalSemaphoreProperties,                                      getPhysicalDeviceExternalSemaphoreProperties),
+       VK_NULL_FUNC_ENTRY(vkDestroySurfaceKHR,                                                                                         destroySurfaceKHR),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceSurfaceSupportKHR,                                                        getPhysicalDeviceSurfaceSupportKHR),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceSurfaceCapabilitiesKHR,                                           getPhysicalDeviceSurfaceCapabilitiesKHR),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceSurfaceFormatsKHR,                                                        getPhysicalDeviceSurfaceFormatsKHR),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceSurfacePresentModesKHR,                                           getPhysicalDeviceSurfacePresentModesKHR),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDevicePresentRectanglesKHR,                                                     getPhysicalDevicePresentRectanglesKHR),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceDisplayPropertiesKHR,                                                     getPhysicalDeviceDisplayPropertiesKHR),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceDisplayPlanePropertiesKHR,                                        getPhysicalDeviceDisplayPlanePropertiesKHR),
+       VK_NULL_FUNC_ENTRY(vkGetDisplayPlaneSupportedDisplaysKHR,                                                       getDisplayPlaneSupportedDisplaysKHR),
+       VK_NULL_FUNC_ENTRY(vkGetDisplayModePropertiesKHR,                                                                       getDisplayModePropertiesKHR),
+       VK_NULL_FUNC_ENTRY(vkCreateDisplayModeKHR,                                                                                      createDisplayModeKHR),
+       VK_NULL_FUNC_ENTRY(vkGetDisplayPlaneCapabilitiesKHR,                                                            getDisplayPlaneCapabilitiesKHR),
+       VK_NULL_FUNC_ENTRY(vkCreateDisplayPlaneSurfaceKHR,                                                                      createDisplayPlaneSurfaceKHR),
+       VK_NULL_FUNC_ENTRY(vkCreateXlibSurfaceKHR,                                                                                      createXlibSurfaceKHR),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceXlibPresentationSupportKHR,                                       getPhysicalDeviceXlibPresentationSupportKHR),
+       VK_NULL_FUNC_ENTRY(vkCreateXcbSurfaceKHR,                                                                                       createXcbSurfaceKHR),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceXcbPresentationSupportKHR,                                        getPhysicalDeviceXcbPresentationSupportKHR),
+       VK_NULL_FUNC_ENTRY(vkCreateWaylandSurfaceKHR,                                                                           createWaylandSurfaceKHR),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceWaylandPresentationSupportKHR,                            getPhysicalDeviceWaylandPresentationSupportKHR),
+       VK_NULL_FUNC_ENTRY(vkCreateMirSurfaceKHR,                                                                                       createMirSurfaceKHR),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceMirPresentationSupportKHR,                                        getPhysicalDeviceMirPresentationSupportKHR),
+       VK_NULL_FUNC_ENTRY(vkCreateAndroidSurfaceKHR,                                                                           createAndroidSurfaceKHR),
+       VK_NULL_FUNC_ENTRY(vkCreateWin32SurfaceKHR,                                                                                     createWin32SurfaceKHR),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceWin32PresentationSupportKHR,                                      getPhysicalDeviceWin32PresentationSupportKHR),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceFeatures2KHR,                                                                     getPhysicalDeviceFeatures2),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceFormatProperties2KHR,                                                     getPhysicalDeviceFormatProperties2),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceImageFormatProperties2KHR,                                        getPhysicalDeviceImageFormatProperties2),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceMemoryProperties2KHR,                                                     getPhysicalDeviceMemoryProperties2),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceProperties2KHR,                                                           getPhysicalDeviceProperties2),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceQueueFamilyProperties2KHR,                                        getPhysicalDeviceQueueFamilyProperties2),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceSparseImageFormatProperties2KHR,                          getPhysicalDeviceSparseImageFormatProperties2),
+       VK_NULL_FUNC_ENTRY(vkEnumeratePhysicalDeviceGroupsKHR,                                                          enumeratePhysicalDeviceGroups),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceExternalBufferPropertiesKHR,                                      getPhysicalDeviceExternalBufferProperties),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceExternalSemaphorePropertiesKHR,                           getPhysicalDeviceExternalSemaphoreProperties),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceExternalFencePropertiesKHR,                                       getPhysicalDeviceExternalFenceProperties),
+       VK_NULL_FUNC_ENTRY(vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR,     enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR,                     getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceSurfaceCapabilities2KHR,                                          getPhysicalDeviceSurfaceCapabilities2KHR),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceSurfaceFormats2KHR,                                                       getPhysicalDeviceSurfaceFormats2KHR),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceDisplayProperties2KHR,                                            getPhysicalDeviceDisplayProperties2KHR),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceDisplayPlaneProperties2KHR,                                       getPhysicalDeviceDisplayPlaneProperties2KHR),
+       VK_NULL_FUNC_ENTRY(vkGetDisplayModeProperties2KHR,                                                                      getDisplayModeProperties2KHR),
+       VK_NULL_FUNC_ENTRY(vkGetDisplayPlaneCapabilities2KHR,                                                           getDisplayPlaneCapabilities2KHR),
+       VK_NULL_FUNC_ENTRY(vkCreateDebugReportCallbackEXT,                                                                      createDebugReportCallbackEXT),
+       VK_NULL_FUNC_ENTRY(vkDestroyDebugReportCallbackEXT,                                                                     destroyDebugReportCallbackEXT),
+       VK_NULL_FUNC_ENTRY(vkDebugReportMessageEXT,                                                                                     debugReportMessageEXT),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceExternalImageFormatPropertiesNV,                          getPhysicalDeviceExternalImageFormatPropertiesNV),
+       VK_NULL_FUNC_ENTRY(vkCreateViSurfaceNN,                                                                                         createViSurfaceNN),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX,                           getPhysicalDeviceGeneratedCommandsPropertiesNVX),
+       VK_NULL_FUNC_ENTRY(vkReleaseDisplayEXT,                                                                                         releaseDisplayEXT),
+       VK_NULL_FUNC_ENTRY(vkAcquireXlibDisplayEXT,                                                                                     acquireXlibDisplayEXT),
+       VK_NULL_FUNC_ENTRY(vkGetRandROutputDisplayEXT,                                                                          getRandROutputDisplayEXT),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceSurfaceCapabilities2EXT,                                          getPhysicalDeviceSurfaceCapabilities2EXT),
+       VK_NULL_FUNC_ENTRY(vkCreateIOSSurfaceMVK,                                                                                       createIOSSurfaceMVK),
+       VK_NULL_FUNC_ENTRY(vkCreateMacOSSurfaceMVK,                                                                                     createMacOSSurfaceMVK),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceMultisamplePropertiesEXT,                                         getPhysicalDeviceMultisamplePropertiesEXT),
+       VK_NULL_FUNC_ENTRY(vkGetPhysicalDeviceCooperativeMatrixPropertiesNV,                            getPhysicalDeviceCooperativeMatrixPropertiesNV),
 };
 
 static const tcu::StaticFunctionLibrary::Entry s_deviceFunctions[] =
@@ -2161,6 +2191,8 @@ static const tcu::StaticFunctionLibrary::Entry s_deviceFunctions[] =
        VK_NULL_FUNC_ENTRY(vkGetFenceWin32HandleKHR,                                    getFenceWin32HandleKHR),
        VK_NULL_FUNC_ENTRY(vkImportFenceFdKHR,                                                  importFenceFdKHR),
        VK_NULL_FUNC_ENTRY(vkGetFenceFdKHR,                                                             getFenceFdKHR),
+       VK_NULL_FUNC_ENTRY(vkAcquireProfilingLockKHR,                                   acquireProfilingLockKHR),
+       VK_NULL_FUNC_ENTRY(vkReleaseProfilingLockKHR,                                   releaseProfilingLockKHR),
        VK_NULL_FUNC_ENTRY(vkGetBufferMemoryRequirements2KHR,                   getBufferMemoryRequirements2),
        VK_NULL_FUNC_ENTRY(vkGetImageMemoryRequirements2KHR,                    getImageMemoryRequirements2),
        VK_NULL_FUNC_ENTRY(vkGetImageSparseMemoryRequirements2KHR,              getImageSparseMemoryRequirements2),
index 99b581e..49b6a8a 100644 (file)
@@ -45,6 +45,9 @@ const char*   getChromaLocationName                                   (VkChromaLocation value);
 const char*    getDescriptorUpdateTemplateTypeName             (VkDescriptorUpdateTemplateType value);
 const char*    getColorSpaceKHRName                                    (VkColorSpaceKHR value);
 const char*    getPresentModeKHRName                                   (VkPresentModeKHR value);
+const char*    getPerformanceCounterUnitKHRName                (VkPerformanceCounterUnitKHR value);
+const char*    getPerformanceCounterScopeKHRName               (VkPerformanceCounterScopeKHR value);
+const char*    getPerformanceCounterStorageKHRName             (VkPerformanceCounterStorageKHR value);
 const char*    getDebugReportObjectTypeEXTName                 (VkDebugReportObjectTypeEXT value);
 const char*    getRasterizationOrderAMDName                    (VkRasterizationOrderAMD value);
 const char*    getValidationCheckEXTName                               (VkValidationCheckEXT value);
@@ -106,6 +109,9 @@ inline tcu::Format::Enum<VkChromaLocation>                                  getChromaLocationStr                                    (VkChrom
 inline tcu::Format::Enum<VkDescriptorUpdateTemplateType>       getDescriptorUpdateTemplateTypeStr              (VkDescriptorUpdateTemplateType value)          { return tcu::Format::Enum<VkDescriptorUpdateTemplateType>(getDescriptorUpdateTemplateTypeName, value);                 }
 inline tcu::Format::Enum<VkColorSpaceKHR>                                      getColorSpaceKHRStr                                             (VkColorSpaceKHR value)                                         { return tcu::Format::Enum<VkColorSpaceKHR>(getColorSpaceKHRName, value);                                                                               }
 inline tcu::Format::Enum<VkPresentModeKHR>                                     getPresentModeKHRStr                                    (VkPresentModeKHR value)                                        { return tcu::Format::Enum<VkPresentModeKHR>(getPresentModeKHRName, value);                                                                             }
+inline tcu::Format::Enum<VkPerformanceCounterUnitKHR>          getPerformanceCounterUnitKHRStr                 (VkPerformanceCounterUnitKHR value)                     { return tcu::Format::Enum<VkPerformanceCounterUnitKHR>(getPerformanceCounterUnitKHRName, value);                               }
+inline tcu::Format::Enum<VkPerformanceCounterScopeKHR>         getPerformanceCounterScopeKHRStr                (VkPerformanceCounterScopeKHR value)            { return tcu::Format::Enum<VkPerformanceCounterScopeKHR>(getPerformanceCounterScopeKHRName, value);                             }
+inline tcu::Format::Enum<VkPerformanceCounterStorageKHR>       getPerformanceCounterStorageKHRStr              (VkPerformanceCounterStorageKHR value)          { return tcu::Format::Enum<VkPerformanceCounterStorageKHR>(getPerformanceCounterStorageKHRName, value);                 }
 inline tcu::Format::Enum<VkDebugReportObjectTypeEXT>           getDebugReportObjectTypeEXTStr                  (VkDebugReportObjectTypeEXT value)                      { return tcu::Format::Enum<VkDebugReportObjectTypeEXT>(getDebugReportObjectTypeEXTName, value);                                 }
 inline tcu::Format::Enum<VkRasterizationOrderAMD>                      getRasterizationOrderAMDStr                             (VkRasterizationOrderAMD value)                         { return tcu::Format::Enum<VkRasterizationOrderAMD>(getRasterizationOrderAMDName, value);                                               }
 inline tcu::Format::Enum<VkValidationCheckEXT>                         getValidationCheckEXTStr                                (VkValidationCheckEXT value)                            { return tcu::Format::Enum<VkValidationCheckEXT>(getValidationCheckEXTName, value);                                                             }
@@ -167,6 +173,9 @@ inline std::ostream&        operator<<      (std::ostream& s, VkChromaLocation value)                                       {
 inline std::ostream&   operator<<      (std::ostream& s, VkDescriptorUpdateTemplateType value)         { return s << getDescriptorUpdateTemplateTypeStr(value);        }
 inline std::ostream&   operator<<      (std::ostream& s, VkColorSpaceKHR value)                                        { return s << getColorSpaceKHRStr(value);                                       }
 inline std::ostream&   operator<<      (std::ostream& s, VkPresentModeKHR value)                                       { return s << getPresentModeKHRStr(value);                                      }
+inline std::ostream&   operator<<      (std::ostream& s, VkPerformanceCounterUnitKHR value)            { return s << getPerformanceCounterUnitKHRStr(value);           }
+inline std::ostream&   operator<<      (std::ostream& s, VkPerformanceCounterScopeKHR value)           { return s << getPerformanceCounterScopeKHRStr(value);          }
+inline std::ostream&   operator<<      (std::ostream& s, VkPerformanceCounterStorageKHR value)         { return s << getPerformanceCounterStorageKHRStr(value);        }
 inline std::ostream&   operator<<      (std::ostream& s, VkDebugReportObjectTypeEXT value)                     { return s << getDebugReportObjectTypeEXTStr(value);            }
 inline std::ostream&   operator<<      (std::ostream& s, VkRasterizationOrderAMD value)                        { return s << getRasterizationOrderAMDStr(value);                       }
 inline std::ostream&   operator<<      (std::ostream& s, VkValidationCheckEXT value)                           { return s << getValidationCheckEXTStr(value);                          }
@@ -234,6 +243,7 @@ tcu::Format::Bitfield<32>   getCompositeAlphaFlagsKHRStr                                                    (VkCompositeAlphaFl
 tcu::Format::Bitfield<32>      getSwapchainCreateFlagsKHRStr                                                   (VkSwapchainCreateFlagsKHR value);
 tcu::Format::Bitfield<32>      getDeviceGroupPresentModeFlagsKHRStr                                    (VkDeviceGroupPresentModeFlagsKHR value);
 tcu::Format::Bitfield<32>      getDisplayPlaneAlphaFlagsKHRStr                                                 (VkDisplayPlaneAlphaFlagsKHR value);
+tcu::Format::Bitfield<32>      getPerformanceCounterDescriptionFlagsKHRStr                             (VkPerformanceCounterDescriptionFlagsKHR value);
 tcu::Format::Bitfield<32>      getResolveModeFlagsKHRStr                                                               (VkResolveModeFlagsKHR value);
 tcu::Format::Bitfield<32>      getDebugReportFlagsEXTStr                                                               (VkDebugReportFlagsEXT value);
 tcu::Format::Bitfield<32>      getExternalMemoryHandleTypeFlagsNVStr                                   (VkExternalMemoryHandleTypeFlagsNV value);
@@ -277,6 +287,7 @@ tcu::Format::Bitfield<32>   getWaylandSurfaceCreateFlagsKHRStr                                              (VkWaylandSurf
 tcu::Format::Bitfield<32>      getMirSurfaceCreateFlagsKHRStr                                                  (VkMirSurfaceCreateFlagsKHR value);
 tcu::Format::Bitfield<32>      getAndroidSurfaceCreateFlagsKHRStr                                              (VkAndroidSurfaceCreateFlagsKHR value);
 tcu::Format::Bitfield<32>      getWin32SurfaceCreateFlagsKHRStr                                                (VkWin32SurfaceCreateFlagsKHR value);
+tcu::Format::Bitfield<32>      getAcquireProfilingLockFlagsKHRStr                                              (VkAcquireProfilingLockFlagsKHR value);
 tcu::Format::Bitfield<32>      getViSurfaceCreateFlagsNNStr                                                    (VkViSurfaceCreateFlagsNN value);
 tcu::Format::Bitfield<32>      getPipelineViewportSwizzleStateCreateFlagsNVStr                 (VkPipelineViewportSwizzleStateCreateFlagsNV value);
 tcu::Format::Bitfield<32>      getPipelineDiscardRectangleStateCreateFlagsEXTStr               (VkPipelineDiscardRectangleStateCreateFlagsEXT value);
@@ -523,6 +534,14 @@ std::ostream&      operator<<      (std::ostream& s, const VkExportFenceWin32HandleInfoKHR
 std::ostream&  operator<<      (std::ostream& s, const VkFenceGetWin32HandleInfoKHR& value);
 std::ostream&  operator<<      (std::ostream& s, const VkImportFenceFdInfoKHR& value);
 std::ostream&  operator<<      (std::ostream& s, const VkFenceGetFdInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDevicePerformanceCounterFeaturesKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDevicePerformanceCounterPropertiesKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPerformanceCounterKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPerformanceCounterDescriptionKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPerformanceQueryCreateInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPerformanceCounterResultKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkAcquireProfilingLockInfoKHR& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPerformanceQuerySubmitInfoKHR& value);
 std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceSurfaceInfo2KHR& value);
 std::ostream&  operator<<      (std::ostream& s, const VkSurfaceCapabilities2KHR& value);
 std::ostream&  operator<<      (std::ostream& s, const VkSurfaceFormat2KHR& value);
index e607746..abeafae 100644 (file)
@@ -311,6 +311,13 @@ const char* getStructureTypeName (VkStructureType value)
                case VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR:                                                                 return "VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR";
                case VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR:                                                                                return "VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR";
                case VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR:                                                                                   return "VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_COUNTER_FEATURES_KHR:                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_COUNTER_FEATURES_KHR";
+               case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_COUNTER_PROPERTIES_KHR:                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_COUNTER_PROPERTIES_KHR";
+               case VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_CREATE_INFO_KHR:                                                               return "VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_CREATE_INFO_KHR";
+               case VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR:                                                               return "VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR";
+               case VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR:                                                                 return "VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR";
+               case VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR:                                                                                 return "VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR";
+               case VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR:                                                             return "VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR";
                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR:                                                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR";
                case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR:                                                                              return "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR";
                case VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR:                                                                                    return "VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR";
@@ -673,10 +680,11 @@ const char* getQueryTypeName (VkQueryType value)
 {
        switch (value)
        {
-               case VK_QUERY_TYPE_OCCLUSION:                   return "VK_QUERY_TYPE_OCCLUSION";
-               case VK_QUERY_TYPE_PIPELINE_STATISTICS: return "VK_QUERY_TYPE_PIPELINE_STATISTICS";
-               case VK_QUERY_TYPE_TIMESTAMP:                   return "VK_QUERY_TYPE_TIMESTAMP";
-               default:                                                                return DE_NULL;
+               case VK_QUERY_TYPE_OCCLUSION:                           return "VK_QUERY_TYPE_OCCLUSION";
+               case VK_QUERY_TYPE_PIPELINE_STATISTICS:         return "VK_QUERY_TYPE_PIPELINE_STATISTICS";
+               case VK_QUERY_TYPE_TIMESTAMP:                           return "VK_QUERY_TYPE_TIMESTAMP";
+               case VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR:       return "VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR";
+               default:                                                                        return DE_NULL;
        }
 }
 
@@ -1227,6 +1235,50 @@ const char* getPresentModeKHRName (VkPresentModeKHR value)
        }
 }
 
+const char* getPerformanceCounterUnitKHRName (VkPerformanceCounterUnitKHR value)
+{
+       switch (value)
+       {
+               case VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR:                   return "VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR";
+               case VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR:                return "VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR";
+               case VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR:               return "VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR";
+               case VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR:                             return "VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR";
+               case VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR:  return "VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR";
+               case VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR:                    return "VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR";
+               case VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR:                             return "VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR";
+               case VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR:                             return "VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR";
+               case VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR:                              return "VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR";
+               case VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR:                             return "VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR";
+               case VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR:                    return "VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR";
+               default:                                                                                                return DE_NULL;
+       }
+}
+
+const char* getPerformanceCounterScopeKHRName (VkPerformanceCounterScopeKHR value)
+{
+       switch (value)
+       {
+               case VK_QUERY_SCOPE_COMMAND_BUFFER_KHR: return "VK_QUERY_SCOPE_COMMAND_BUFFER_KHR";
+               case VK_QUERY_SCOPE_RENDER_PASS_KHR:    return "VK_QUERY_SCOPE_RENDER_PASS_KHR";
+               case VK_QUERY_SCOPE_COMMAND_KHR:                return "VK_QUERY_SCOPE_COMMAND_KHR";
+               default:                                                                return DE_NULL;
+       }
+}
+
+const char* getPerformanceCounterStorageKHRName (VkPerformanceCounterStorageKHR value)
+{
+       switch (value)
+       {
+               case VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR:          return "VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR";
+               case VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR:          return "VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR";
+               case VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR:         return "VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR";
+               case VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR:         return "VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR";
+               case VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR:        return "VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR";
+               case VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR:        return "VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR";
+               default:                                                                                        return DE_NULL;
+       }
+}
+
 const char* getDebugReportObjectTypeEXTName (VkDebugReportObjectTypeEXT value)
 {
        switch (value)
@@ -2108,6 +2160,16 @@ tcu::Format::Bitfield<32> getDisplayPlaneAlphaFlagsKHRStr (VkDisplayPlaneAlphaFl
        return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 }
 
+tcu::Format::Bitfield<32> getPerformanceCounterDescriptionFlagsKHRStr (VkPerformanceCounterDescriptionFlagsKHR value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR,      "VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR"),
+               tcu::Format::BitDesc(VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR,      "VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR"),
+       };
+       return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
+}
+
 tcu::Format::Bitfield<32> getResolveModeFlagsKHRStr (VkResolveModeFlagsKHR value)
 {
        static const tcu::Format::BitDesc s_desc[] =
@@ -2379,6 +2441,11 @@ tcu::Format::Bitfield<32> getWin32SurfaceCreateFlagsKHRStr (VkWin32SurfaceCreate
        return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
 }
 
+tcu::Format::Bitfield<32> getAcquireProfilingLockFlagsKHRStr (VkAcquireProfilingLockFlagsKHR value)
+{
+       return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
+}
+
 tcu::Format::Bitfield<32> getViSurfaceCreateFlagsNNStr (VkViSurfaceCreateFlagsNN value)
 {
        return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
@@ -5438,6 +5505,99 @@ std::ostream& operator<< (std::ostream& s, const VkFenceGetFdInfoKHR& value)
        return s;
 }
 
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePerformanceCounterFeaturesKHR& value)
+{
+       s << "VkPhysicalDevicePerformanceCounterFeaturesKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tperformanceCounterQueryPools = " << value.performanceCounterQueryPools << '\n';
+       s << "\tperformanceCounterMultipleQueryPools = " << value.performanceCounterMultipleQueryPools << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePerformanceCounterPropertiesKHR& value)
+{
+       s << "VkPhysicalDevicePerformanceCounterPropertiesKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tallowCommandBufferQueryCopies = " << value.allowCommandBufferQueryCopies << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPerformanceCounterKHR& value)
+{
+       s << "VkPerformanceCounterKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tunit = " << value.unit << '\n';
+       s << "\tscope = " << value.scope << '\n';
+       s << "\tstorage = " << value.storage << '\n';
+       s << "\tuuid = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.uuid)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.uuid))) << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPerformanceCounterDescriptionKHR& value)
+{
+       s << "VkPerformanceCounterDescriptionKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tflags = " << getPerformanceCounterDescriptionFlagsKHRStr(value.flags) << '\n';
+       s << "\tname = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.name)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.name))) << '\n';
+       s << "\tcategory = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.category)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.category))) << '\n';
+       s << "\tdescription = " << (const char*)value.description << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPerformanceQueryCreateInfoKHR& value)
+{
+       s << "VkPerformanceQueryCreateInfoKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tqueueFamilyIndex = " << value.queueFamilyIndex << '\n';
+       s << "\tcounterIndexCount = " << value.counterIndexCount << '\n';
+       s << "\tpCounterIndices = " << value.pCounterIndices << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPerformanceCounterResultKHR& value)
+{
+       s << "VkPerformanceCounterResultKHR = {\n";
+       s << "\tint32 = " << value.int32 << '\n';
+       s << "\tint64 = " << value.int64 << '\n';
+       s << "\tuint32 = " << value.uint32 << '\n';
+       s << "\tuint64 = " << value.uint64 << '\n';
+       s << "\tfloat32 = " << value.float32 << '\n';
+       s << "\tfloat64 = " << value.float64 << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkAcquireProfilingLockInfoKHR& value)
+{
+       s << "VkAcquireProfilingLockInfoKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tflags = " << getAcquireProfilingLockFlagsKHRStr(value.flags) << '\n';
+       s << "\ttimeout = " << value.timeout << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPerformanceQuerySubmitInfoKHR& value)
+{
+       s << "VkPerformanceQuerySubmitInfoKHR = {\n";
+       s << "\tsType = " << value.sType << '\n';
+       s << "\tpNext = " << value.pNext << '\n';
+       s << "\tcounterPassIndex = " << value.counterPassIndex << '\n';
+       s << '}';
+       return s;
+}
+
 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSurfaceInfo2KHR& value)
 {
        s << "VkPhysicalDeviceSurfaceInfo2KHR = {\n";
index 8719f8d..34b34ab 100644 (file)
@@ -2307,6 +2307,75 @@ struct VkFenceGetFdInfoKHR
        VkExternalFenceHandleTypeFlagBits       handleType;
 };
 
+struct VkPhysicalDevicePerformanceCounterFeaturesKHR
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                performanceCounterQueryPools;
+       VkBool32                performanceCounterMultipleQueryPools;
+};
+
+struct VkPhysicalDevicePerformanceCounterPropertiesKHR
+{
+       VkStructureType sType;
+       void*                   pNext;
+       VkBool32                allowCommandBufferQueryCopies;
+};
+
+struct VkPerformanceCounterKHR
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       VkPerformanceCounterUnitKHR             unit;
+       VkPerformanceCounterScopeKHR    scope;
+       VkPerformanceCounterStorageKHR  storage;
+       deUint8                                                 uuid[VK_UUID_SIZE];
+};
+
+struct VkPerformanceCounterDescriptionKHR
+{
+       VkStructureType                                                 sType;
+       const void*                                                             pNext;
+       VkPerformanceCounterDescriptionFlagsKHR flags;
+       char                                                                    name[VK_MAX_DESCRIPTION_SIZE];
+       char                                                                    category[VK_MAX_DESCRIPTION_SIZE];
+       char                                                                    description[VK_MAX_DESCRIPTION_SIZE];
+};
+
+struct VkPerformanceQueryCreateInfoKHR
+{
+       VkStructureType sType;
+       const void*             pNext;
+       deUint32                queueFamilyIndex;
+       deUint32                counterIndexCount;
+       const deUint32* pCounterIndices;
+};
+
+union VkPerformanceCounterResultKHR
+{
+       deInt32         int32;
+       deInt64         int64;
+       deUint32        uint32;
+       deUint64        uint64;
+       float           float32;
+       double          float64;
+};
+
+struct VkAcquireProfilingLockInfoKHR
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       VkAcquireProfilingLockFlagsKHR  flags;
+       deUint64                                                timeout;
+};
+
+struct VkPerformanceQuerySubmitInfoKHR
+{
+       VkStructureType sType;
+       const void*             pNext;
+       deUint32                counterPassIndex;
+};
+
 struct VkPhysicalDeviceSurfaceInfo2KHR
 {
        VkStructureType sType;
index 1e74426..c872700 100644 (file)
@@ -166,6 +166,8 @@ virtual VkResult                    importFenceWin32HandleKHR                                       (VkDevice device, const VkImpor
 virtual VkResult                       getFenceWin32HandleKHR                                          (VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, pt::Win32Handle* pHandle) const = 0;
 virtual VkResult                       importFenceFdKHR                                                        (VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo) const = 0;
 virtual VkResult                       getFenceFdKHR                                                           (VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd) const = 0;
+virtual VkResult                       acquireProfilingLockKHR                                         (VkDevice device, const VkAcquireProfilingLockInfoKHR* pInfo) const = 0;
+virtual void                           releaseProfilingLockKHR                                         (VkDevice device) const = 0;
 virtual VkResult                       debugMarkerSetObjectTagEXT                                      (VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo) const = 0;
 virtual VkResult                       debugMarkerSetObjectNameEXT                                     (VkDevice device, const VkDebugMarkerObjectNameInfoEXT* pNameInfo) const = 0;
 virtual void                           cmdDebugMarkerBeginEXT                                          (VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) const = 0;
index 5ca2c68..6ca60b6 100644 (file)
@@ -1,70 +1,72 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  */
-virtual void           destroyInstance                                                                         (VkInstance instance, const VkAllocationCallbacks* pAllocator) const = 0;
-virtual VkResult       enumeratePhysicalDevices                                                        (VkInstance instance, deUint32* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices) const = 0;
-virtual void           getPhysicalDeviceFeatures                                                       (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures) const = 0;
-virtual void           getPhysicalDeviceFormatProperties                                       (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties) const = 0;
-virtual VkResult       getPhysicalDeviceImageFormatProperties                          (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties) const = 0;
-virtual void           getPhysicalDeviceProperties                                                     (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties) const = 0;
-virtual void           getPhysicalDeviceQueueFamilyProperties                          (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties) const = 0;
-virtual void           getPhysicalDeviceMemoryProperties                                       (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties) const = 0;
-virtual VkResult       createDevice                                                                            (VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice) const = 0;
-virtual VkResult       enumerateDeviceExtensionProperties                                      (VkPhysicalDevice physicalDevice, const char* pLayerName, deUint32* pPropertyCount, VkExtensionProperties* pProperties) const = 0;
-virtual VkResult       enumerateDeviceLayerProperties                                          (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkLayerProperties* pProperties) const = 0;
-virtual void           getPhysicalDeviceSparseImageFormatProperties            (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, deUint32* pPropertyCount, VkSparseImageFormatProperties* pProperties) const = 0;
-virtual VkResult       enumeratePhysicalDeviceGroups                                           (VkInstance instance, deUint32* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties) const = 0;
-virtual void           getPhysicalDeviceFeatures2                                                      (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures) const = 0;
-virtual void           getPhysicalDeviceProperties2                                            (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties) const = 0;
-virtual void           getPhysicalDeviceFormatProperties2                                      (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties) const = 0;
-virtual VkResult       getPhysicalDeviceImageFormatProperties2                         (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties) const = 0;
-virtual void           getPhysicalDeviceQueueFamilyProperties2                         (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties) const = 0;
-virtual void           getPhysicalDeviceMemoryProperties2                                      (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties) const = 0;
-virtual void           getPhysicalDeviceSparseImageFormatProperties2           (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, deUint32* pPropertyCount, VkSparseImageFormatProperties2* pProperties) const = 0;
-virtual void           getPhysicalDeviceExternalBufferProperties                       (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties) const = 0;
-virtual void           getPhysicalDeviceExternalFenceProperties                        (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties) const = 0;
-virtual void           getPhysicalDeviceExternalSemaphoreProperties            (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties) const = 0;
-virtual void           destroySurfaceKHR                                                                       (VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator) const = 0;
-virtual VkResult       getPhysicalDeviceSurfaceSupportKHR                                      (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported) const = 0;
-virtual VkResult       getPhysicalDeviceSurfaceCapabilitiesKHR                         (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities) const = 0;
-virtual VkResult       getPhysicalDeviceSurfaceFormatsKHR                                      (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats) const = 0;
-virtual VkResult       getPhysicalDeviceSurfacePresentModesKHR                         (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pPresentModeCount, VkPresentModeKHR* pPresentModes) const = 0;
-virtual VkResult       getPhysicalDevicePresentRectanglesKHR                           (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pRectCount, VkRect2D* pRects) const = 0;
-virtual VkResult       getPhysicalDeviceDisplayPropertiesKHR                           (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPropertiesKHR* pProperties) const = 0;
-virtual VkResult       getPhysicalDeviceDisplayPlanePropertiesKHR                      (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties) const = 0;
-virtual VkResult       getDisplayPlaneSupportedDisplaysKHR                                     (VkPhysicalDevice physicalDevice, deUint32 planeIndex, deUint32* pDisplayCount, VkDisplayKHR* pDisplays) const = 0;
-virtual VkResult       getDisplayModePropertiesKHR                                                     (VkPhysicalDevice physicalDevice, VkDisplayKHR display, deUint32* pPropertyCount, VkDisplayModePropertiesKHR* pProperties) const = 0;
-virtual VkResult       createDisplayModeKHR                                                            (VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode) const = 0;
-virtual VkResult       getDisplayPlaneCapabilitiesKHR                                          (VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, deUint32 planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities) const = 0;
-virtual VkResult       createDisplayPlaneSurfaceKHR                                            (VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
-virtual VkResult       createXlibSurfaceKHR                                                            (VkInstance instance, const VkXlibSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
-virtual VkBool32       getPhysicalDeviceXlibPresentationSupportKHR                     (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::XlibDisplayPtr dpy, pt::XlibVisualID visualID) const = 0;
-virtual VkResult       createXcbSurfaceKHR                                                                     (VkInstance instance, const VkXcbSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
-virtual VkBool32       getPhysicalDeviceXcbPresentationSupportKHR                      (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::XcbConnectionPtr connection, pt::XcbVisualid visual_id) const = 0;
-virtual VkResult       createWaylandSurfaceKHR                                                         (VkInstance instance, const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
-virtual VkBool32       getPhysicalDeviceWaylandPresentationSupportKHR          (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::WaylandDisplayPtr display) const = 0;
-virtual VkResult       createMirSurfaceKHR                                                                     (VkInstance instance, const VkMirSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
-virtual VkBool32       getPhysicalDeviceMirPresentationSupportKHR                      (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::MirConnectionPtr connection) const = 0;
-virtual VkResult       createAndroidSurfaceKHR                                                         (VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
-virtual VkResult       createWin32SurfaceKHR                                                           (VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
-virtual VkBool32       getPhysicalDeviceWin32PresentationSupportKHR            (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex) const = 0;
-virtual VkResult       getPhysicalDeviceSurfaceCapabilities2KHR                        (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities) const = 0;
-virtual VkResult       getPhysicalDeviceSurfaceFormats2KHR                                     (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, deUint32* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats) const = 0;
-virtual VkResult       getPhysicalDeviceDisplayProperties2KHR                          (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayProperties2KHR* pProperties) const = 0;
-virtual VkResult       getPhysicalDeviceDisplayPlaneProperties2KHR                     (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPlaneProperties2KHR* pProperties) const = 0;
-virtual VkResult       getDisplayModeProperties2KHR                                            (VkPhysicalDevice physicalDevice, VkDisplayKHR display, deUint32* pPropertyCount, VkDisplayModeProperties2KHR* pProperties) const = 0;
-virtual VkResult       getDisplayPlaneCapabilities2KHR                                         (VkPhysicalDevice physicalDevice, const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR* pCapabilities) const = 0;
-virtual VkResult       createDebugReportCallbackEXT                                            (VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback) const = 0;
-virtual void           destroyDebugReportCallbackEXT                                           (VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator) const = 0;
-virtual void           debugReportMessageEXT                                                           (VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, deUint64 object, deUintptr location, deInt32 messageCode, const char* pLayerPrefix, const char* pMessage) const = 0;
-virtual VkResult       getPhysicalDeviceExternalImageFormatPropertiesNV        (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties) const = 0;
-virtual VkResult       createViSurfaceNN                                                                       (VkInstance instance, const VkViSurfaceCreateInfoNN* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
-virtual void           getPhysicalDeviceGeneratedCommandsPropertiesNVX         (VkPhysicalDevice physicalDevice, VkDeviceGeneratedCommandsFeaturesNVX* pFeatures, VkDeviceGeneratedCommandsLimitsNVX* pLimits) const = 0;
-virtual VkResult       releaseDisplayEXT                                                                       (VkPhysicalDevice physicalDevice, VkDisplayKHR display) const = 0;
-virtual VkResult       acquireXlibDisplayEXT                                                           (VkPhysicalDevice physicalDevice, pt::XlibDisplayPtr dpy, VkDisplayKHR display) const = 0;
-virtual VkResult       getRandROutputDisplayEXT                                                        (VkPhysicalDevice physicalDevice, pt::XlibDisplayPtr dpy, pt::RROutput rrOutput, VkDisplayKHR* pDisplay) const = 0;
-virtual VkResult       getPhysicalDeviceSurfaceCapabilities2EXT                        (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities) const = 0;
-virtual VkResult       createIOSSurfaceMVK                                                                     (VkInstance instance, const VkIOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
-virtual VkResult       createMacOSSurfaceMVK                                                           (VkInstance instance, const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
-virtual void           getPhysicalDeviceMultisamplePropertiesEXT                       (VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties) const = 0;
-virtual VkResult       getPhysicalDeviceCooperativeMatrixPropertiesNV          (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkCooperativeMatrixPropertiesNV* pProperties) const = 0;
+virtual void           destroyInstance                                                                                                 (VkInstance instance, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual VkResult       enumeratePhysicalDevices                                                                                (VkInstance instance, deUint32* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices) const = 0;
+virtual void           getPhysicalDeviceFeatures                                                                               (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures) const = 0;
+virtual void           getPhysicalDeviceFormatProperties                                                               (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties) const = 0;
+virtual VkResult       getPhysicalDeviceImageFormatProperties                                                  (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties) const = 0;
+virtual void           getPhysicalDeviceProperties                                                                             (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties) const = 0;
+virtual void           getPhysicalDeviceQueueFamilyProperties                                                  (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties) const = 0;
+virtual void           getPhysicalDeviceMemoryProperties                                                               (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties) const = 0;
+virtual VkResult       createDevice                                                                                                    (VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice) const = 0;
+virtual VkResult       enumerateDeviceExtensionProperties                                                              (VkPhysicalDevice physicalDevice, const char* pLayerName, deUint32* pPropertyCount, VkExtensionProperties* pProperties) const = 0;
+virtual VkResult       enumerateDeviceLayerProperties                                                                  (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkLayerProperties* pProperties) const = 0;
+virtual void           getPhysicalDeviceSparseImageFormatProperties                                    (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, deUint32* pPropertyCount, VkSparseImageFormatProperties* pProperties) const = 0;
+virtual VkResult       enumeratePhysicalDeviceGroups                                                                   (VkInstance instance, deUint32* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties) const = 0;
+virtual void           getPhysicalDeviceFeatures2                                                                              (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures) const = 0;
+virtual void           getPhysicalDeviceProperties2                                                                    (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties) const = 0;
+virtual void           getPhysicalDeviceFormatProperties2                                                              (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties) const = 0;
+virtual VkResult       getPhysicalDeviceImageFormatProperties2                                                 (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties) const = 0;
+virtual void           getPhysicalDeviceQueueFamilyProperties2                                                 (VkPhysicalDevice physicalDevice, deUint32* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties) const = 0;
+virtual void           getPhysicalDeviceMemoryProperties2                                                              (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties) const = 0;
+virtual void           getPhysicalDeviceSparseImageFormatProperties2                                   (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, deUint32* pPropertyCount, VkSparseImageFormatProperties2* pProperties) const = 0;
+virtual void           getPhysicalDeviceExternalBufferProperties                                               (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties) const = 0;
+virtual void           getPhysicalDeviceExternalFenceProperties                                                (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties) const = 0;
+virtual void           getPhysicalDeviceExternalSemaphoreProperties                                    (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties) const = 0;
+virtual void           destroySurfaceKHR                                                                                               (VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual VkResult       getPhysicalDeviceSurfaceSupportKHR                                                              (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported) const = 0;
+virtual VkResult       getPhysicalDeviceSurfaceCapabilitiesKHR                                                 (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities) const = 0;
+virtual VkResult       getPhysicalDeviceSurfaceFormatsKHR                                                              (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats) const = 0;
+virtual VkResult       getPhysicalDeviceSurfacePresentModesKHR                                                 (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pPresentModeCount, VkPresentModeKHR* pPresentModes) const = 0;
+virtual VkResult       getPhysicalDevicePresentRectanglesKHR                                                   (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, deUint32* pRectCount, VkRect2D* pRects) const = 0;
+virtual VkResult       getPhysicalDeviceDisplayPropertiesKHR                                                   (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPropertiesKHR* pProperties) const = 0;
+virtual VkResult       getPhysicalDeviceDisplayPlanePropertiesKHR                                              (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties) const = 0;
+virtual VkResult       getDisplayPlaneSupportedDisplaysKHR                                                             (VkPhysicalDevice physicalDevice, deUint32 planeIndex, deUint32* pDisplayCount, VkDisplayKHR* pDisplays) const = 0;
+virtual VkResult       getDisplayModePropertiesKHR                                                                             (VkPhysicalDevice physicalDevice, VkDisplayKHR display, deUint32* pPropertyCount, VkDisplayModePropertiesKHR* pProperties) const = 0;
+virtual VkResult       createDisplayModeKHR                                                                                    (VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode) const = 0;
+virtual VkResult       getDisplayPlaneCapabilitiesKHR                                                                  (VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, deUint32 planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities) const = 0;
+virtual VkResult       createDisplayPlaneSurfaceKHR                                                                    (VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
+virtual VkResult       createXlibSurfaceKHR                                                                                    (VkInstance instance, const VkXlibSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
+virtual VkBool32       getPhysicalDeviceXlibPresentationSupportKHR                                             (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::XlibDisplayPtr dpy, pt::XlibVisualID visualID) const = 0;
+virtual VkResult       createXcbSurfaceKHR                                                                                             (VkInstance instance, const VkXcbSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
+virtual VkBool32       getPhysicalDeviceXcbPresentationSupportKHR                                              (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::XcbConnectionPtr connection, pt::XcbVisualid visual_id) const = 0;
+virtual VkResult       createWaylandSurfaceKHR                                                                                 (VkInstance instance, const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
+virtual VkBool32       getPhysicalDeviceWaylandPresentationSupportKHR                                  (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::WaylandDisplayPtr display) const = 0;
+virtual VkResult       createMirSurfaceKHR                                                                                             (VkInstance instance, const VkMirSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
+virtual VkBool32       getPhysicalDeviceMirPresentationSupportKHR                                              (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, pt::MirConnectionPtr connection) const = 0;
+virtual VkResult       createAndroidSurfaceKHR                                                                                 (VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
+virtual VkResult       createWin32SurfaceKHR                                                                                   (VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
+virtual VkBool32       getPhysicalDeviceWin32PresentationSupportKHR                                    (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex) const = 0;
+virtual void           enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR   (VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, deUint32* pCounterCount, VkPerformanceCounterKHR* pCounters, VkPerformanceCounterDescriptionKHR* pCounterDescriptions) const = 0;
+virtual void           getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR                   (VkPhysicalDevice physicalDevice, const VkPerformanceQueryCreateInfoKHR* pPerformanceQueryCreateInfo, deUint32* pNumPasses) const = 0;
+virtual VkResult       getPhysicalDeviceSurfaceCapabilities2KHR                                                (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities) const = 0;
+virtual VkResult       getPhysicalDeviceSurfaceFormats2KHR                                                             (VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, deUint32* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats) const = 0;
+virtual VkResult       getPhysicalDeviceDisplayProperties2KHR                                                  (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayProperties2KHR* pProperties) const = 0;
+virtual VkResult       getPhysicalDeviceDisplayPlaneProperties2KHR                                             (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkDisplayPlaneProperties2KHR* pProperties) const = 0;
+virtual VkResult       getDisplayModeProperties2KHR                                                                    (VkPhysicalDevice physicalDevice, VkDisplayKHR display, deUint32* pPropertyCount, VkDisplayModeProperties2KHR* pProperties) const = 0;
+virtual VkResult       getDisplayPlaneCapabilities2KHR                                                                 (VkPhysicalDevice physicalDevice, const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR* pCapabilities) const = 0;
+virtual VkResult       createDebugReportCallbackEXT                                                                    (VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback) const = 0;
+virtual void           destroyDebugReportCallbackEXT                                                                   (VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator) const = 0;
+virtual void           debugReportMessageEXT                                                                                   (VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, deUint64 object, deUintptr location, deInt32 messageCode, const char* pLayerPrefix, const char* pMessage) const = 0;
+virtual VkResult       getPhysicalDeviceExternalImageFormatPropertiesNV                                (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties) const = 0;
+virtual VkResult       createViSurfaceNN                                                                                               (VkInstance instance, const VkViSurfaceCreateInfoNN* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
+virtual void           getPhysicalDeviceGeneratedCommandsPropertiesNVX                                 (VkPhysicalDevice physicalDevice, VkDeviceGeneratedCommandsFeaturesNVX* pFeatures, VkDeviceGeneratedCommandsLimitsNVX* pLimits) const = 0;
+virtual VkResult       releaseDisplayEXT                                                                                               (VkPhysicalDevice physicalDevice, VkDisplayKHR display) const = 0;
+virtual VkResult       acquireXlibDisplayEXT                                                                                   (VkPhysicalDevice physicalDevice, pt::XlibDisplayPtr dpy, VkDisplayKHR display) const = 0;
+virtual VkResult       getRandROutputDisplayEXT                                                                                (VkPhysicalDevice physicalDevice, pt::XlibDisplayPtr dpy, pt::RROutput rrOutput, VkDisplayKHR* pDisplay) const = 0;
+virtual VkResult       getPhysicalDeviceSurfaceCapabilities2EXT                                                (VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities) const = 0;
+virtual VkResult       createIOSSurfaceMVK                                                                                             (VkInstance instance, const VkIOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
+virtual VkResult       createMacOSSurfaceMVK                                                                                   (VkInstance instance, const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) const = 0;
+virtual void           getPhysicalDeviceMultisamplePropertiesEXT                                               (VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties) const = 0;
+virtual VkResult       getPhysicalDeviceCooperativeMatrixPropertiesNV                                  (VkPhysicalDevice physicalDevice, deUint32* pPropertyCount, VkCooperativeMatrixPropertiesNV* pProperties) const = 0;
index 87c0a96..48551cc 100644 (file)
@@ -362,6 +362,13 @@ typedef enum VkStructureType {
     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_COUNTER_FEATURES_KHR = 1000116000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_COUNTER_PROPERTIES_KHR = 1000116001,
+    VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_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,
@@ -725,6 +732,7 @@ typedef enum VkQueryType {
     VK_QUERY_TYPE_OCCLUSION = 0,
     VK_QUERY_TYPE_PIPELINE_STATISTICS = 1,
     VK_QUERY_TYPE_TIMESTAMP = 2,
+    VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000,
     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),
@@ -5961,6 +5969,149 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceFdKHR(
     int*                                        pFd);
 #endif
 
+#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_BEGIN_RANGE_KHR = VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR,
+    VK_PERFORMANCE_COUNTER_UNIT_END_RANGE_KHR = VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR,
+    VK_PERFORMANCE_COUNTER_UNIT_RANGE_SIZE_KHR = (VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR - VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR + 1),
+    VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 0x7FFFFFFF
+} VkPerformanceCounterUnitKHR;
+
+typedef enum VkPerformanceCounterScopeKHR {
+    VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = 0,
+    VK_QUERY_SCOPE_RENDER_PASS_KHR = 1,
+    VK_QUERY_SCOPE_COMMAND_KHR = 2,
+    VK_PERFORMANCE_COUNTER_SCOPE_BEGIN_RANGE_KHR = VK_QUERY_SCOPE_COMMAND_BUFFER_KHR,
+    VK_PERFORMANCE_COUNTER_SCOPE_END_RANGE_KHR = VK_QUERY_SCOPE_COMMAND_KHR,
+    VK_PERFORMANCE_COUNTER_SCOPE_RANGE_SIZE_KHR = (VK_QUERY_SCOPE_COMMAND_KHR - VK_QUERY_SCOPE_COMMAND_BUFFER_KHR + 1),
+    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_BEGIN_RANGE_KHR = VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR,
+    VK_PERFORMANCE_COUNTER_STORAGE_END_RANGE_KHR = VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR,
+    VK_PERFORMANCE_COUNTER_STORAGE_RANGE_SIZE_KHR = (VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR - VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR + 1),
+    VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 0x7FFFFFFF
+} VkPerformanceCounterStorageKHR;
+
+
+typedef enum VkPerformanceCounterDescriptionFlagBitsKHR {
+    VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = 0x00000001,
+    VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = 0x00000002,
+    VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
+} VkPerformanceCounterDescriptionFlagBitsKHR;
+typedef VkFlags VkPerformanceCounterDescriptionFlagsKHR;
+typedef VkFlags VkAcquireProfilingLockFlagsKHR;
+
+typedef struct VkPhysicalDevicePerformanceCounterFeaturesKHR {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           performanceCounterQueryPools;
+    VkBool32           performanceCounterMultipleQueryPools;
+} VkPhysicalDevicePerformanceCounterFeaturesKHR;
+
+typedef struct VkPhysicalDevicePerformanceCounterPropertiesKHR {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           allowCommandBufferQueryCopies;
+} VkPhysicalDevicePerformanceCounterPropertiesKHR;
+
+typedef struct VkPerformanceCounterKHR {
+    VkStructureType                   sType;
+    const void*                       pNext;
+    VkPerformanceCounterUnitKHR       unit;
+    VkPerformanceCounterScopeKHR      scope;
+    VkPerformanceCounterStorageKHR    storage;
+    deUint8                           uuid[VK_UUID_SIZE];
+} VkPerformanceCounterKHR;
+
+typedef struct VkPerformanceCounterDescriptionKHR {
+    VkStructureType                            sType;
+    const 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 VkPerformanceQueryCreateInfoKHR {
+    VkStructureType    sType;
+    const void*        pNext;
+    deUint32           queueFamilyIndex;
+    deUint32           counterIndexCount;
+    const deUint32*    pCounterIndices;
+} VkPerformanceQueryCreateInfoKHR;
+
+typedef union VkPerformanceCounterResultKHR {
+    deInt32     int32;
+    deInt64     int64;
+    deUint32    uint32;
+    deUint64    uint64;
+    float       float32;
+    double      float64;
+} VkPerformanceCounterResultKHR;
+
+typedef struct VkAcquireProfilingLockInfoKHR {
+    VkStructureType                   sType;
+    const void*                       pNext;
+    VkAcquireProfilingLockFlagsKHR    flags;
+    deUint64                          timeout;
+} VkAcquireProfilingLockInfoKHR;
+
+typedef struct VkPerformanceQuerySubmitInfoKHR {
+    VkStructureType    sType;
+    const void*        pNext;
+    deUint32           counterPassIndex;
+} VkPerformanceQuerySubmitInfoKHR;
+
+
+typedef void (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR)(VkPhysicalDevice physicalDevice, deUint32 queueFamilyIndex, deUint32* pCounterCount, VkPerformanceCounterKHR* pCounters, VkPerformanceCounterDescriptionKHR* pCounterDescriptions);
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR)(VkPhysicalDevice physicalDevice, const VkPerformanceQueryCreateInfoKHR* pPerformanceQueryCreateInfo, deUint32* 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 void VKAPI_CALL vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
+    VkPhysicalDevice                            physicalDevice,
+    deUint32                                    queueFamilyIndex,
+    deUint32*                                   pCounterCount,
+    VkPerformanceCounterKHR*                    pCounters,
+    VkPerformanceCounterDescriptionKHR*         pCounterDescriptions);
+
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(
+    VkPhysicalDevice                            physicalDevice,
+    const VkPerformanceQueryCreateInfoKHR*      pPerformanceQueryCreateInfo,
+    deUint32*                                   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
 typedef VkImageViewUsageCreateInfo VkImageViewUsageCreateInfoKHR;
 typedef VkInputAttachmentAspectReference VkInputAttachmentAspectReferenceKHR;
index 4020894..9e0e0ab 100644 (file)
@@ -760,6 +760,7 @@ void checkDeviceExtensions (tcu::ResultCollector& results, const vector<string>&
                "VK_KHR_shader_atomic_int64",
                "VK_KHR_vulkan_memory_model",
                "VK_KHR_swapchain_mutable_format",
+               "VK_KHR_performance_query",
        };
 
        checkKhrExtensions(results, extensions, DE_LENGTH_OF_ARRAY(s_allowedDeviceKhrExtensions), s_allowedDeviceKhrExtensions);
@@ -2653,6 +2654,7 @@ tcu::TestStatus deviceFeatures2 (Context& context)
        const bool khr_8bit_storage                             = checkExtension(properties,"VK_KHR_8bit_storage");
        const bool ext_conditional_rendering    = checkExtension(properties,"VK_EXT_conditional_rendering");
        const bool scalar_block_layout                  = checkExtension(properties,"VK_EXT_scalar_block_layout");
+       const bool performance_counter                  = checkExtension(properties,"VK_KHR_performance_query");
        bool khr_16bit_storage                                  = true;
        bool khr_multiview                                              = true;
        bool deviceProtectedMemory                              = true;
@@ -2676,6 +2678,7 @@ tcu::TestStatus deviceFeatures2 (Context& context)
        VkPhysicalDeviceSamplerYcbcrConversionFeatures          samplerYcbcrConversionFeatures[count];
        VkPhysicalDeviceVariablePointerFeatures                         variablePointerFeatures[count];
        VkPhysicalDeviceScalarBlockLayoutFeaturesEXT            scalarBlockLayoutFeatures[count];
+       VkPhysicalDevicePerformanceCounterFeaturesKHR           performanceCounterFeatures[count];
 
        for (int ndx = 0; ndx < count; ++ndx)
        {
@@ -2687,6 +2690,7 @@ tcu::TestStatus deviceFeatures2 (Context& context)
                deMemset(&samplerYcbcrConversionFeatures[ndx],          0xFF*ndx, sizeof(VkPhysicalDeviceSamplerYcbcrConversionFeatures));
                deMemset(&variablePointerFeatures[ndx],                         0xFF*ndx, sizeof(VkPhysicalDeviceVariablePointerFeatures));
                deMemset(&scalarBlockLayoutFeatures[ndx],                       0xFF*ndx, sizeof(VkPhysicalDeviceScalarBlockLayoutFeaturesEXT));
+               deMemset(&performanceCounterFeatures[ndx],                      0xFF*ndx, sizeof(VkPhysicalDevicePerformanceCounterFeaturesKHR));
 
                device8BitStorageFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR;
                device8BitStorageFeatures[ndx].pNext = &deviceConditionalRenderingFeatures[ndx];
@@ -2710,7 +2714,10 @@ tcu::TestStatus deviceFeatures2 (Context& context)
                variablePointerFeatures[ndx].pNext = &scalarBlockLayoutFeatures[ndx];
 
                scalarBlockLayoutFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT;
-               scalarBlockLayoutFeatures[ndx].pNext = DE_NULL;
+               scalarBlockLayoutFeatures[ndx].pNext = &performanceCounterFeatures[ndx];
+
+               performanceCounterFeatures[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_COUNTER_FEATURES_KHR;
+               performanceCounterFeatures[ndx].pNext = DE_NULL;
 
                deMemset(&extFeatures.features, 0xcd, sizeof(extFeatures.features));
                extFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
@@ -2777,6 +2784,12 @@ tcu::TestStatus deviceFeatures2 (Context& context)
        {
                TCU_FAIL("Mismatch between VkPhysicalDeviceScalarBlockLayoutFeaturesEXT");
        }
+       if (performance_counter &&
+               ((performanceCounterFeatures[0].performanceCounterQueryPools != performanceCounterFeatures[1].performanceCounterQueryPools) ||
+               (performanceCounterFeatures[0].performanceCounterMultipleQueryPools != performanceCounterFeatures[1].performanceCounterMultipleQueryPools)))
+       {
+               TCU_FAIL("Mismatch between VkPhysicalDevicePerformanceCounterFeaturesKHR");
+       }
        if (khr_8bit_storage)
                log << TestLog::Message << device8BitStorageFeatures[0]         << TestLog::EndMessage;
        if (ext_conditional_rendering)
@@ -2793,11 +2806,12 @@ tcu::TestStatus deviceFeatures2 (Context& context)
                log << TestLog::Message << variablePointerFeatures[0]                   << TestLog::EndMessage;
        if (scalar_block_layout)
                log << TestLog::Message << scalarBlockLayoutFeatures[0]                 << TestLog::EndMessage;
+       if (performance_counter)
+               log << TestLog::Message << performanceCounterFeatures[0]                << TestLog::EndMessage;
 
        return tcu::TestStatus::pass("Querying device features succeeded");
 }
 
-
 tcu::TestStatus deviceProperties2 (Context& context)
 {
        const PlatformInterface&                vkp                             = context.getPlatformInterface();
@@ -3041,6 +3055,29 @@ tcu::TestStatus deviceProperties2 (Context& context)
                log << TestLog::Message << dsResolveProperties[0] << TestLog::EndMessage;
        }
 
+       if (isExtensionSupported(extensions, RequiredExtension("VK_KHR_performance_query")))
+       {
+               VkPhysicalDevicePerformanceCounterPropertiesKHR performanceCounterProperties[count];
+
+               for (int ndx = 0; ndx < count; ++ndx)
+               {
+                       deMemset(&performanceCounterProperties[ndx], 0xFF, sizeof(VkPhysicalDevicePerformanceCounterPropertiesKHR));
+                       performanceCounterProperties[ndx].sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_COUNTER_PROPERTIES_KHR;
+                       performanceCounterProperties[ndx].pNext = DE_NULL;
+
+                       extProperties.pNext = &performanceCounterProperties[ndx];
+
+                       vki.getPhysicalDeviceProperties2(physicalDevice, &extProperties);
+               }
+
+               if (deMemCmp(&performanceCounterProperties[0], &performanceCounterProperties[1], sizeof(VkPhysicalDevicePerformanceCounterPropertiesKHR)) != 0)
+               {
+                       TCU_FAIL("Mismatch in VkPhysicalDevicePerformanceCounterPropertiesKHR");
+               }
+
+               log << TestLog::Message << performanceCounterProperties[0] << TestLog::EndMessage;
+       }
+
        return tcu::TestStatus::pass("Querying device properties succeeded");
 }
 
index 9f2b399..8d6c3fd 100644 (file)
@@ -8,6 +8,8 @@ set(DEQP_VK_QUERY_POOL_SRCS
        vktQueryPoolTests.cpp
        vktQueryPoolOcclusionTests.hpp
        vktQueryPoolOcclusionTests.cpp
+       vktQueryPoolPerformanceTests.hpp
+       vktQueryPoolPerformanceTests.cpp
        vktQueryPoolStatisticsTests.hpp
        vktQueryPoolStatisticsTests.cpp
 )
diff --git a/external/vulkancts/modules/vulkan/query_pool/vktQueryPoolPerformanceTests.cpp b/external/vulkancts/modules/vulkan/query_pool/vktQueryPoolPerformanceTests.cpp
new file mode 100644 (file)
index 0000000..2dceb7b
--- /dev/null
@@ -0,0 +1,1198 @@
+/*------------------------------------------------------------------------
+ * Vulkan Conformance Tests
+ * ------------------------
+ *
+ * Copyright (c) 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.
+ *
+ *//*!
+ * \file
+ * \brief Vulkan Performance Query Tests
+ *//*--------------------------------------------------------------------*/
+
+#include "vktQueryPoolPerformanceTests.hpp"
+#include "vktTestCase.hpp"
+
+#include "vktDrawImageObjectUtil.hpp"
+#include "vktDrawBufferObjectUtil.hpp"
+#include "vktDrawCreateInfoUtil.hpp"
+#include "vkBuilderUtil.hpp"
+#include "vkRefUtil.hpp"
+#include "vkPrograms.hpp"
+#include "vkTypeUtil.hpp"
+#include "vkCmdUtil.hpp"
+#include "vkQueryUtil.hpp"
+
+#include "deMath.h"
+
+#include "tcuTestLog.hpp"
+#include "tcuResource.hpp"
+#include "tcuImageCompare.hpp"
+#include "vkImageUtil.hpp"
+#include "tcuCommandLine.hpp"
+#include "tcuRGBA.hpp"
+
+namespace vkt
+{
+namespace QueryPool
+{
+namespace
+{
+
+using namespace vk;
+using namespace Draw;
+
+std::string uuidToHex(const deUint8 uuid[])
+{
+       const size_t    bytesPerPart[]  = {4, 2, 2, 2, 6};
+       const deUint8*  ptr                             = &uuid[0];
+       const size_t    stringSize              = VK_UUID_SIZE * 2 + DE_LENGTH_OF_ARRAY(bytesPerPart) - 1;
+       std::string             result;
+
+       result.reserve(stringSize);
+
+       for (size_t partNdx = 0; partNdx < DE_LENGTH_OF_ARRAY(bytesPerPart); ++partNdx)
+       {
+               const size_t    bytesInPart             = bytesPerPart[partNdx];
+               const size_t    symbolsInPart   = 2 * bytesInPart;
+               deUint64                part                    = 0;
+               std::string             partString;
+
+               for (size_t byteInPartNdx = 0; byteInPartNdx < bytesInPart; ++byteInPartNdx)
+               {
+                       part = (part << 8) | *ptr;
+                       ++ptr;
+               }
+
+               partString      = tcu::toHex(part).toString();
+
+               DE_ASSERT(partString.size() > symbolsInPart);
+
+               result += (symbolsInPart >= partString.size()) ? partString : partString.substr(partString.size() - symbolsInPart);
+
+               if (partNdx + 1 != DE_LENGTH_OF_ARRAY(bytesPerPart))
+                       result += '-';
+       }
+
+       DE_ASSERT(ptr == &uuid[VK_UUID_SIZE]);
+       DE_ASSERT(result.size() == stringSize);
+
+       return result;
+}
+
+class EnumerateAndValidateTest : public TestInstance
+{
+public:
+                                               EnumerateAndValidateTest                (vkt::Context&  context, VkQueueFlagBits queueFlagBits);
+       tcu::TestStatus         iterate                                                 (void);
+
+protected:
+       void                            basicValidateCounter                    (const deUint32 familyIndex);
+
+private:
+       VkQueueFlagBits         m_queueFlagBits;
+       bool                            m_requiredExtensionsPresent;
+};
+
+EnumerateAndValidateTest::EnumerateAndValidateTest (vkt::Context& context, VkQueueFlagBits queueFlagBits)
+       : TestInstance(context)
+       , m_queueFlagBits(queueFlagBits)
+       , m_requiredExtensionsPresent(context.requireDeviceExtension("VK_KHR_performance_query"))
+{
+}
+
+tcu::TestStatus EnumerateAndValidateTest::iterate (void)
+{
+       const InstanceInterface&                                        vki                             = m_context.getInstanceInterface();
+       const VkPhysicalDevice                                          physicalDevice  = m_context.getPhysicalDevice();
+       const std::vector<VkQueueFamilyProperties>      queueProperties = getPhysicalDeviceQueueFamilyProperties(vki, physicalDevice);
+
+       for (deUint32 queueNdx = 0; queueNdx < queueProperties.size(); queueNdx++)
+       {
+               if ((queueProperties[queueNdx].queueFlags & m_queueFlagBits) == 0)
+                       continue;
+
+               deUint32 counterCount = 0;
+               vki.enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueNdx, &counterCount, DE_NULL, DE_NULL);
+               if (counterCount == 0)
+                       continue;
+
+               {
+                       std::vector<VkPerformanceCounterKHR>    counters                        (counterCount);
+                       deUint32                                                                counterCountRead        = counterCount;
+                       std::map<std::string, size_t>                   uuidValidator;
+
+                       vki.enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueNdx, &counterCountRead, &counters[0], DE_NULL);
+
+                       if (counterCountRead != counterCount)
+                               TCU_FAIL("Number of counters read (" + de::toString(counterCountRead) + ") is not equal to number of counters reported (" + de::toString(counterCount) + ")");
+
+                       for (size_t counterNdx = 0; counterNdx < counters.size(); ++counterNdx)
+                       {
+                               const VkPerformanceCounterKHR&  counter                 = counters[counterNdx];
+                               const std::string                               uuidStr                 = uuidToHex(counter.uuid);
+
+                               if (uuidValidator.find(uuidStr) != uuidValidator.end())
+                                       TCU_FAIL("Duplicate counter UUID detected " + uuidStr);
+                               else
+                                       uuidValidator[uuidStr] = counterNdx;
+
+                               if (counter.scope >= VK_PERFORMANCE_COUNTER_SCOPE_KHR_LAST)
+                                       TCU_FAIL("Counter scope is invalid " + de::toString(static_cast<size_t>(counter.scope)));
+
+                               if (counter.storage >= VK_PERFORMANCE_COUNTER_STORAGE_KHR_LAST)
+                                       TCU_FAIL("Counter storage is invalid " + de::toString(static_cast<size_t>(counter.storage)));
+
+                               if (counter.unit >= VK_PERFORMANCE_COUNTER_UNIT_KHR_LAST)
+                                       TCU_FAIL("Counter unit is invalid " + de::toString(static_cast<size_t>(counter.unit)));
+                       }
+               }
+               {
+                       std::vector<VkPerformanceCounterDescriptionKHR> counterDescriptors      (counterCount);
+                       deUint32                                                                                counterCountRead        = counterCount;
+
+                       vki.enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueNdx, &counterCountRead, DE_NULL, &counterDescriptors[0]);
+
+                       if (counterCountRead != counterCount)
+                               TCU_FAIL("Number of counters read (" + de::toString(counterCountRead) + ") is not equal to number of counters reported (" + de::toString(counterCount) + ")");
+
+                       for (size_t counterNdx = 0; counterNdx < counterDescriptors.size(); ++counterNdx)
+                       {
+                               const VkPerformanceCounterDescriptionKHR&               counterDescriptor       = counterDescriptors[counterNdx];
+                               const VkPerformanceCounterDescriptionFlagsKHR   allowedFlags            = VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR
+                                                                                                                                                                       | VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR;
+
+                               if ((counterDescriptor.flags & ~allowedFlags) != 0)
+                                       TCU_FAIL("Invalid flags present in VkPerformanceCounterDescriptionFlagsKHR");
+                       }
+               }
+       }
+
+       return tcu::TestStatus::pass("Pass");
+}
+
+class QueryTestBase : public TestInstance
+{
+public:
+                                               QueryTestBase   (vkt::Context&  context);
+
+protected:
+
+       void                            setupCounters                   (void);
+       Move<VkQueryPool>       createQueryPool                 (deUint32 enabledCounterOffset, deUint32 enabledCounterStride);
+       bool                            acquireProfilingLock    (void);
+       void                            releaseProfilingLock    (void);
+       bool                            verifyQueryResults              (VkQueryPool queryPool);
+       deUint32                        getRequiredNumerOfPasses(void);
+
+private:
+
+       bool                                                                    m_requiredExtensionsPresent;
+       deUint32                                                                m_requiredNumerOfPasses;
+       std::map<deUint64, deUint32>                    m_enabledCountersCountMap;              // number of counters that were enabled per query pool
+       std::vector<VkPerformanceCounterKHR>    m_counters;                                             // counters provided by the device
+};
+
+QueryTestBase::QueryTestBase(vkt::Context& context)
+       : TestInstance  (context)
+       , m_requiredExtensionsPresent(context.requireDeviceExtension("VK_KHR_performance_query"))
+       , m_requiredNumerOfPasses(0)
+{
+}
+
+void QueryTestBase::setupCounters()
+{
+       const InstanceInterface&        vki                                     = m_context.getInstanceInterface();
+       const VkPhysicalDevice          physicalDevice          = m_context.getPhysicalDevice();
+       const CmdPoolCreateInfo         cmdPoolCreateInfo       = m_context.getUniversalQueueFamilyIndex();
+       deUint32                                        queueFamilyIndex        = cmdPoolCreateInfo.queueFamilyIndex;
+       deUint32                                        counterCount;
+
+       if (!m_context.getPerformanceCounterFeatures().performanceCounterQueryPools)
+               TCU_THROW(NotSupportedError, "Performance counter query pools feature not supported");
+
+       // get the number of supported counters
+       vki.enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, &counterCount, NULL, NULL);
+       if (!counterCount)
+               TCU_THROW(NotSupportedError, "QualityWarning: there are no performance counters");
+
+       // get supported counters
+       m_counters.resize(counterCount);
+       vki.enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, &counterCount, &m_counters[0], DE_NULL);
+}
+
+Move<VkQueryPool> QueryTestBase::createQueryPool(deUint32 enabledCounterOffset, deUint32 enabledCounterStride)
+{
+       const InstanceInterface&        vki                                     = m_context.getInstanceInterface();
+       const DeviceInterface&          vkd                                     = m_context.getDeviceInterface();
+       const VkPhysicalDevice          physicalDevice          = m_context.getPhysicalDevice();
+       const VkDevice                          device                          = m_context.getDevice();
+       const CmdPoolCreateInfo         cmdPoolCreateInfo       = m_context.getUniversalQueueFamilyIndex();
+       const deUint32                          counterCount            = (deUint32)m_counters.size();
+       deUint32                                        enabledIndex            = enabledCounterOffset ? 0 : enabledCounterStride;
+       std::vector<deUint32>           enabledCounters;
+
+       // enable every <enabledCounterStride> counter that has command or render pass scope
+       for (deUint32 i = 0; i < counterCount; i++)
+       {
+               // skip counters with command buffer scope
+               if (m_counters[i].scope == VK_QUERY_SCOPE_COMMAND_BUFFER_KHR)
+                       continue;
+
+               // handle offset
+               if (enabledCounterOffset)
+               {
+                       if (enabledCounterOffset == enabledIndex)
+                       {
+                               // disable handling offset
+                               enabledCounterOffset = 0;
+
+                               // eneble next index in stride condition
+                               enabledIndex = enabledCounterStride;
+                       }
+                       else
+                       {
+                               ++enabledIndex;
+                               continue;
+                       }
+               }
+
+               // handle stride
+               if (enabledIndex == enabledCounterStride)
+               {
+                       enabledCounters.push_back(i);
+                       enabledIndex = 0;
+               }
+               else
+                       ++enabledIndex;
+       }
+
+       // get number of counters that were enabled for this query pool
+       deUint32 enabledCountersCount = static_cast<deUint32>(enabledCounters.size());
+       if (!enabledCountersCount)
+               TCU_THROW(NotSupportedError, "QualityWarning: no performance counters");
+
+       // define performance query
+       VkPerformanceQueryCreateInfoKHR performanceQueryCreateInfo =
+       {
+               VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_CREATE_INFO_KHR,
+               NULL,
+               cmdPoolCreateInfo.queueFamilyIndex,                     // queue family that this performance query is performed on
+               enabledCountersCount,                                           // number of counters to enable
+               &enabledCounters[0]                                                     // array of indices of counters to enable
+       };
+
+       // get the number of passes counters will require
+       vki.getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, &performanceQueryCreateInfo, &m_requiredNumerOfPasses);
+
+       // create query pool
+       VkQueryPoolCreateInfo queryPoolCreateInfo =
+       {
+               VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO,
+               &performanceQueryCreateInfo,
+               0,                                                                                      // flags
+               VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR,            // new query type
+               1,                                                                                      // queryCount
+               0
+       };
+
+       Move<VkQueryPool> queryPool = vk::createQueryPool(vkd, device, &queryPoolCreateInfo);
+
+       // memorize number of enabled counters for this query pool
+       m_enabledCountersCountMap[queryPool.get().getInternal()] = enabledCountersCount;
+
+       return queryPool;
+}
+
+bool QueryTestBase::acquireProfilingLock()
+{
+       const DeviceInterface&          vkd             = m_context.getDeviceInterface();
+       const VkDevice                          device  = m_context.getDevice();
+
+       // acquire profiling lock before we record command buffers
+       VkAcquireProfilingLockInfoKHR lockInfo =
+       {
+               VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR,
+               NULL,
+               0,
+               2000000000ull                                   // wait 2s for the lock
+       };
+
+       VkResult result = vkd.acquireProfilingLockKHR(device, &lockInfo);
+       if (result == VK_TIMEOUT)
+       {
+               m_context.getTestContext().getLog() << tcu::TestLog::Message
+                       << "Timeout reached, profiling lock wasn't acquired - test had to end earlier"
+                       << tcu::TestLog::EndMessage;
+               return false;
+       }
+       if (result != VK_SUCCESS)
+               TCU_FAIL("Profiling lock wasn't acquired");
+
+       return true;
+}
+
+void QueryTestBase::releaseProfilingLock()
+{
+       const DeviceInterface&  vkd             = m_context.getDeviceInterface();
+       const VkDevice                  device  = m_context.getDevice();
+
+       // release the profiling lock after the command buffer is no longer in the pending state
+       vkd.releaseProfilingLockKHR(device);
+}
+
+bool QueryTestBase::verifyQueryResults(VkQueryPool queryPool)
+{
+       const DeviceInterface&          vkd             = m_context.getDeviceInterface();
+       const VkDevice                          device  = m_context.getDevice();
+
+       // create an array to hold the results of all counters
+       deUint32 enabledCounterCount = m_enabledCountersCountMap[queryPool.getInternal()];
+       std::vector<VkPerformanceCounterResultKHR> recordedCounters(enabledCounterCount);
+
+       // verify that query result can be retrieved
+       VkResult result = vkd.getQueryPoolResults(device, queryPool, 0, 1, sizeof(VkPerformanceCounterResultKHR) * enabledCounterCount,
+               &recordedCounters[0], sizeof(VkPerformanceCounterResultKHR), VK_QUERY_RESULT_WAIT_BIT);
+       if (result == VK_NOT_READY)
+       {
+               m_context.getTestContext().getLog() << tcu::TestLog::Message
+                       << "Pass but result is not ready"
+                       << tcu::TestLog::EndMessage;
+               return true;
+       }
+       return (result == VK_SUCCESS);
+}
+
+deUint32 QueryTestBase::getRequiredNumerOfPasses()
+{
+       return m_requiredNumerOfPasses;
+}
+
+// Base class for all graphic tests
+class GraphicQueryTestBase : public QueryTestBase
+{
+public:
+       GraphicQueryTestBase(vkt::Context&      context);
+
+protected:
+       void initStateObjects(void);
+
+protected:
+       Move<VkPipeline>                m_pipeline;
+       Move<VkPipelineLayout>  m_pipelineLayout;
+
+       de::SharedPtr<Image>    m_colorAttachmentImage;
+       Move<VkImageView>               m_attachmentView;
+
+       Move<VkRenderPass>              m_renderPass;
+       Move<VkFramebuffer>             m_framebuffer;
+
+       de::SharedPtr<Buffer>   m_vertexBuffer;
+
+       VkFormat                                m_colorAttachmentFormat;
+       deUint32                                m_size;
+};
+
+GraphicQueryTestBase::GraphicQueryTestBase(vkt::Context& context)
+       : QueryTestBase(context)
+       , m_colorAttachmentFormat(VK_FORMAT_R8G8B8A8_UNORM)
+       , m_size(32)
+{
+}
+
+void GraphicQueryTestBase::initStateObjects(void)
+{
+       const VkDevice                          device  = m_context.getDevice();
+       const DeviceInterface&          vkd             = m_context.getDeviceInterface();
+
+       //attachment images and views
+       {
+               VkExtent3D imageExtent =
+               {
+                       m_size,         // width
+                       m_size,         // height
+                       1                       // depth
+               };
+
+               const ImageCreateInfo colorImageCreateInfo(VK_IMAGE_TYPE_2D, m_colorAttachmentFormat, imageExtent, 1, 1,
+                                                                                                  VK_SAMPLE_COUNT_1_BIT, VK_IMAGE_TILING_OPTIMAL,
+                                                                                                  VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT);
+
+               m_colorAttachmentImage = Image::createAndAlloc(vkd, device, colorImageCreateInfo, m_context.getDefaultAllocator(),
+                                                                                                          m_context.getUniversalQueueFamilyIndex());
+
+               const ImageViewCreateInfo attachmentViewInfo(m_colorAttachmentImage->object(), VK_IMAGE_VIEW_TYPE_2D, m_colorAttachmentFormat);
+               m_attachmentView = createImageView(vkd, device, &attachmentViewInfo);
+       }
+
+       // renderpass and framebuffer
+       {
+               RenderPassCreateInfo renderPassCreateInfo;
+               renderPassCreateInfo.addAttachment(AttachmentDescription(m_colorAttachmentFormat,                               // format
+                                                                                                                                VK_SAMPLE_COUNT_1_BIT,                                 // samples
+                                                                                                                                VK_ATTACHMENT_LOAD_OP_CLEAR,                   // loadOp
+                                                                                                                                VK_ATTACHMENT_STORE_OP_DONT_CARE,              // storeOp
+                                                                                                                                VK_ATTACHMENT_LOAD_OP_DONT_CARE,               // stencilLoadOp
+                                                                                                                                VK_ATTACHMENT_STORE_OP_DONT_CARE,              // stencilLoadOp
+                                                                                                                                VK_IMAGE_LAYOUT_GENERAL,                               // initialLauout
+                                                                                                                                VK_IMAGE_LAYOUT_GENERAL));                             // finalLayout
+
+               const VkAttachmentReference colorAttachmentReference =
+               {
+                       0,                                                                                                                                                                                      // attachment
+                       VK_IMAGE_LAYOUT_GENERAL                                                                                                                                         // layout
+               };
+
+               renderPassCreateInfo.addSubpass(SubpassDescription(VK_PIPELINE_BIND_POINT_GRAPHICS,                             // pipelineBindPoint
+                                                                                                                  0,                                                                                   // flags
+                                                                                                                  0,                                                                                   // inputCount
+                                                                                                                  DE_NULL,                                                                             // pInputAttachments
+                                                                                                                  1,                                                                                   // colorCount
+                                                                                                                  &colorAttachmentReference,                                   // pColorAttachments
+                                                                                                                  DE_NULL,                                                                             // pResolveAttachments
+                                                                                                                  AttachmentReference(),                                               // depthStencilAttachment
+                                                                                                                  0,                                                                                   // preserveCount
+                                                                                                                  DE_NULL));                                                                   // preserveAttachments
+
+               m_renderPass = createRenderPass(vkd, device, &renderPassCreateInfo);
+
+               std::vector<VkImageView> attachments(1);
+               attachments[0] = *m_attachmentView;
+
+               FramebufferCreateInfo framebufferCreateInfo(*m_renderPass, attachments, m_size, m_size, 1);
+               m_framebuffer = createFramebuffer(vkd, device, &framebufferCreateInfo);
+       }
+
+       // pipeline
+       {
+               Unique<VkShaderModule> vs(createShaderModule(vkd, device, m_context.getBinaryCollection().get("vert"), 0));
+               Unique<VkShaderModule> fs(createShaderModule(vkd, device, m_context.getBinaryCollection().get("frag"), 0));
+
+               const PipelineCreateInfo::ColorBlendState::Attachment attachmentState;
+
+               const PipelineLayoutCreateInfo pipelineLayoutCreateInfo;
+               m_pipelineLayout = createPipelineLayout(vkd, device, &pipelineLayoutCreateInfo);
+
+               const VkVertexInputBindingDescription vf_binding_desc =
+               {
+                       0,                                                                                                                              // binding
+                       4 * (deUint32)sizeof(float),                                                                    // stride
+                       VK_VERTEX_INPUT_RATE_VERTEX                                                                             // inputRate
+               };
+
+               const VkVertexInputAttributeDescription vf_attribute_desc =
+               {
+                       0,                                                                                                                              // location
+                       0,                                                                                                                              // binding
+                       VK_FORMAT_R32G32B32A32_SFLOAT,                                                                  // format
+                       0                                                                                                                               // offset
+               };
+
+               const VkPipelineVertexInputStateCreateInfo vf_info =
+               {
+                       VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO,              // sType
+                       NULL,                                                                                                                   // pNext
+                       0u,                                                                                                                             // flags
+                       1,                                                                                                                              // vertexBindingDescriptionCount
+                       &vf_binding_desc,                                                                                               // pVertexBindingDescriptions
+                       1,                                                                                                                              // vertexAttributeDescriptionCount
+                       &vf_attribute_desc                                                                                              // pVertexAttributeDescriptions
+               };
+
+               PipelineCreateInfo pipelineCreateInfo(*m_pipelineLayout, *m_renderPass, 0, 0);
+               pipelineCreateInfo.addShader(PipelineCreateInfo::PipelineShaderStage(*vs, "main", VK_SHADER_STAGE_VERTEX_BIT));
+               pipelineCreateInfo.addShader(PipelineCreateInfo::PipelineShaderStage(*fs, "main", VK_SHADER_STAGE_FRAGMENT_BIT));
+               pipelineCreateInfo.addState(PipelineCreateInfo::InputAssemblerState(VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST));
+               pipelineCreateInfo.addState(PipelineCreateInfo::ColorBlendState(1, &attachmentState));
+               const VkViewport viewport       = makeViewport(m_size, m_size);
+               const VkRect2D scissor          = makeRect2D(m_size, m_size);
+               pipelineCreateInfo.addState(PipelineCreateInfo::ViewportState(1, std::vector<VkViewport>(1, viewport), std::vector<VkRect2D>(1, scissor)));
+               pipelineCreateInfo.addState(PipelineCreateInfo::DepthStencilState(false, false, VK_COMPARE_OP_GREATER_OR_EQUAL));
+               pipelineCreateInfo.addState(PipelineCreateInfo::RasterizerState());
+               pipelineCreateInfo.addState(PipelineCreateInfo::MultiSampleState());
+               pipelineCreateInfo.addState(vf_info);
+               m_pipeline = createGraphicsPipeline(vkd, device, DE_NULL, &pipelineCreateInfo);
+       }
+
+       // vertex buffer
+       {
+               std::vector<tcu::Vec4> vertices(3);
+               vertices[0] = tcu::Vec4(0.5, 0.5, 0.0, 1.0);
+               vertices[1] = tcu::Vec4(0.5, 0.0, 0.0, 1.0);
+               vertices[2] = tcu::Vec4(0.0, 0.5, 0.0, 1.0);
+
+               const size_t kBufferSize = vertices.size() * sizeof(tcu::Vec4);
+               m_vertexBuffer = Buffer::createAndAlloc(vkd, device, BufferCreateInfo(kBufferSize, VK_BUFFER_USAGE_VERTEX_BUFFER_BIT), m_context.getDefaultAllocator(), MemoryRequirement::HostVisible);
+
+               tcu::Vec4 *ptr = reinterpret_cast<tcu::Vec4*>(m_vertexBuffer->getBoundMemory().getHostPtr());
+               deMemcpy(ptr, &vertices[0], kBufferSize);
+
+               flushMappedMemoryRange(vkd, device,     m_vertexBuffer->getBoundMemory().getMemory(), m_vertexBuffer->getBoundMemory().getOffset(), VK_WHOLE_SIZE);
+       }
+}
+
+
+class GraphicQueryTest : public GraphicQueryTestBase
+{
+public:
+                                               GraphicQueryTest        (vkt::Context&  context);
+       tcu::TestStatus         iterate                         (void);
+};
+
+GraphicQueryTest::GraphicQueryTest(vkt::Context& context)
+       : GraphicQueryTestBase(context)
+{
+}
+
+tcu::TestStatus GraphicQueryTest::iterate(void)
+{
+       const DeviceInterface&          vkd                                     = m_context.getDeviceInterface();
+       const VkDevice                          device                          = m_context.getDevice();
+       const VkQueue                           queue                           = m_context.getUniversalQueue();
+       const CmdPoolCreateInfo         cmdPoolCreateInfo       = m_context.getUniversalQueueFamilyIndex();
+       Unique<VkCommandPool>           cmdPool                         (createCommandPool(vkd, device, &cmdPoolCreateInfo));
+       Unique<VkCommandBuffer>         cmdBuffer                       (allocateCommandBuffer(vkd, device, *cmdPool, VK_COMMAND_BUFFER_LEVEL_PRIMARY));
+
+       initStateObjects();
+       setupCounters();
+
+       vk::Unique<VkQueryPool> queryPool(createQueryPool(0, 1));
+
+       if (!acquireProfilingLock())
+       {
+               // lock was not acquired in given time, we can't fail the test
+               return tcu::TestStatus::pass("Pass");
+       }
+
+       // begin command buffer
+       const VkCommandBufferBeginInfo commandBufBeginParams =
+       {
+               VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,
+               DE_NULL,
+               VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT,
+               (const VkCommandBufferInheritanceInfo*)DE_NULL,
+       };
+       VK_CHECK(vkd.beginCommandBuffer(*cmdBuffer, &commandBufBeginParams));
+
+       initialTransitionColor2DImage(vkd, *cmdBuffer, m_colorAttachmentImage->object(), VK_IMAGE_LAYOUT_GENERAL,
+                                                                 VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT, VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT);
+
+       // begin render pass
+       VkClearValue renderPassClearValue;
+       deMemset(&renderPassClearValue, 0, sizeof(VkClearValue));
+
+       // reset query pool
+       vkd.cmdResetQueryPool(*cmdBuffer, *queryPool, 0, 1);
+
+       // perform query during triangle draw
+       vkd.cmdBeginQuery(*cmdBuffer, *queryPool, 0, VK_QUERY_CONTROL_PRECISE_BIT);
+
+       beginRenderPass(vkd, *cmdBuffer, *m_renderPass, *m_framebuffer,
+                                       makeRect2D(0, 0, m_size, m_size),
+                                       1, &renderPassClearValue);
+
+       // bind pipeline
+       vkd.cmdBindPipeline(*cmdBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, *m_pipeline);
+
+       // bind vertex buffer
+       VkBuffer vertexBuffer = m_vertexBuffer->object();
+       const VkDeviceSize vertexBufferOffset = 0;
+       vkd.cmdBindVertexBuffers(*cmdBuffer, 0, 1, &vertexBuffer, &vertexBufferOffset);
+
+       vkd.cmdDraw(*cmdBuffer, 3, 1, 0, 0);
+
+       endRenderPass(vkd, *cmdBuffer);
+
+       vkd.cmdEndQuery(*cmdBuffer, *queryPool, 0);
+
+       transition2DImage(vkd, *cmdBuffer, m_colorAttachmentImage->object(), VK_IMAGE_ASPECT_COLOR_BIT,
+                                         VK_IMAGE_LAYOUT_GENERAL, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
+                                         VK_ACCESS_TRANSFER_READ_BIT, VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT);
+
+       endCommandBuffer(vkd, *cmdBuffer);
+
+       // submit command buffer for each pass and wait for its completion
+       for (deUint32 passIndex = 0; passIndex < getRequiredNumerOfPasses(); passIndex++)
+       {
+               const Unique<VkFence> fence(createFence(vkd, device));
+
+               VkPerformanceQuerySubmitInfoKHR performanceQuerySubmitInfo =
+               {
+                       VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR,
+                       NULL,
+                       passIndex
+               };
+
+               const VkSubmitInfo submitInfo =
+               {
+                       VK_STRUCTURE_TYPE_SUBMIT_INFO,                                          // sType
+                       &performanceQuerySubmitInfo,                                            // pNext
+                       0u,                                                                                                     // waitSemaphoreCount
+                       DE_NULL,                                                                                        // pWaitSemaphores
+                       (const VkPipelineStageFlags*)DE_NULL,                           // pWaitDstStageMask
+                       1u,                                                                                                     // commandBufferCount
+                       &cmdBuffer.get(),                                                                       // pCommandBuffers
+                       0u,                                                                                                     // signalSemaphoreCount
+                       DE_NULL,                                                                                        // pSignalSemaphores
+               };
+
+               VK_CHECK(vkd.queueSubmit(queue, 1u, &submitInfo, *fence));
+               VK_CHECK(vkd.waitForFences(device, 1u, &fence.get(), DE_TRUE, ~0ull));
+       }
+
+       releaseProfilingLock();
+
+       VK_CHECK(vkd.resetCommandBuffer(*cmdBuffer, 0));
+
+       if (verifyQueryResults(*queryPool))
+               return tcu::TestStatus::pass("Pass");
+       return tcu::TestStatus::fail("Fail");
+}
+
+class GraphicMultiplePoolsTest : public GraphicQueryTestBase
+{
+public:
+                                               GraphicMultiplePoolsTest        (vkt::Context&  context);
+       tcu::TestStatus         iterate                                         (void);
+};
+
+GraphicMultiplePoolsTest::GraphicMultiplePoolsTest(vkt::Context& context)
+       : GraphicQueryTestBase(context)
+{
+}
+
+tcu::TestStatus GraphicMultiplePoolsTest::iterate(void)
+{
+       if (!m_context.getPerformanceCounterFeatures().performanceCounterMultipleQueryPools)
+               throw tcu::NotSupportedError("MultipleQueryPools not supported");
+
+       const DeviceInterface&          vkd                                     = m_context.getDeviceInterface();
+       const VkDevice                          device                          = m_context.getDevice();
+       const VkQueue                           queue                           = m_context.getUniversalQueue();
+       const CmdPoolCreateInfo         cmdPoolCreateInfo       = m_context.getUniversalQueueFamilyIndex();
+       Unique<VkCommandPool>           cmdPool                         (createCommandPool(vkd, device, &cmdPoolCreateInfo));
+       Unique<VkCommandBuffer>         cmdBuffer                       (allocateCommandBuffer(vkd, device, *cmdPool, VK_COMMAND_BUFFER_LEVEL_PRIMARY));
+
+       initStateObjects();
+       setupCounters();
+
+       vk::Unique<VkQueryPool> queryPool1(createQueryPool(0, 2)),
+                                                       queryPool2(createQueryPool(1, 2));
+
+       if (!acquireProfilingLock())
+       {
+               // lock was not acquired in given time, we can't fail the test
+               return tcu::TestStatus::pass("Pass");
+       }
+
+       // begin command buffer
+       const VkCommandBufferBeginInfo commandBufBeginParams =
+       {
+               VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,
+               DE_NULL,
+               VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT,
+               (const VkCommandBufferInheritanceInfo*)DE_NULL,
+       };
+       VK_CHECK(vkd.beginCommandBuffer(*cmdBuffer, &commandBufBeginParams));
+
+       initialTransitionColor2DImage(vkd, *cmdBuffer, m_colorAttachmentImage->object(), VK_IMAGE_LAYOUT_GENERAL,
+                                                                 VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT, VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT);
+
+       // begin render pass
+       VkClearValue renderPassClearValue;
+       deMemset(&renderPassClearValue, 0, sizeof(VkClearValue));
+
+       VkBuffer                        vertexBuffer            = m_vertexBuffer->object();
+       const VkDeviceSize      vertexBufferOffset      = 0;
+       const VkQueryPool       queryPools[]            =
+       {
+               *queryPool1,
+               *queryPool2
+       };
+
+       // reset query pools
+       vkd.cmdResetQueryPool(*cmdBuffer, queryPools[0], 0u, 1u);
+       vkd.cmdResetQueryPool(*cmdBuffer, queryPools[1], 0u, 1u);
+
+       // perform two queries during triangle draw
+       for (deUint32 loop = 0; loop < DE_LENGTH_OF_ARRAY(queryPools); ++loop)
+       {
+               const VkQueryPool queryPool = queryPools[loop];
+               vkd.cmdBeginQuery(*cmdBuffer, queryPool, 0u, (VkQueryControlFlags)0u);
+               beginRenderPass(vkd, *cmdBuffer, *m_renderPass, *m_framebuffer,
+                                               makeRect2D(0, 0, m_size, m_size),
+                                               1, &renderPassClearValue);
+
+               vkd.cmdBindPipeline(*cmdBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, *m_pipeline);
+               vkd.cmdBindVertexBuffers(*cmdBuffer, 0, 1, &vertexBuffer, &vertexBufferOffset);
+               vkd.cmdDraw(*cmdBuffer, 3, 1, 0, 0);
+
+               endRenderPass(vkd, *cmdBuffer);
+               vkd.cmdEndQuery(*cmdBuffer, queryPool, 0u);
+       }
+
+       transition2DImage(vkd, *cmdBuffer, m_colorAttachmentImage->object(), VK_IMAGE_ASPECT_COLOR_BIT,
+                                         VK_IMAGE_LAYOUT_GENERAL, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
+                                         VK_ACCESS_TRANSFER_READ_BIT, VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT);
+
+       endCommandBuffer(vkd, *cmdBuffer);
+
+       // submit command buffer for each pass and wait for its completion
+       for (deUint32 passIndex = 0; passIndex < getRequiredNumerOfPasses(); passIndex++)
+       {
+               const Unique<VkFence> fence(createFence(vkd, device));
+
+               VkPerformanceQuerySubmitInfoKHR performanceQuerySubmitInfo =
+               {
+                       VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR,
+                       NULL,
+                       passIndex
+               };
+
+               const VkSubmitInfo submitInfo =
+               {
+                       VK_STRUCTURE_TYPE_SUBMIT_INFO,                                          // sType
+                       &performanceQuerySubmitInfo,                                            // pNext
+                       0u,                                                                                                     // waitSemaphoreCount
+                       DE_NULL,                                                                                        // pWaitSemaphores
+                       (const VkPipelineStageFlags*)DE_NULL,                           // pWaitDstStageMask
+                       1u,                                                                                                     // commandBufferCount
+                       &cmdBuffer.get(),                                                                       // pCommandBuffers
+                       0u,                                                                                                     // signalSemaphoreCount
+                       DE_NULL,                                                                                        // pSignalSemaphores
+               };
+
+               VK_CHECK(vkd.queueSubmit(queue, 1u, &submitInfo, *fence));
+               VK_CHECK(vkd.waitForFences(device, 1u, &fence.get(), DE_TRUE, ~0ull));
+       }
+
+       releaseProfilingLock();
+
+       VK_CHECK(vkd.resetCommandBuffer(*cmdBuffer, 0));
+
+       if (verifyQueryResults(*queryPool1) && verifyQueryResults(*queryPool2))
+               return tcu::TestStatus::pass("Pass");
+       return tcu::TestStatus::fail("Fail");
+}
+
+// Base class for all compute tests
+class ComputeQueryTestBase : public QueryTestBase
+{
+public:
+       ComputeQueryTestBase(vkt::Context&      context);
+
+protected:
+       void initStateObjects(void);
+
+protected:
+       Move<VkPipeline>                m_pipeline;
+       Move<VkPipelineLayout>  m_pipelineLayout;
+       de::SharedPtr<Buffer>   m_buffer;
+       Move<VkDescriptorPool>  m_descriptorPool;
+       Move<VkDescriptorSet>   m_descriptorSet;
+       VkDescriptorBufferInfo  m_descriptorBufferInfo;
+       VkBufferMemoryBarrier   m_computeFinishBarrier;
+};
+
+ComputeQueryTestBase::ComputeQueryTestBase(vkt::Context& context)
+       : QueryTestBase(context)
+{
+}
+
+void ComputeQueryTestBase::initStateObjects(void)
+{
+       const DeviceInterface&                  vkd = m_context.getDeviceInterface();
+       const VkDevice                                  device = m_context.getDevice();
+       const VkDeviceSize                              bufferSize = 32 * sizeof(deUint32);
+       const CmdPoolCreateInfo                 cmdPoolCreateInfo(m_context.getUniversalQueueFamilyIndex());
+       const Unique<VkCommandPool>             cmdPool(createCommandPool(vkd, device, &cmdPoolCreateInfo));
+       const Unique<VkCommandBuffer>   cmdBuffer(allocateCommandBuffer(vkd, device, *cmdPool, VK_COMMAND_BUFFER_LEVEL_PRIMARY));
+
+       const Unique<VkDescriptorSetLayout> descriptorSetLayout(DescriptorSetLayoutBuilder()
+               .addSingleBinding(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, VK_SHADER_STAGE_COMPUTE_BIT)
+               .build(vkd, device));
+
+       // create pipeline layout
+       {
+               const VkPipelineLayoutCreateInfo pipelineLayoutParams =
+               {
+                       VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO,                          // sType
+                       DE_NULL,                                                                                                        // pNext
+                       0u,                                                                                                                     // flags
+                       1u,                                                                                                                     // setLayoutCount
+                       &(*descriptorSetLayout),                                                                        // pSetLayouts
+                       0u,                                                                                                                     // pushConstantRangeCount
+                       DE_NULL,                                                                                                        // pPushConstantRanges
+               };
+               m_pipelineLayout = createPipelineLayout(vkd, device, &pipelineLayoutParams);
+       }
+
+       // create compute pipeline
+       {
+               const Unique<VkShaderModule> cs(createShaderModule(vkd, device, m_context.getBinaryCollection().get("comp"), 0u));
+               const VkPipelineShaderStageCreateInfo pipelineShaderStageParams =
+               {
+                       VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO,            // sType
+                       DE_NULL,                                                                                                        // pNext
+                       (VkPipelineShaderStageCreateFlags)0u,                                           // flags
+                       VK_SHADER_STAGE_COMPUTE_BIT,                                                            // stage
+                       *cs,                                                                                                            // module
+                       "main",                                                                                                         // pName
+                       DE_NULL,                                                                                                        // pSpecializationInfo
+               };
+               const VkComputePipelineCreateInfo pipelineCreateInfo =
+               {
+                       VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO,                         // sType
+                       DE_NULL,                                                                                                        // pNext
+                       (VkPipelineCreateFlags)0u,                                                                      // flags
+                       pipelineShaderStageParams,                                                                      // stage
+                       *m_pipelineLayout,                                                                                      // layout
+                       DE_NULL,                                                                                                        // basePipelineHandle
+                       0,                                                                                                                      // basePipelineIndex
+               };
+               m_pipeline = createComputePipeline(vkd, device, DE_NULL, &pipelineCreateInfo);
+       }
+
+       m_buffer = Buffer::createAndAlloc(vkd, device, BufferCreateInfo(bufferSize, VK_BUFFER_USAGE_STORAGE_BUFFER_BIT),
+               m_context.getDefaultAllocator(), MemoryRequirement::HostVisible);
+       m_descriptorPool = DescriptorPoolBuilder()
+               .addType(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER)
+               .build(vkd, device, VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT, 1u);
+       const VkDescriptorSetAllocateInfo allocateParams =
+       {
+               VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO,         // sType
+               DE_NULL,                                                                                        // pNext
+               *m_descriptorPool,                                                                      // descriptorPool
+               1u,                                                                                                     // setLayoutCount
+               &(*descriptorSetLayout),                                                        // pSetLayouts
+       };
+
+       m_descriptorSet = allocateDescriptorSet(vkd, device, &allocateParams);
+       const VkDescriptorBufferInfo descriptorInfo =
+       {
+               m_buffer->object(),     // buffer
+               0ull,                           // offset
+               bufferSize,                     // range
+       };
+
+       DescriptorSetUpdateBuilder()
+               .writeSingle(*m_descriptorSet, DescriptorSetUpdateBuilder::Location::binding(0u), VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, &descriptorInfo)
+               .update(vkd, device);
+
+       // clear buffer
+       const std::vector<deUint8>      data((size_t)bufferSize, 0u);
+       const Allocation&                       allocation = m_buffer->getBoundMemory();
+       void*                                           allocationData = allocation.getHostPtr();
+       invalidateMappedMemoryRange(vkd, device, allocation.getMemory(), allocation.getOffset(), bufferSize);
+       deMemcpy(allocationData, &data[0], (size_t)bufferSize);
+
+       const VkBufferMemoryBarrier barrier =
+       {
+               VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER,                                        // sType
+               DE_NULL,                                                                                                        // pNext
+               VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_SHADER_WRITE_BIT,         // srcAccessMask
+               VK_ACCESS_HOST_READ_BIT,                                                                        // dstAccessMask
+               VK_QUEUE_FAMILY_IGNORED,                                                                        // srcQueueFamilyIndex
+               VK_QUEUE_FAMILY_IGNORED,                                                                        // destQueueFamilyIndex
+               m_buffer->object(),                                                                                     // buffer
+               0ull,                                                                                                           // offset
+               bufferSize,                                                                                                     // size
+       };
+       m_computeFinishBarrier = barrier;
+}
+
+class ComputeQueryTest : public ComputeQueryTestBase
+{
+public:
+                                               ComputeQueryTest        (vkt::Context&  context);
+       tcu::TestStatus         iterate                         (void);
+};
+
+ComputeQueryTest::ComputeQueryTest(vkt::Context& context)
+       : ComputeQueryTestBase(context)
+{
+}
+
+tcu::TestStatus ComputeQueryTest::iterate(void)
+{
+       const DeviceInterface&                  vkd                                     = m_context.getDeviceInterface();
+       const VkDevice                                  device                          = m_context.getDevice();
+       const VkQueue                                   queue                           = m_context.getUniversalQueue();
+       const CmdPoolCreateInfo                 cmdPoolCreateInfo       (m_context.getUniversalQueueFamilyIndex());
+       const Unique<VkCommandPool>             cmdPool                         (createCommandPool(vkd, device, &cmdPoolCreateInfo));
+       const Unique<VkCommandBuffer>   cmdBuffer                       (allocateCommandBuffer(vkd, device, *cmdPool, VK_COMMAND_BUFFER_LEVEL_PRIMARY));
+
+       initStateObjects();
+       setupCounters();
+
+       vk::Unique<VkQueryPool> queryPool(createQueryPool(0, 1));
+
+       if (!acquireProfilingLock())
+       {
+               // lock was not acquired in given time, we can't fail the test
+               return tcu::TestStatus::pass("Pass");
+       }
+
+       beginCommandBuffer(vkd, *cmdBuffer);
+       vkd.cmdResetQueryPool(*cmdBuffer, *queryPool, 0u, 1u);
+
+       vkd.cmdBindPipeline(*cmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, *m_pipeline);
+       vkd.cmdBindDescriptorSets(*cmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, *m_pipelineLayout, 0u, 1u, &(m_descriptorSet.get()), 0u, DE_NULL);
+
+       vkd.cmdBeginQuery(*cmdBuffer, *queryPool, 0u, (VkQueryControlFlags)0u);
+       vkd.cmdDispatch(*cmdBuffer, 2, 2, 2);
+       vkd.cmdEndQuery(*cmdBuffer, *queryPool, 0u);
+
+       vkd.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_HOST_BIT,
+               (VkDependencyFlags)0u, 0u, (const VkMemoryBarrier*)DE_NULL, 1u, &m_computeFinishBarrier, 0u, (const VkImageMemoryBarrier*)DE_NULL);
+       endCommandBuffer(vkd, *cmdBuffer);
+
+       // submit command buffer for each pass and wait for its completion
+       for (deUint32 passIndex = 0; passIndex < getRequiredNumerOfPasses(); passIndex++)
+       {
+               const Unique<VkFence> fence(createFence(vkd, device));
+
+               VkPerformanceQuerySubmitInfoKHR performanceQuerySubmitInfo =
+               {
+                       VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR,
+                       NULL,
+                       passIndex
+               };
+
+               const VkSubmitInfo submitInfo =
+               {
+                       VK_STRUCTURE_TYPE_SUBMIT_INFO,                                          // sType
+                       &performanceQuerySubmitInfo,                                            // pNext
+                       0u,                                                                                                     // waitSemaphoreCount
+                       DE_NULL,                                                                                        // pWaitSemaphores
+                       (const VkPipelineStageFlags*)DE_NULL,                           // pWaitDstStageMask
+                       1u,                                                                                                     // commandBufferCount
+                       &cmdBuffer.get(),                                                                       // pCommandBuffers
+                       0u,                                                                                                     // signalSemaphoreCount
+                       DE_NULL,                                                                                        // pSignalSemaphores
+               };
+
+               VK_CHECK(vkd.queueSubmit(queue, 1u, &submitInfo, *fence));
+               VK_CHECK(vkd.waitForFences(device, 1u, &fence.get(), DE_TRUE, ~0ull));
+       }
+
+       releaseProfilingLock();
+
+       VK_CHECK(vkd.resetCommandBuffer(*cmdBuffer, 0));
+
+       if (verifyQueryResults(*queryPool))
+               return tcu::TestStatus::pass("Pass");
+       return tcu::TestStatus::fail("Fail");
+}
+
+class ComputeMultiplePoolsTest : public ComputeQueryTestBase
+{
+public:
+                                       ComputeMultiplePoolsTest        (vkt::Context&  context);
+       tcu::TestStatus iterate                                         (void);
+};
+
+ComputeMultiplePoolsTest::ComputeMultiplePoolsTest(vkt::Context& context)
+       : ComputeQueryTestBase(context)
+{
+}
+
+tcu::TestStatus ComputeMultiplePoolsTest::iterate(void)
+{
+       if (!m_context.getPerformanceCounterFeatures().performanceCounterMultipleQueryPools)
+               throw tcu::NotSupportedError("MultipleQueryPools not supported");
+
+       const DeviceInterface&                  vkd = m_context.getDeviceInterface();
+       const VkDevice                                  device = m_context.getDevice();
+       const VkQueue                                   queue = m_context.getUniversalQueue();
+       const CmdPoolCreateInfo                 cmdPoolCreateInfo(m_context.getUniversalQueueFamilyIndex());
+       const Unique<VkCommandPool>             cmdPool(createCommandPool(vkd, device, &cmdPoolCreateInfo));
+       const Unique<VkCommandBuffer>   cmdBuffer(allocateCommandBuffer(vkd, device, *cmdPool, VK_COMMAND_BUFFER_LEVEL_PRIMARY));
+
+       initStateObjects();
+       setupCounters();
+
+       vk::Unique<VkQueryPool> queryPool1(createQueryPool(0, 2)),
+                                                       queryPool2(createQueryPool(1, 2));
+
+       if (!acquireProfilingLock())
+       {
+               // lock was not acquired in given time, we can't fail the test
+               return tcu::TestStatus::pass("Pass");
+       }
+
+       const VkQueryPool queryPools[] =
+       {
+               *queryPool1,
+               *queryPool2
+       };
+
+       beginCommandBuffer(vkd, *cmdBuffer);
+       vkd.cmdResetQueryPool(*cmdBuffer, queryPools[0], 0u, 1u);
+       vkd.cmdResetQueryPool(*cmdBuffer, queryPools[1], 0u, 1u);
+
+       vkd.cmdBindPipeline(*cmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, *m_pipeline);
+       vkd.cmdBindDescriptorSets(*cmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, *m_pipelineLayout, 0u, 1u, &(m_descriptorSet.get()), 0u, DE_NULL);
+
+       // perform two queries
+       for (deUint32 loop = 0; loop < DE_LENGTH_OF_ARRAY(queryPools); ++loop)
+       {
+               const VkQueryPool queryPool = queryPools[loop];
+               vkd.cmdBeginQuery(*cmdBuffer, queryPool, 0u, (VkQueryControlFlags)0u);
+               vkd.cmdDispatch(*cmdBuffer, 2, 2, 2);
+               vkd.cmdEndQuery(*cmdBuffer, queryPool, 0u);
+       }
+
+       vkd.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_HOST_BIT,
+               (VkDependencyFlags)0u, 0u, (const VkMemoryBarrier*)DE_NULL, 1u, &m_computeFinishBarrier, 0u, (const VkImageMemoryBarrier*)DE_NULL);
+       endCommandBuffer(vkd, *cmdBuffer);
+
+       // submit command buffer for each pass and wait for its completion
+       for (deUint32 passIndex = 0; passIndex < getRequiredNumerOfPasses(); passIndex++)
+       {
+               const Unique<VkFence> fence(createFence(vkd, device));
+
+               VkPerformanceQuerySubmitInfoKHR performanceQuerySubmitInfo =
+               {
+                       VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR,
+                       NULL,
+                       passIndex
+               };
+
+               const VkSubmitInfo submitInfo =
+               {
+                       VK_STRUCTURE_TYPE_SUBMIT_INFO,                                          // sType
+                       &performanceQuerySubmitInfo,                                            // pNext
+                       0u,                                                                                                     // waitSemaphoreCount
+                       DE_NULL,                                                                                        // pWaitSemaphores
+                       (const VkPipelineStageFlags*)DE_NULL,                           // pWaitDstStageMask
+                       1u,                                                                                                     // commandBufferCount
+                       &cmdBuffer.get(),                                                                       // pCommandBuffers
+                       0u,                                                                                                     // signalSemaphoreCount
+                       DE_NULL,                                                                                        // pSignalSemaphores
+               };
+
+               VK_CHECK(vkd.queueSubmit(queue, 1u, &submitInfo, *fence));
+               VK_CHECK(vkd.waitForFences(device, 1u, &fence.get(), DE_TRUE, ~0ull));
+       }
+
+       releaseProfilingLock();
+
+       VK_CHECK(vkd.resetCommandBuffer(*cmdBuffer, 0));
+
+       if (verifyQueryResults(*queryPool1) && verifyQueryResults(*queryPool2))
+               return tcu::TestStatus::pass("Pass");
+       return tcu::TestStatus::fail("Fail");
+}
+
+enum TestType
+{
+       TT_ENUMERATE_AND_VALIDATE       = 0,
+       TT_QUERY,
+       TT_MULTIPLE_POOLS
+};
+
+class QueryPoolPerformanceTest : public TestCase
+{
+public:
+       QueryPoolPerformanceTest (tcu::TestContext &context, TestType testType, VkQueueFlagBits queueFlagBits, const char *name)
+               : TestCase                      (context, name, "")
+               , m_testType            (testType)
+               , m_queueFlagBits       (queueFlagBits)
+       {
+       }
+
+       vkt::TestInstance* createInstance (vkt::Context& context) const
+       {
+               if (m_testType == TT_ENUMERATE_AND_VALIDATE)
+                       return new EnumerateAndValidateTest(context, m_queueFlagBits);
+
+               if (m_queueFlagBits == VK_QUEUE_GRAPHICS_BIT)
+               {
+                       if (m_testType == TT_QUERY)
+                               return new GraphicQueryTest(context);
+                       return new GraphicMultiplePoolsTest(context);
+               }
+
+               // tests for VK_QUEUE_COMPUTE_BIT
+               if (m_testType == TT_QUERY)
+                       return new ComputeQueryTest(context);
+               return new ComputeMultiplePoolsTest(context);
+       }
+
+       void initPrograms (SourceCollections& programCollection) const
+       {
+               // validation test do not need programs
+               if (m_testType == TT_ENUMERATE_AND_VALIDATE)
+                       return;
+
+               if (m_queueFlagBits == VK_QUEUE_COMPUTE_BIT)
+               {
+                       programCollection.glslSources.add("comp")
+                               << glu::ComputeSource("#version 430\n"
+                                                                         "layout (local_size_x = 1) in;\n"
+                                                                         "layout(binding = 0) writeonly buffer Output {\n"
+                                                                         "             uint values[];\n"
+                                                                         "} sb_out;\n\n"
+                                                                         "void main (void) {\n"
+                                                                         "             uint index = uint(gl_GlobalInvocationID.x);\n"
+                                                                         "             sb_out.values[index] += gl_GlobalInvocationID.y*2;\n"
+                                                                         "}\n");
+                       return;
+               }
+
+               programCollection.glslSources.add("frag")
+                       << glu::FragmentSource("#version 430\n"
+                                                                  "layout(location = 0) out vec4 out_FragColor;\n"
+                                                                  "void main()\n"
+                                                                  "{\n"
+                                                                  "    out_FragColor = vec4(1.0, 0.0, 0.0, 1.0);\n"
+                                                                  "}\n");
+
+               programCollection.glslSources.add("vert")
+                       << glu::VertexSource("#version 430\n"
+                                                                "layout(location = 0) in vec4 in_Position;\n"
+                                                                "out gl_PerVertex { vec4 gl_Position; float gl_PointSize; };\n"
+                                                                "void main() {\n"
+                                                                "      gl_Position  = in_Position;\n"
+                                                                "      gl_PointSize = 1.0;\n"
+                                                                "}\n");
+       }
+
+private:
+
+       TestType                        m_testType;
+       VkQueueFlagBits         m_queueFlagBits;
+};
+
+} //anonymous
+
+QueryPoolPerformanceTests::QueryPoolPerformanceTests (tcu::TestContext &testCtx)
+       : TestCaseGroup(testCtx, "performance_query", "Tests for performance queries")
+{
+}
+
+void QueryPoolPerformanceTests::init (void)
+{
+       addChild(new QueryPoolPerformanceTest(m_testCtx, TT_ENUMERATE_AND_VALIDATE, VK_QUEUE_GRAPHICS_BIT, "enumerate_and_validate_graphic"));
+       addChild(new QueryPoolPerformanceTest(m_testCtx, TT_ENUMERATE_AND_VALIDATE, VK_QUEUE_COMPUTE_BIT,  "enumerate_and_validate_compute"));
+       addChild(new QueryPoolPerformanceTest(m_testCtx, TT_QUERY, VK_QUEUE_GRAPHICS_BIT, "query_graphic"));
+       addChild(new QueryPoolPerformanceTest(m_testCtx, TT_QUERY, VK_QUEUE_COMPUTE_BIT, "query_compute"));
+       addChild(new QueryPoolPerformanceTest(m_testCtx, TT_MULTIPLE_POOLS, VK_QUEUE_GRAPHICS_BIT, "multiple_pools_graphic"));
+       addChild(new QueryPoolPerformanceTest(m_testCtx, TT_MULTIPLE_POOLS, VK_QUEUE_COMPUTE_BIT, "multiple_pools_compute"));
+}
+
+} //QueryPool
+} //vkt
+
diff --git a/external/vulkancts/modules/vulkan/query_pool/vktQueryPoolPerformanceTests.hpp b/external/vulkancts/modules/vulkan/query_pool/vktQueryPoolPerformanceTests.hpp
new file mode 100644 (file)
index 0000000..4b5901f
--- /dev/null
@@ -0,0 +1,48 @@
+#ifndef _VKTQUERYPOOLPERFORMANCETESTS_HPP
+#define _VKTQUERYPOOLPERFORMANCETESTS_HPP
+/*------------------------------------------------------------------------
+ * Vulkan Conformance Tests
+ * ------------------------
+ *
+ * Copyright (c) 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.
+ *
+ *//*!
+ * \file
+ * \brief Vulkan Performance Query Tests
+ *//*--------------------------------------------------------------------*/
+
+#include "vktTestCase.hpp"
+
+namespace vkt
+{
+namespace QueryPool
+{
+
+class QueryPoolPerformanceTests : public tcu::TestCaseGroup
+{
+public:
+       QueryPoolPerformanceTests       (tcu::TestContext &testCtx);
+       ~QueryPoolPerformanceTests      (void)  {}
+       void init                                       (void);
+
+private:
+       QueryPoolPerformanceTests                               (const QueryPoolPerformanceTests &other);
+       QueryPoolPerformanceTests&      operator=       (const QueryPoolPerformanceTests &other);
+};
+
+} // QueryPool
+} // vkt
+
+#endif // _VKTQUERYPOOLPERFORMANCETESTS_HPP
index 8bca5c8..4ba8cd2 100644 (file)
@@ -27,6 +27,7 @@
 #include "vktTestGroupUtil.hpp"
 #include "vktQueryPoolOcclusionTests.hpp"
 #include "vktQueryPoolStatisticsTests.hpp"
+#include "vktQueryPoolPerformanceTests.hpp"
 
 namespace vkt
 {
@@ -42,6 +43,7 @@ void createChildren (tcu::TestCaseGroup* queryPoolTests)
 
        queryPoolTests->addChild(new QueryPoolOcclusionTests(testCtx));
        queryPoolTests->addChild(new QueryPoolStatisticsTests(testCtx));
+       queryPoolTests->addChild(new QueryPoolPerformanceTests(testCtx));
 }
 
 } // anonymous
index b6b3917..ab17ca9 100644 (file)
@@ -328,6 +328,7 @@ public:
        VkPhysicalDeviceImagelessFramebufferFeaturesKHR         imagelessFramebufferFeatures;
        VkPhysicalDeviceCooperativeMatrixFeaturesNV                     cooperativeMatrixFeatures;
        VkPhysicalDeviceHostQueryResetFeaturesEXT                       hostQueryResetFeatures;
+       VkPhysicalDevicePerformanceCounterFeaturesKHR           performanceCounterFeatures;
 
        DeviceFeatures (const InstanceInterface&        vki,
                                        const deUint32                          apiVersion,
@@ -356,6 +357,7 @@ public:
                deMemset(&imagelessFramebufferFeatures, 0, sizeof(imagelessFramebufferFeatures));
                deMemset(&cooperativeMatrixFeatures, 0, sizeof(cooperativeMatrixFeatures));
                deMemset(&hostQueryResetFeatures, 0, sizeof(hostQueryResetFeatures));
+               deMemset(&performanceCounterFeatures, 0, sizeof(performanceCounterFeatures));
 
                coreFeatures.sType                                              = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
                samplerYCbCrConversionFeatures.sType    = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES;
@@ -378,6 +380,7 @@ public:
                imagelessFramebufferFeatures.sType              = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR;
                cooperativeMatrixFeatures.sType                 = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV;
                hostQueryResetFeatures.sType                    = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT;
+               performanceCounterFeatures.sType                = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_COUNTER_FEATURES_KHR;
 
                vector<VkExtensionProperties> deviceExtensionProperties =
                        enumerateDeviceExtensionProperties(vki, physicalDevice, DE_NULL);
@@ -456,10 +459,15 @@ public:
                                *nextPtr        = &scalarBlockLayoutFeatures;
                                nextPtr         = &scalarBlockLayoutFeatures.pNext;
                        }
-                       if (de::contains(deviceExtensions.begin(), deviceExtensions.end(), "VK_EXT_depth_clip_enable"))
+            if (de::contains(deviceExtensions.begin(), deviceExtensions.end(), "VK_EXT_depth_clip_enable"))
+            {
+                *nextPtr = &depthClipEnableFeatures;
+                nextPtr = &depthClipEnableFeatures.pNext;
+            }
+                       if (de::contains(deviceExtensions.begin(), deviceExtensions.end(), "VK_KHR_performance_query"))
                        {
-                               *nextPtr        = &depthClipEnableFeatures;
-                               nextPtr         = &depthClipEnableFeatures.pNext;
+                               *nextPtr        = &performanceCounterFeatures;
+                               nextPtr         = &performanceCounterFeatures.pNext;
                        }
                        if (de::contains(deviceExtensions.begin(), deviceExtensions.end(), "VK_KHR_uniform_buffer_standard_layout"))
                        {
@@ -533,9 +541,9 @@ public:
        const VkPhysicalDeviceDepthClipEnableFeaturesEXT&               getDepthClipEnableFeatures                      (void) const    { return m_deviceFeatures.depthClipEnableFeatures;                      }
        const VkPhysicalDeviceBufferAddressFeaturesEXT&                 getBufferDeviceAddressFeatures          (void) const    { return m_deviceFeatures.bufferDeviceAddressFeatures;  }
        const VkPhysicalDeviceImagelessFramebufferFeaturesKHR&  getImagelessFramebufferFeatures         (void) const    { return m_deviceFeatures.imagelessFramebufferFeatures;         }
-
        const VkPhysicalDeviceCooperativeMatrixFeaturesNV&              getCooperativeMatrixFeatures            (void) const    { return m_deviceFeatures.cooperativeMatrixFeatures;    }
        const VkPhysicalDeviceHostQueryResetFeaturesEXT&                getHostQueryResetFeatures                       (void) const    { return m_deviceFeatures.hostQueryResetFeatures;                       }
+       const VkPhysicalDevicePerformanceCounterFeaturesKHR&    getPerformanceCounterFeatures           (void) const    { return m_deviceFeatures.performanceCounterFeatures;           }
        VkDevice                                                                                                getDevice                                                       (void) const    { return *m_device;                                                                                     }
        const DeviceInterface&                                                                  getDeviceInterface                                      (void) const    { return m_deviceInterface;                                                                     }
        const VkPhysicalDeviceProperties&                                               getDeviceProperties                                     (void) const    { return m_deviceProperties;                                                            }
@@ -691,6 +699,8 @@ const vk::VkPhysicalDeviceCooperativeMatrixFeaturesNV&
                                                                                Context::getCooperativeMatrixFeatures   (void) const { return m_device->getCooperativeMatrixFeatures(); }
 const vk::VkPhysicalDeviceHostQueryResetFeaturesEXT&
                                                                                Context::getHostQueryResetFeatures              (void) const { return m_device->getHostQueryResetFeatures();    }
+const vk::VkPhysicalDevicePerformanceCounterFeaturesKHR&
+                                                                               Context::getPerformanceCounterFeatures  (void) const { return m_device->getPerformanceCounterFeatures();        }
 const vk::VkPhysicalDeviceProperties&  Context::getDeviceProperties                    (void) const { return m_device->getDeviceProperties();                  }
 const vector<string>&                                  Context::getDeviceExtensions                    (void) const { return m_device->getDeviceExtensions();                  }
 vk::VkDevice                                                   Context::getDevice                                              (void) const { return m_device->getDevice();                                    }
index d39166e..471cbf9 100644 (file)
@@ -102,6 +102,8 @@ public:
                                                                                                getCooperativeMatrixFeatures    (void) const;
        const vk::VkPhysicalDeviceHostQueryResetFeaturesEXT&
                                                                                                getHostQueryResetFeatures               (void) const;
+       const vk::VkPhysicalDevicePerformanceCounterFeaturesKHR&
+                                                                                               getPerformanceCounterFeatures   (void) const;
        const vk::VkPhysicalDeviceProperties&           getDeviceProperties                             (void) const;
        const std::vector<std::string>&                         getDeviceExtensions                             (void) const;
        vk::VkDevice                                                            getDevice                                               (void) const;
index 241ceee..e07e655 100644 (file)
@@ -312092,6 +312092,12 @@ dEQP-VK.query_pool.statistics_query.host_query_reset.tes_control_patches.tes_con
 dEQP-VK.query_pool.statistics_query.host_query_reset.tes_evaluation_shader_invocations.tes_evaluation_shader_invocations
 dEQP-VK.query_pool.statistics_query.host_query_reset.tes_evaluation_shader_invocations.tes_evaluation_shader_invocations_secondary
 dEQP-VK.query_pool.statistics_query.host_query_reset.tes_evaluation_shader_invocations.tes_evaluation_shader_invocations_secondary_inherited
+dEQP-VK.query_pool.performance_query.enumerate_and_validate_graphic
+dEQP-VK.query_pool.performance_query.enumerate_and_validate_compute
+dEQP-VK.query_pool.performance_query.query_graphic
+dEQP-VK.query_pool.performance_query.query_compute
+dEQP-VK.query_pool.performance_query.multiple_pools_graphic
+dEQP-VK.query_pool.performance_query.multiple_pools_compute
 dEQP-VK.draw.simple_draw.simple_draw_triangle_list
 dEQP-VK.draw.simple_draw.simple_draw_triangle_strip
 dEQP-VK.draw.simple_draw.simple_draw_instanced_triangle_list
index 7590d7e..6164fb5 100644 (file)
@@ -312054,6 +312054,12 @@ dEQP-VK.query_pool.statistics_query.host_query_reset.tes_control_patches.tes_con
 dEQP-VK.query_pool.statistics_query.host_query_reset.tes_evaluation_shader_invocations.tes_evaluation_shader_invocations
 dEQP-VK.query_pool.statistics_query.host_query_reset.tes_evaluation_shader_invocations.tes_evaluation_shader_invocations_secondary
 dEQP-VK.query_pool.statistics_query.host_query_reset.tes_evaluation_shader_invocations.tes_evaluation_shader_invocations_secondary_inherited
+dEQP-VK.query_pool.performance_query.enumerate_and_validate_graphic
+dEQP-VK.query_pool.performance_query.enumerate_and_validate_compute
+dEQP-VK.query_pool.performance_query.query_graphic
+dEQP-VK.query_pool.performance_query.query_compute
+dEQP-VK.query_pool.performance_query.multiple_pools_graphic
+dEQP-VK.query_pool.performance_query.multiple_pools_compute
 dEQP-VK.draw.simple_draw.simple_draw_triangle_list
 dEQP-VK.draw.simple_draw.simple_draw_triangle_strip
 dEQP-VK.draw.simple_draw.simple_draw_instanced_triangle_list
index ee9288a..097eeb5 100755 (executable)
@@ -359,6 +359,13 @@ typedef enum VkStructureType {
     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_COUNTER_FEATURES_KHR = 1000116000,
+    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_COUNTER_PROPERTIES_KHR = 1000116001,
+    VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_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,
@@ -722,6 +729,7 @@ typedef enum VkQueryType {
     VK_QUERY_TYPE_OCCLUSION = 0,
     VK_QUERY_TYPE_PIPELINE_STATISTICS = 1,
     VK_QUERY_TYPE_TIMESTAMP = 2,
+    VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000,
     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),
@@ -5958,6 +5966,149 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceFdKHR(
     int*                                        pFd);
 #endif
 
+#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_BEGIN_RANGE_KHR = VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR,
+    VK_PERFORMANCE_COUNTER_UNIT_END_RANGE_KHR = VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR,
+    VK_PERFORMANCE_COUNTER_UNIT_RANGE_SIZE_KHR = (VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR - VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR + 1),
+    VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 0x7FFFFFFF
+} VkPerformanceCounterUnitKHR;
+
+typedef enum VkPerformanceCounterScopeKHR {
+    VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = 0,
+    VK_QUERY_SCOPE_RENDER_PASS_KHR = 1,
+    VK_QUERY_SCOPE_COMMAND_KHR = 2,
+    VK_PERFORMANCE_COUNTER_SCOPE_BEGIN_RANGE_KHR = VK_QUERY_SCOPE_COMMAND_BUFFER_KHR,
+    VK_PERFORMANCE_COUNTER_SCOPE_END_RANGE_KHR = VK_QUERY_SCOPE_COMMAND_KHR,
+    VK_PERFORMANCE_COUNTER_SCOPE_RANGE_SIZE_KHR = (VK_QUERY_SCOPE_COMMAND_KHR - VK_QUERY_SCOPE_COMMAND_BUFFER_KHR + 1),
+    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_BEGIN_RANGE_KHR = VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR,
+    VK_PERFORMANCE_COUNTER_STORAGE_END_RANGE_KHR = VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR,
+    VK_PERFORMANCE_COUNTER_STORAGE_RANGE_SIZE_KHR = (VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR - VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR + 1),
+    VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 0x7FFFFFFF
+} VkPerformanceCounterStorageKHR;
+
+
+typedef enum VkPerformanceCounterDescriptionFlagBitsKHR {
+    VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = 0x00000001,
+    VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = 0x00000002,
+    VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
+} VkPerformanceCounterDescriptionFlagBitsKHR;
+typedef VkFlags VkPerformanceCounterDescriptionFlagsKHR;
+typedef VkFlags VkAcquireProfilingLockFlagsKHR;
+
+typedef struct VkPhysicalDevicePerformanceCounterFeaturesKHR {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           performanceCounterQueryPools;
+    VkBool32           performanceCounterMultipleQueryPools;
+} VkPhysicalDevicePerformanceCounterFeaturesKHR;
+
+typedef struct VkPhysicalDevicePerformanceCounterPropertiesKHR {
+    VkStructureType    sType;
+    void*              pNext;
+    VkBool32           allowCommandBufferQueryCopies;
+} VkPhysicalDevicePerformanceCounterPropertiesKHR;
+
+typedef struct VkPerformanceCounterKHR {
+    VkStructureType                   sType;
+    const void*                       pNext;
+    VkPerformanceCounterUnitKHR       unit;
+    VkPerformanceCounterScopeKHR      scope;
+    VkPerformanceCounterStorageKHR    storage;
+    uint8_t                           uuid[VK_UUID_SIZE];
+} VkPerformanceCounterKHR;
+
+typedef struct VkPerformanceCounterDescriptionKHR {
+    VkStructureType                            sType;
+    const 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 VkPerformanceQueryCreateInfoKHR {
+    VkStructureType    sType;
+    const void*        pNext;
+    uint32_t           queueFamilyIndex;
+    uint32_t           counterIndexCount;
+    const uint32_t*    pCounterIndices;
+} VkPerformanceQueryCreateInfoKHR;
+
+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 void (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 VkPerformanceQueryCreateInfoKHR* 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 void VKAPI_CALL vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
+    VkPhysicalDevice                            physicalDevice,
+    uint32_t                                    queueFamilyIndex,
+    uint32_t*                                   pCounterCount,
+    VkPerformanceCounterKHR*                    pCounters,
+    VkPerformanceCounterDescriptionKHR*         pCounterDescriptions);
+
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(
+    VkPhysicalDevice                            physicalDevice,
+    const VkPerformanceQueryCreateInfoKHR*      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
 typedef VkImageViewUsageCreateInfo VkImageViewUsageCreateInfoKHR;
 typedef VkInputAttachmentAspectReference VkInputAttachmentAspectReferenceKHR;