diff --git a/renderdoc/driver/vulkan/official/vulkan_core.h b/renderdoc/driver/vulkan/official/vulkan_core.h
index 9770c3b9b..246ae72bd 100644
--- a/renderdoc/driver/vulkan/official/vulkan_core.h
+++ b/renderdoc/driver/vulkan/official/vulkan_core.h
@@ -44,7 +44,7 @@ extern "C" {
#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
// Version of this file
-#define VK_HEADER_VERSION 125
+#define VK_HEADER_VERSION 128
#define VK_NULL_HANDLE 0
@@ -370,6 +370,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_QUERY_FEATURES_KHR = 1000116000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001,
+ VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002,
+ VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003,
+ VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004,
+ VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005,
+ VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000,
VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001,
VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002,
@@ -505,6 +512,9 @@ typedef enum VkStructureType {
VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001,
VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000,
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = 1000241000,
+ VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = 1000241001,
+ VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = 1000241002,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000,
VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = 1000244001,
VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002,
@@ -948,6 +958,7 @@ typedef enum VkQueryType {
VK_QUERY_TYPE_PIPELINE_STATISTICS = 1,
VK_QUERY_TYPE_TIMESTAMP = 2,
VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004,
+ VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000,
VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000,
VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000,
VK_QUERY_TYPE_BEGIN_RANGE = VK_QUERY_TYPE_OCCLUSION,
@@ -981,6 +992,10 @@ typedef enum VkImageLayout {
VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000,
VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003,
VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000,
+ VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR = 1000241000,
+ VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = 1000241001,
+ VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000241002,
+ VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000241003,
VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,
VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,
VK_IMAGE_LAYOUT_BEGIN_RANGE = VK_IMAGE_LAYOUT_UNDEFINED,
@@ -1684,10 +1699,11 @@ typedef enum VkPipelineCreateFlagBits {
VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002,
VK_PIPELINE_CREATE_DERIVATIVE_BIT = 0x00000004,
VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 0x00000008,
- VK_PIPELINE_CREATE_DISPATCH_BASE = 0x00000010,
+ VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 0x00000010,
VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 0x00000020,
VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 0x00000040,
VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 0x00000080,
+ VK_PIPELINE_CREATE_DISPATCH_BASE = VK_PIPELINE_CREATE_DISPATCH_BASE_BIT,
VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT,
VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = VK_PIPELINE_CREATE_DISPATCH_BASE,
VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
@@ -5908,6 +5924,150 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceFdKHR(
#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 enum VkAcquireProfilingLockFlagBitsKHR {
+ VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
+} VkAcquireProfilingLockFlagBitsKHR;
+typedef VkFlags VkAcquireProfilingLockFlagsKHR;
+typedef struct VkPhysicalDevicePerformanceQueryFeaturesKHR {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 performanceCounterQueryPools;
+ VkBool32 performanceCounterMultipleQueryPools;
+} VkPhysicalDevicePerformanceQueryFeaturesKHR;
+
+typedef struct VkPhysicalDevicePerformanceQueryPropertiesKHR {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 allowCommandBufferQueryCopies;
+} VkPhysicalDevicePerformanceQueryPropertiesKHR;
+
+typedef struct VkPerformanceCounterKHR {
+ VkStructureType sType;
+ 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 VkQueryPoolPerformanceCreateInfoKHR {
+ VkStructureType sType;
+ const void* pNext;
+ uint32_t queueFamilyIndex;
+ uint32_t counterIndexCount;
+ const uint32_t* pCounterIndices;
+} VkQueryPoolPerformanceCreateInfoKHR;
+
+typedef union VkPerformanceCounterResultKHR {
+ int32_t int32;
+ int64_t int64;
+ uint32_t uint32;
+ uint64_t uint64;
+ float float32;
+ double float64;
+} VkPerformanceCounterResultKHR;
+
+typedef struct VkAcquireProfilingLockInfoKHR {
+ VkStructureType sType;
+ const void* pNext;
+ VkAcquireProfilingLockFlagsKHR flags;
+ uint64_t timeout;
+} VkAcquireProfilingLockInfoKHR;
+
+typedef struct VkPerformanceQuerySubmitInfoKHR {
+ VkStructureType sType;
+ const void* pNext;
+ uint32_t counterPassIndex;
+} VkPerformanceQuerySubmitInfoKHR;
+
+typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, uint32_t* pCounterCount, VkPerformanceCounterKHR* pCounters, VkPerformanceCounterDescriptionKHR* pCounterDescriptions);
+typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR)(VkPhysicalDevice physicalDevice, const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo, uint32_t* pNumPasses);
+typedef VkResult (VKAPI_PTR *PFN_vkAcquireProfilingLockKHR)(VkDevice device, const VkAcquireProfilingLockInfoKHR* pInfo);
+typedef void (VKAPI_PTR *PFN_vkReleaseProfilingLockKHR)(VkDevice device);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
+ VkPhysicalDevice physicalDevice,
+ uint32_t queueFamilyIndex,
+ uint32_t* pCounterCount,
+ VkPerformanceCounterKHR* pCounters,
+ VkPerformanceCounterDescriptionKHR* pCounterDescriptions);
+
+VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(
+ VkPhysicalDevice physicalDevice,
+ const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo,
+ uint32_t* pNumPasses);
+
+VKAPI_ATTR VkResult VKAPI_CALL vkAcquireProfilingLockKHR(
+ VkDevice device,
+ const VkAcquireProfilingLockInfoKHR* pInfo);
+
+VKAPI_ATTR void VKAPI_CALL vkReleaseProfilingLockKHR(
+ VkDevice device);
+#endif
+
+
#define VK_KHR_maintenance2 1
#define VK_KHR_MAINTENANCE2_SPEC_VERSION 1
#define VK_KHR_MAINTENANCE2_EXTENSION_NAME "VK_KHR_maintenance2"
@@ -6485,6 +6645,30 @@ typedef struct VkSurfaceProtectedCapabilitiesKHR {
+#define VK_KHR_separate_depth_stencil_layouts 1
+#define VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION 1
+#define VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME "VK_KHR_separate_depth_stencil_layouts"
+typedef struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR {
+ VkStructureType sType;
+ void* pNext;
+ VkBool32 separateDepthStencilLayouts;
+} VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR;
+
+typedef struct VkAttachmentReferenceStencilLayoutKHR {
+ VkStructureType sType;
+ void* pNext;
+ VkImageLayout stencilLayout;
+} VkAttachmentReferenceStencilLayoutKHR;
+
+typedef struct VkAttachmentDescriptionStencilLayoutKHR {
+ VkStructureType sType;
+ void* pNext;
+ VkImageLayout stencilInitialLayout;
+ VkImageLayout stencilFinalLayout;
+} VkAttachmentDescriptionStencilLayoutKHR;
+
+
+
#define VK_KHR_uniform_buffer_standard_layout 1
#define VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION 1
#define VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME "VK_KHR_uniform_buffer_standard_layout"
@@ -7147,7 +7331,7 @@ typedef struct VkValidationFlagsEXT {
#define VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME "VK_EXT_texture_compression_astc_hdr"
typedef struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT {
VkStructureType sType;
- const void* pNext;
+ void* pNext;
VkBool32 textureCompressionASTC_HDR;
} VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT;
diff --git a/renderdoc/driver/vulkan/vk.xml b/renderdoc/driver/vulkan/vk.xml
index 3f5ca9c82..26ff4cc7d 100644
--- a/renderdoc/driver/vulkan/vk.xml
+++ b/renderdoc/driver/vulkan/vk.xml
@@ -154,7 +154,7 @@ server.
// Vulkan 1.1 version number
#define VK_API_VERSION_1_1 VK_MAKE_VERSION(1, 1, 0)// Patch version should always be set to 0
// Version of this file
-#define VK_HEADER_VERSION 125
+#define VK_HEADER_VERSION 128
#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object;
@@ -269,9 +269,11 @@ typedef void CAMetalLayer;
typedef VkFlags VkDescriptorUpdateTemplateCreateFlags;
typedef VkFlags VkPipelineCreationFeedbackFlagsEXT;
+ typedef VkFlags VkPerformanceCounterDescriptionFlagsKHR;
+ typedef VkFlags VkAcquireProfilingLockFlagsKHR;
+ typedef VkFlags VkSemaphoreWaitFlagsKHR;
typedef VkFlags VkPipelineCompilerControlFlagsAMD;
typedef VkFlags VkShaderCorePropertiesFlagsAMD;
- typedef VkFlags VkSemaphoreWaitFlagsKHR;
WSI extensions
typedef VkFlags VkCompositeAlphaFlagsKHR;
@@ -338,7 +340,6 @@ typedef void CAMetalLayer;
typedef VkFlags VkPipelineRasterizationDepthClipStateCreateFlagsEXT;
typedef VkFlags VkSwapchainImageUsageFlagsANDROID;
-
Types which can be void pointers or class pointers, selected at compile time
VK_DEFINE_HANDLE(VkInstance)
VK_DEFINE_HANDLE(VkPhysicalDevice)
@@ -508,6 +509,11 @@ typedef void CAMetalLayer;
+
+
+
+
+
@@ -889,8 +895,8 @@ typedef void CAMetalLayer;
VkStructureType sType
const void* pNext
- VkAccessFlags srcAccessMaskMemory accesses from the source of the dependency to synchronize
- VkAccessFlags dstAccessMaskMemory accesses from the destination of the dependency to synchronize
+ VkAccessFlags srcAccessMaskMemory accesses from the source of the dependency to synchronize
+ VkAccessFlags dstAccessMaskMemory accesses from the destination of the dependency to synchronize
uint32_t srcQueueFamilyIndexQueue family to transition ownership from
uint32_t dstQueueFamilyIndexQueue family to transition ownership to
VkBuffer bufferBuffer to sync
@@ -900,8 +906,8 @@ typedef void CAMetalLayer;
VkStructureType sType
const void* pNext
- VkAccessFlags srcAccessMaskMemory accesses from the source of the dependency to synchronize
- VkAccessFlags dstAccessMaskMemory accesses from the destination of the dependency to synchronize
+ VkAccessFlags srcAccessMaskMemory accesses from the source of the dependency to synchronize
+ VkAccessFlags dstAccessMaskMemory accesses from the destination of the dependency to synchronize
VkImageLayout oldLayoutCurrent layout of the image
VkImageLayout newLayoutNew layout to transition the image to
uint32_t srcQueueFamilyIndexQueue family to transition ownership from
@@ -1364,7 +1370,7 @@ typedef void CAMetalLayer;
VkStructureType sType
const void* pNext
- VkRenderPassCreateFlags flags
+ VkRenderPassCreateFlags flags
uint32_t attachmentCount
const VkAttachmentDescription* pAttachments
uint32_t subpassCount
@@ -3314,7 +3320,7 @@ typedef void CAMetalLayer;
VkStructureType sType
const void* pNext
- VkRenderPassCreateFlags flags
+ VkRenderPassCreateFlags flags
uint32_t attachmentCount
const VkAttachmentDescription2KHR* pAttachments
uint32_t subpassCount
@@ -3918,8 +3924,8 @@ typedef void CAMetalLayer;
VkStructureType sType
- const void* pNext
- VkBool32 textureCompressionASTC_HDR
+ void* pNext
+ VkBool32 textureCompressionASTC_HDR
VkStructureType sType
@@ -3987,6 +3993,58 @@ typedef void CAMetalLayer;
void* pNext
VkBool32 fullScreenExclusiveSupported
+
+ VkStructureType sType
+ void* pNext
+ VkBool32 performanceCounterQueryPoolsperformance counters supported in query pools
+ VkBool32 performanceCounterMultipleQueryPoolsperformance counters from multiple query pools can be accessed in the same primary command buffer
+
+ VkStructureType sType
+ void* pNext
+ VkBool32 allowCommandBufferQueryCopiesFlag to specify whether performance queries are allowed to be used in vkCmdCopyQueryPoolResults
+
+
+ VkStructureType sType
+ const void* pNext
+ VkPerformanceCounterUnitKHR unit
+ VkPerformanceCounterScopeKHR scope
+ VkPerformanceCounterStorageKHR storage
+ uint8_t uuid[VK_UUID_SIZE]
+
+
+ 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]
+
+
+ VkStructureType sType
+ const void* pNext
+ uint32_t queueFamilyIndex
+ uint32_t counterIndexCount
+ const uint32_t* pCounterIndices
+
+
+ int32_t int32
+ int64_t int64
+ uint32_t uint32
+ uint64_t uint64
+ float float32
+ double float64
+
+
+ VkStructureType sType
+ const void* pNext
+ VkAcquireProfilingLockFlagsKHR flagsAcquire profiling lock flags
+ uint64_t timeout
+
+
+ VkStructureType sType
+ const void* pNext
+ uint32_t counterPassIndexIndex for which counter pass to submit
+
VkStructureType sType
const void* pNext
@@ -4088,6 +4146,22 @@ typedef void CAMetalLayer;
VkBool32 fragmentShaderPixelInterlock
VkBool32 fragmentShaderShadingRateInterlock
+
+ VkStructureTypesType
+ void* pNext
+ VkBool32 separateDepthStencilLayouts
+
+
+ VkStructureTypesType
+ void* pNext
+ VkImageLayout stencilLayout
+
+
+ VkStructureTypesType
+ void* pNext
+ VkImageLayout stencilInitialLayout
+ VkImageLayout stencilFinalLayout
+
VkStructureType sType
void* pNext
@@ -5459,6 +5533,38 @@ typedef void CAMetalLayer;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -6009,7 +6115,7 @@ typedef void CAMetalLayer;
VkDescriptorPool descriptorPool
const VkAllocationCallbacks* pAllocator
-
+
VkResult vkResetDescriptorPool
VkDevice device
VkDescriptorPool descriptorPool
@@ -6024,7 +6130,7 @@ typedef void CAMetalLayer;
const VkDescriptorSetAllocateInfo* pAllocateInfo
VkDescriptorSet* pDescriptorSets
-
+
VkResult vkFreeDescriptorSets
VkDevice device
VkDescriptorPool descriptorPool
@@ -7716,17 +7822,6 @@ typedef void CAMetalLayer;
const VkAllocationCallbacks* pAllocator
VkPipeline* pPipelines
-
- VkResult vkGetImageDrmFormatModifierPropertiesEXT
- VkDevice device
- VkImage image
- VkImageDrmFormatModifierPropertiesEXT* pProperties
-
-
- VkDeviceAddress vkGetBufferDeviceAddressEXT
- VkDevice device
- const VkBufferDeviceAddressInfoEXT* pInfo
-
VkResult vkGetPhysicalDeviceCooperativeMatrixPropertiesNV
VkPhysicalDevice physicalDevice
@@ -7761,6 +7856,40 @@ typedef void CAMetalLayer;
VkDevice device
VkSwapchainKHR swapchain
+
+ VkResult vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR
+ VkPhysicalDevice physicalDevice
+ uint32_t queueFamilyIndex
+ uint32_t* pCounterCount
+ VkPerformanceCounterKHR* pCounters
+ VkPerformanceCounterDescriptionKHR* pCounterDescriptions
+
+
+ void vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR
+ VkPhysicalDevice physicalDevice
+ const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo
+ uint32_t* pNumPasses
+
+
+ VkResult vkAcquireProfilingLockKHR
+ VkDevice device
+ const VkAcquireProfilingLockInfoKHR* pInfo
+
+
+ void vkReleaseProfilingLockKHR
+ VkDevice device
+
+
+ VkResult vkGetImageDrmFormatModifierPropertiesEXT
+ VkDevice device
+ VkImage image
+ VkImageDrmFormatModifierPropertiesEXT* pProperties
+
+
+ VkDeviceAddress vkGetBufferDeviceAddressEXT
+ VkDevice device
+ const VkBufferDeviceAddressInfoEXT* pInfo
+
VkResult vkCreateHeadlessSurfaceEXT
VkInstance instance
@@ -8063,7 +8192,7 @@ typedef void CAMetalLayer;
-
+
@@ -8131,7 +8260,8 @@ typedef void CAMetalLayer;
-
+
+
@@ -9805,10 +9935,37 @@ typedef void CAMetalLayer;
-
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -10209,6 +10366,7 @@ typedef void CAMetalLayer;
+
@@ -11213,10 +11371,20 @@ typedef void CAMetalLayer;
-
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
@@ -11362,7 +11530,7 @@ typedef void CAMetalLayer;
-
+
@@ -11615,6 +11783,8 @@ typedef void CAMetalLayer;
+
+
@@ -11635,5 +11805,34 @@ typedef void CAMetalLayer;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/renderdoc/driver/vulkan/vk_dispatch_defs.h b/renderdoc/driver/vulkan/vk_dispatch_defs.h
index 3efb4413a..371e1eb4a 100644
--- a/renderdoc/driver/vulkan/vk_dispatch_defs.h
+++ b/renderdoc/driver/vulkan/vk_dispatch_defs.h
@@ -180,6 +180,10 @@ struct VkInstDispatchTable
// VK_KHR_external_fence_capabilities
PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR GetPhysicalDeviceExternalFencePropertiesKHR;
+ // VK_KHR_performance_query
+ PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR;
+ PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR;
+
// VK_KHR_get_surface_capabilities2
PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR GetPhysicalDeviceSurfaceCapabilities2KHR;
PFN_vkGetPhysicalDeviceSurfaceFormats2KHR GetPhysicalDeviceSurfaceFormats2KHR;
@@ -481,6 +485,10 @@ struct VkDevDispatchTable
PFN_vkImportFenceFdKHR ImportFenceFdKHR;
PFN_vkGetFenceFdKHR GetFenceFdKHR;
+ // VK_KHR_performance_query
+ PFN_vkAcquireProfilingLockKHR AcquireProfilingLockKHR;
+ PFN_vkReleaseProfilingLockKHR ReleaseProfilingLockKHR;
+
// VK_KHR_get_memory_requirements2
PFN_vkGetImageMemoryRequirements2KHR GetImageMemoryRequirements2KHR;
PFN_vkGetBufferMemoryRequirements2KHR GetBufferMemoryRequirements2KHR;
diff --git a/renderdoc/driver/vulkan/vk_next_chains.cpp b/renderdoc/driver/vulkan/vk_next_chains.cpp
index 74f748534..bd87185d2 100644
--- a/renderdoc/driver/vulkan/vk_next_chains.cpp
+++ b/renderdoc/driver/vulkan/vk_next_chains.cpp
@@ -512,9 +512,12 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV: \
case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV: \
case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV: \
+ case VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR: \
case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID: \
case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID: \
case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID: \
+ case VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR: \
+ case VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR: \
case VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV: \
case VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV: \
case VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX: \
@@ -546,8 +549,11 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
case VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT: \
case VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX: \
case VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL: \
+ case VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR: \
+ case VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR: \
case VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL: \
case VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL: \
+ case VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR: \
case VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL: \
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT: \
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT: \
@@ -566,8 +572,11 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV: \
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV: \
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX: \
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR: \
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR: \
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV: \
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV: \
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR: \
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD: \
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL: \
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV: \
@@ -588,6 +597,7 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV: \
case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV: \
case VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL: \
+ case VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR: \
case VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV: \
case VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV: \
case VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV: \
diff --git a/renderdoc/driver/vulkan/vk_serialise.cpp b/renderdoc/driver/vulkan/vk_serialise.cpp
index b6bcf1332..6d0640f02 100644
--- a/renderdoc/driver/vulkan/vk_serialise.cpp
+++ b/renderdoc/driver/vulkan/vk_serialise.cpp
@@ -1002,6 +1002,20 @@ SERIALISE_VK_HANDLES();
/* VK_EXT_texture_compression_astc_hdr */ \
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT) \
\
+ /* VK_KHR_separate_depth_stencil_layouts */ \
+ PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR) \
+ PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR) \
+ PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR) \
+ \
+ /* VK_KHR_performance_query */ \
+ PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR) \
+ PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR) \
+ PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR) \
+ PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR) \
+ PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR) \
+ PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR) \
+ PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR) \
+ \
/* VK_INTEL_performance_query */ \
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL) \
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL) \
diff --git a/renderdoc/driver/vulkan/vk_stringise.cpp b/renderdoc/driver/vulkan/vk_stringise.cpp
index 2962b387f..edeafd551 100644
--- a/renderdoc/driver/vulkan/vk_stringise.cpp
+++ b/renderdoc/driver/vulkan/vk_stringise.cpp
@@ -267,7 +267,7 @@ rdcstr DoStringise(const VkPipelineCreateFlagBits &el)
STRINGISE_BITFIELD_BIT(VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT);
STRINGISE_BITFIELD_BIT(VK_PIPELINE_CREATE_DERIVATIVE_BIT);
STRINGISE_BITFIELD_BIT(VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT);
- STRINGISE_BITFIELD_BIT(VK_PIPELINE_CREATE_DISPATCH_BASE);
+ STRINGISE_BITFIELD_BIT(VK_PIPELINE_CREATE_DISPATCH_BASE_BIT);
STRINGISE_BITFIELD_BIT(VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV);
STRINGISE_BITFIELD_BIT(VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR);
STRINGISE_BITFIELD_BIT(VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR);
@@ -1264,6 +1264,7 @@ rdcstr DoStringise(const VkQueryType &el)
STRINGISE_ENUM(VK_QUERY_TYPE_PIPELINE_STATISTICS)
STRINGISE_ENUM(VK_QUERY_TYPE_TIMESTAMP)
STRINGISE_ENUM(VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT)
+ STRINGISE_ENUM(VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR)
STRINGISE_ENUM(VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV)
STRINGISE_ENUM(VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL)
}
@@ -1337,6 +1338,10 @@ rdcstr DoStringise(const VkImageLayout &el)
STRINGISE_ENUM(VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR)
STRINGISE_ENUM(VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV)
STRINGISE_ENUM(VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT)
+ STRINGISE_ENUM(VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR)
+ STRINGISE_ENUM(VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR)
+ STRINGISE_ENUM(VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR)
+ STRINGISE_ENUM(VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR)
}
END_ENUM_STRINGISE();
}
@@ -1560,6 +1565,13 @@ rdcstr DoStringise(const VkStructureType &el)
STRINGISE_ENUM(VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR)
STRINGISE_ENUM(VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR)
STRINGISE_ENUM(VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR)
+ STRINGISE_ENUM(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR)
+ STRINGISE_ENUM(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR)
+ STRINGISE_ENUM(VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR)
+ STRINGISE_ENUM(VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR)
+ STRINGISE_ENUM(VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR)
+ STRINGISE_ENUM(VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR)
+ STRINGISE_ENUM(VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR)
STRINGISE_ENUM(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR)
STRINGISE_ENUM(VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR)
STRINGISE_ENUM(VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR)
@@ -1695,6 +1707,9 @@ rdcstr DoStringise(const VkStructureType &el)
STRINGISE_ENUM(VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT)
STRINGISE_ENUM(VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR)
STRINGISE_ENUM(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV)
+ STRINGISE_ENUM(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR)
+ STRINGISE_ENUM(VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR)
+ STRINGISE_ENUM(VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR)
STRINGISE_ENUM(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT)
STRINGISE_ENUM(VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT)
STRINGISE_ENUM(VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT)