From 4393ecf6fcac5f053b389f3ec695a2838c4103eb Mon Sep 17 00:00:00 2001 From: Peter Harris Date: Tue, 14 Oct 2025 21:05:41 +0100 Subject: [PATCH 1/2] Update Vulkan headers to v1.4.329 --- source_third_party/khronos/vulkan | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source_third_party/khronos/vulkan b/source_third_party/khronos/vulkan index b39ab380..33d7f512 160000 --- a/source_third_party/khronos/vulkan +++ b/source_third_party/khronos/vulkan @@ -1 +1 @@ -Subproject commit b39ab380a44b6c8df462c34e976ea9ce2d2c336b +Subproject commit 33d7f512583b8de44d1b6384aa1cf482f92e53e9 From 1c59549dc8cbd625029e1319ebe2534f090730e9 Mon Sep 17 00:00:00 2001 From: Peter Harris Date: Tue, 14 Oct 2025 21:08:47 +0100 Subject: [PATCH 2/2] Update Vulkan common to v1.4.329 --- .../framework/device_dispatch_table.hpp | 36 +++ source_common/framework/device_functions.cpp | 223 ++++++++++++++- source_common/framework/device_functions.hpp | 194 ++++++++++++- .../framework/device_functions_query.hpp | 266 +++++++++++++++++- .../framework/instance_dispatch_table.hpp | 18 ++ .../framework/instance_functions.cpp | 37 +++ .../framework/instance_functions.hpp | 32 +++ .../framework/instance_functions_query.hpp | 44 +++ 8 files changed, 846 insertions(+), 4 deletions(-) diff --git a/source_common/framework/device_dispatch_table.hpp b/source_common/framework/device_dispatch_table.hpp index fd405b07..e3c6b5ee 100644 --- a/source_common/framework/device_dispatch_table.hpp +++ b/source_common/framework/device_dispatch_table.hpp @@ -77,6 +77,7 @@ static const struct DeviceInterceptTableEntry deviceIntercepts[] = { ENTRY(vkBindBufferMemory), ENTRY(vkBindBufferMemory2), ENTRY(vkBindBufferMemory2KHR), + ENTRY(vkBindDataGraphPipelineSessionMemoryARM), ENTRY(vkBindImageMemory), ENTRY(vkBindImageMemory2), ENTRY(vkBindImageMemory2KHR), @@ -131,7 +132,9 @@ static const struct DeviceInterceptTableEntry deviceIntercepts[] = { ENTRY(vkCmdCopyImageToBuffer), ENTRY(vkCmdCopyImageToBuffer2), ENTRY(vkCmdCopyImageToBuffer2KHR), + ENTRY(vkCmdCopyMemoryIndirectKHR), ENTRY(vkCmdCopyMemoryToAccelerationStructureKHR), + ENTRY(vkCmdCopyMemoryToImageIndirectKHR), ENTRY(vkCmdCopyMemoryToMicromapEXT), ENTRY(vkCmdCopyMicromapEXT), ENTRY(vkCmdCopyMicromapToMemoryEXT), @@ -143,6 +146,7 @@ static const struct DeviceInterceptTableEntry deviceIntercepts[] = { ENTRY(vkCmdDispatch), ENTRY(vkCmdDispatchBase), ENTRY(vkCmdDispatchBaseKHR), + ENTRY(vkCmdDispatchDataGraphARM), ENTRY(vkCmdDispatchIndirect), ENTRY(vkCmdDraw), ENTRY(vkCmdDrawIndexed), @@ -322,6 +326,8 @@ static const struct DeviceInterceptTableEntry deviceIntercepts[] = { ENTRY(vkCreateBufferView), ENTRY(vkCreateCommandPool), ENTRY(vkCreateComputePipelines), + ENTRY(vkCreateDataGraphPipelineSessionARM), + ENTRY(vkCreateDataGraphPipelinesARM), ENTRY(vkCreateDeferredOperationKHR), ENTRY(vkCreateDescriptorPool), ENTRY(vkCreateDescriptorSetLayout), @@ -364,6 +370,7 @@ static const struct DeviceInterceptTableEntry deviceIntercepts[] = { ENTRY(vkDestroyBuffer), ENTRY(vkDestroyBufferView), ENTRY(vkDestroyCommandPool), + ENTRY(vkDestroyDataGraphPipelineSessionARM), ENTRY(vkDestroyDeferredOperationKHR), ENTRY(vkDestroyDescriptorPool), ENTRY(vkDestroyDescriptorSetLayout), @@ -417,6 +424,10 @@ static const struct DeviceInterceptTableEntry deviceIntercepts[] = { ENTRY(vkGetBufferOpaqueCaptureDescriptorDataEXT), ENTRY(vkGetCalibratedTimestampsEXT), ENTRY(vkGetCalibratedTimestampsKHR), + ENTRY(vkGetDataGraphPipelineAvailablePropertiesARM), + ENTRY(vkGetDataGraphPipelinePropertiesARM), + ENTRY(vkGetDataGraphPipelineSessionBindPointRequirementsARM), + ENTRY(vkGetDataGraphPipelineSessionMemoryRequirementsARM), ENTRY(vkGetDeferredOperationMaxConcurrencyKHR), ENTRY(vkGetDeferredOperationResultKHR), ENTRY(vkGetDescriptorEXT), @@ -519,6 +530,7 @@ static const struct DeviceInterceptTableEntry deviceIntercepts[] = { ENTRY(vkReleaseCapturedPipelineDataKHR), ENTRY(vkReleaseProfilingLockKHR), ENTRY(vkReleaseSwapchainImagesEXT), + ENTRY(vkReleaseSwapchainImagesKHR), ENTRY(vkResetCommandBuffer), ENTRY(vkResetCommandPool), ENTRY(vkResetDescriptorPool), @@ -572,6 +584,7 @@ struct DeviceDispatchTable { PFN_vkBindBufferMemory vkBindBufferMemory; PFN_vkBindBufferMemory2 vkBindBufferMemory2; PFN_vkBindBufferMemory2KHR vkBindBufferMemory2KHR; + PFN_vkBindDataGraphPipelineSessionMemoryARM vkBindDataGraphPipelineSessionMemoryARM; PFN_vkBindImageMemory vkBindImageMemory; PFN_vkBindImageMemory2 vkBindImageMemory2; PFN_vkBindImageMemory2KHR vkBindImageMemory2KHR; @@ -626,7 +639,9 @@ struct DeviceDispatchTable { PFN_vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer; PFN_vkCmdCopyImageToBuffer2 vkCmdCopyImageToBuffer2; PFN_vkCmdCopyImageToBuffer2KHR vkCmdCopyImageToBuffer2KHR; + PFN_vkCmdCopyMemoryIndirectKHR vkCmdCopyMemoryIndirectKHR; PFN_vkCmdCopyMemoryToAccelerationStructureKHR vkCmdCopyMemoryToAccelerationStructureKHR; + PFN_vkCmdCopyMemoryToImageIndirectKHR vkCmdCopyMemoryToImageIndirectKHR; PFN_vkCmdCopyMemoryToMicromapEXT vkCmdCopyMemoryToMicromapEXT; PFN_vkCmdCopyMicromapEXT vkCmdCopyMicromapEXT; PFN_vkCmdCopyMicromapToMemoryEXT vkCmdCopyMicromapToMemoryEXT; @@ -638,6 +653,7 @@ struct DeviceDispatchTable { PFN_vkCmdDispatch vkCmdDispatch; PFN_vkCmdDispatchBase vkCmdDispatchBase; PFN_vkCmdDispatchBaseKHR vkCmdDispatchBaseKHR; + PFN_vkCmdDispatchDataGraphARM vkCmdDispatchDataGraphARM; PFN_vkCmdDispatchIndirect vkCmdDispatchIndirect; PFN_vkCmdDraw vkCmdDraw; PFN_vkCmdDrawIndexed vkCmdDrawIndexed; @@ -817,6 +833,8 @@ struct DeviceDispatchTable { PFN_vkCreateBufferView vkCreateBufferView; PFN_vkCreateCommandPool vkCreateCommandPool; PFN_vkCreateComputePipelines vkCreateComputePipelines; + PFN_vkCreateDataGraphPipelineSessionARM vkCreateDataGraphPipelineSessionARM; + PFN_vkCreateDataGraphPipelinesARM vkCreateDataGraphPipelinesARM; PFN_vkCreateDeferredOperationKHR vkCreateDeferredOperationKHR; PFN_vkCreateDescriptorPool vkCreateDescriptorPool; PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout; @@ -859,6 +877,7 @@ struct DeviceDispatchTable { PFN_vkDestroyBuffer vkDestroyBuffer; PFN_vkDestroyBufferView vkDestroyBufferView; PFN_vkDestroyCommandPool vkDestroyCommandPool; + PFN_vkDestroyDataGraphPipelineSessionARM vkDestroyDataGraphPipelineSessionARM; PFN_vkDestroyDeferredOperationKHR vkDestroyDeferredOperationKHR; PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool; PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout; @@ -912,6 +931,10 @@ struct DeviceDispatchTable { PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT vkGetBufferOpaqueCaptureDescriptorDataEXT; PFN_vkGetCalibratedTimestampsEXT vkGetCalibratedTimestampsEXT; PFN_vkGetCalibratedTimestampsKHR vkGetCalibratedTimestampsKHR; + PFN_vkGetDataGraphPipelineAvailablePropertiesARM vkGetDataGraphPipelineAvailablePropertiesARM; + PFN_vkGetDataGraphPipelinePropertiesARM vkGetDataGraphPipelinePropertiesARM; + PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM vkGetDataGraphPipelineSessionBindPointRequirementsARM; + PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM vkGetDataGraphPipelineSessionMemoryRequirementsARM; PFN_vkGetDeferredOperationMaxConcurrencyKHR vkGetDeferredOperationMaxConcurrencyKHR; PFN_vkGetDeferredOperationResultKHR vkGetDeferredOperationResultKHR; PFN_vkGetDescriptorEXT vkGetDescriptorEXT; @@ -1013,6 +1036,7 @@ struct DeviceDispatchTable { PFN_vkReleaseCapturedPipelineDataKHR vkReleaseCapturedPipelineDataKHR; PFN_vkReleaseProfilingLockKHR vkReleaseProfilingLockKHR; PFN_vkReleaseSwapchainImagesEXT vkReleaseSwapchainImagesEXT; + PFN_vkReleaseSwapchainImagesKHR vkReleaseSwapchainImagesKHR; PFN_vkResetCommandBuffer vkResetCommandBuffer; PFN_vkResetCommandPool vkResetCommandPool; PFN_vkResetDescriptorPool vkResetDescriptorPool; @@ -1076,6 +1100,7 @@ static inline void initDriverDeviceDispatchTable( ENTRY(vkBindBufferMemory); ENTRY(vkBindBufferMemory2); ENTRY(vkBindBufferMemory2KHR); + ENTRY(vkBindDataGraphPipelineSessionMemoryARM); ENTRY(vkBindImageMemory); ENTRY(vkBindImageMemory2); ENTRY(vkBindImageMemory2KHR); @@ -1130,7 +1155,9 @@ static inline void initDriverDeviceDispatchTable( ENTRY(vkCmdCopyImageToBuffer); ENTRY(vkCmdCopyImageToBuffer2); ENTRY(vkCmdCopyImageToBuffer2KHR); + ENTRY(vkCmdCopyMemoryIndirectKHR); ENTRY(vkCmdCopyMemoryToAccelerationStructureKHR); + ENTRY(vkCmdCopyMemoryToImageIndirectKHR); ENTRY(vkCmdCopyMemoryToMicromapEXT); ENTRY(vkCmdCopyMicromapEXT); ENTRY(vkCmdCopyMicromapToMemoryEXT); @@ -1142,6 +1169,7 @@ static inline void initDriverDeviceDispatchTable( ENTRY(vkCmdDispatch); ENTRY(vkCmdDispatchBase); ENTRY(vkCmdDispatchBaseKHR); + ENTRY(vkCmdDispatchDataGraphARM); ENTRY(vkCmdDispatchIndirect); ENTRY(vkCmdDraw); ENTRY(vkCmdDrawIndexed); @@ -1321,6 +1349,8 @@ static inline void initDriverDeviceDispatchTable( ENTRY(vkCreateBufferView); ENTRY(vkCreateCommandPool); ENTRY(vkCreateComputePipelines); + ENTRY(vkCreateDataGraphPipelineSessionARM); + ENTRY(vkCreateDataGraphPipelinesARM); ENTRY(vkCreateDeferredOperationKHR); ENTRY(vkCreateDescriptorPool); ENTRY(vkCreateDescriptorSetLayout); @@ -1363,6 +1393,7 @@ static inline void initDriverDeviceDispatchTable( ENTRY(vkDestroyBuffer); ENTRY(vkDestroyBufferView); ENTRY(vkDestroyCommandPool); + ENTRY(vkDestroyDataGraphPipelineSessionARM); ENTRY(vkDestroyDeferredOperationKHR); ENTRY(vkDestroyDescriptorPool); ENTRY(vkDestroyDescriptorSetLayout); @@ -1416,6 +1447,10 @@ static inline void initDriverDeviceDispatchTable( ENTRY(vkGetBufferOpaqueCaptureDescriptorDataEXT); ENTRY(vkGetCalibratedTimestampsEXT); ENTRY(vkGetCalibratedTimestampsKHR); + ENTRY(vkGetDataGraphPipelineAvailablePropertiesARM); + ENTRY(vkGetDataGraphPipelinePropertiesARM); + ENTRY(vkGetDataGraphPipelineSessionBindPointRequirementsARM); + ENTRY(vkGetDataGraphPipelineSessionMemoryRequirementsARM); ENTRY(vkGetDeferredOperationMaxConcurrencyKHR); ENTRY(vkGetDeferredOperationResultKHR); ENTRY(vkGetDescriptorEXT); @@ -1517,6 +1552,7 @@ static inline void initDriverDeviceDispatchTable( ENTRY(vkReleaseCapturedPipelineDataKHR); ENTRY(vkReleaseProfilingLockKHR); ENTRY(vkReleaseSwapchainImagesEXT); + ENTRY(vkReleaseSwapchainImagesKHR); ENTRY(vkResetCommandBuffer); ENTRY(vkResetCommandPool); ENTRY(vkResetDescriptorPool); diff --git a/source_common/framework/device_functions.cpp b/source_common/framework/device_functions.cpp index bbfa3f54..36ecc70f 100644 --- a/source_common/framework/device_functions.cpp +++ b/source_common/framework/device_functions.cpp @@ -219,6 +219,24 @@ VKAPI_ATTR VkResult VKAPI_CALL layer_vkBindBufferMemory2KHR( return layer->driver.vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos); } +/* See Vulkan API for documentation. */ +template <> +VKAPI_ATTR VkResult VKAPI_CALL layer_vkBindDataGraphPipelineSessionMemoryARM( + VkDevice device, + uint32_t bindInfoCount, + const VkBindDataGraphPipelineSessionMemoryInfoARM* pBindInfos +) { + LAYER_TRACE(__func__); + + // Hold the lock to access layer-wide global store + std::unique_lock lock { g_vulkanLock }; + auto* layer = Device::retrieve(device); + + // Release the lock to call into the driver + lock.unlock(); + return layer->driver.vkBindDataGraphPipelineSessionMemoryARM(device, bindInfoCount, pBindInfos); +} + /* See Vulkan API for documentation. */ template <> VKAPI_ATTR VkResult VKAPI_CALL layer_vkBindImageMemory( @@ -1235,6 +1253,23 @@ VKAPI_ATTR void VKAPI_CALL layer_vkCmdCopyImageToBuffer2KHR( layer->driver.vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo); } +/* See Vulkan API for documentation. */ +template <> +VKAPI_ATTR void VKAPI_CALL layer_vkCmdCopyMemoryIndirectKHR( + VkCommandBuffer commandBuffer, + const VkCopyMemoryIndirectInfoKHR* pCopyMemoryIndirectInfo +) { + LAYER_TRACE(__func__); + + // Hold the lock to access layer-wide global store + std::unique_lock lock { g_vulkanLock }; + auto* layer = Device::retrieve(commandBuffer); + + // Release the lock to call into the driver + lock.unlock(); + layer->driver.vkCmdCopyMemoryIndirectKHR(commandBuffer, pCopyMemoryIndirectInfo); +} + /* See Vulkan API for documentation. */ template <> VKAPI_ATTR void VKAPI_CALL layer_vkCmdCopyMemoryToAccelerationStructureKHR( @@ -1252,6 +1287,23 @@ VKAPI_ATTR void VKAPI_CALL layer_vkCmdCopyMemoryToAccelerationStructureKHRdriver.vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo); } +/* See Vulkan API for documentation. */ +template <> +VKAPI_ATTR void VKAPI_CALL layer_vkCmdCopyMemoryToImageIndirectKHR( + VkCommandBuffer commandBuffer, + const VkCopyMemoryToImageIndirectInfoKHR* pCopyMemoryToImageIndirectInfo +) { + LAYER_TRACE(__func__); + + // Hold the lock to access layer-wide global store + std::unique_lock lock { g_vulkanLock }; + auto* layer = Device::retrieve(commandBuffer); + + // Release the lock to call into the driver + lock.unlock(); + layer->driver.vkCmdCopyMemoryToImageIndirectKHR(commandBuffer, pCopyMemoryToImageIndirectInfo); +} + /* See Vulkan API for documentation. */ template <> VKAPI_ATTR void VKAPI_CALL layer_vkCmdCopyMemoryToMicromapEXT( @@ -1456,6 +1508,24 @@ VKAPI_ATTR void VKAPI_CALL layer_vkCmdDispatchBaseKHR( layer->driver.vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ); } +/* See Vulkan API for documentation. */ +template <> +VKAPI_ATTR void VKAPI_CALL layer_vkCmdDispatchDataGraphARM( + VkCommandBuffer commandBuffer, + VkDataGraphPipelineSessionARM session, + const VkDataGraphPipelineDispatchInfoARM* pInfo +) { + LAYER_TRACE(__func__); + + // Hold the lock to access layer-wide global store + std::unique_lock lock { g_vulkanLock }; + auto* layer = Device::retrieve(commandBuffer); + + // Release the lock to call into the driver + lock.unlock(); + layer->driver.vkCmdDispatchDataGraphARM(commandBuffer, session, pInfo); +} + /* See Vulkan API for documentation. */ template <> VKAPI_ATTR void VKAPI_CALL layer_vkCmdDispatchIndirect( @@ -4713,6 +4783,47 @@ VKAPI_ATTR VkResult VKAPI_CALL layer_vkCreateComputePipelines( return layer->driver.vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines); } +/* See Vulkan API for documentation. */ +template <> +VKAPI_ATTR VkResult VKAPI_CALL layer_vkCreateDataGraphPipelineSessionARM( + VkDevice device, + const VkDataGraphPipelineSessionCreateInfoARM* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkDataGraphPipelineSessionARM* pSession +) { + LAYER_TRACE(__func__); + + // Hold the lock to access layer-wide global store + std::unique_lock lock { g_vulkanLock }; + auto* layer = Device::retrieve(device); + + // Release the lock to call into the driver + lock.unlock(); + return layer->driver.vkCreateDataGraphPipelineSessionARM(device, pCreateInfo, pAllocator, pSession); +} + +/* See Vulkan API for documentation. */ +template <> +VKAPI_ATTR VkResult VKAPI_CALL layer_vkCreateDataGraphPipelinesARM( + VkDevice device, + VkDeferredOperationKHR deferredOperation, + VkPipelineCache pipelineCache, + uint32_t createInfoCount, + const VkDataGraphPipelineCreateInfoARM* pCreateInfos, + const VkAllocationCallbacks* pAllocator, + VkPipeline* pPipelines +) { + LAYER_TRACE(__func__); + + // Hold the lock to access layer-wide global store + std::unique_lock lock { g_vulkanLock }; + auto* layer = Device::retrieve(device); + + // Release the lock to call into the driver + lock.unlock(); + return layer->driver.vkCreateDataGraphPipelinesARM(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines); +} + /* See Vulkan API for documentation. */ template <> VKAPI_ATTR VkResult VKAPI_CALL layer_vkCreateDeferredOperationKHR( @@ -5507,6 +5618,24 @@ VKAPI_ATTR void VKAPI_CALL layer_vkDestroyCommandPool( layer->driver.vkDestroyCommandPool(device, commandPool, pAllocator); } +/* See Vulkan API for documentation. */ +template <> +VKAPI_ATTR void VKAPI_CALL layer_vkDestroyDataGraphPipelineSessionARM( + VkDevice device, + VkDataGraphPipelineSessionARM session, + const VkAllocationCallbacks* pAllocator +) { + LAYER_TRACE(__func__); + + // Hold the lock to access layer-wide global store + std::unique_lock lock { g_vulkanLock }; + auto* layer = Device::retrieve(device); + + // Release the lock to call into the driver + lock.unlock(); + layer->driver.vkDestroyDataGraphPipelineSessionARM(device, session, pAllocator); +} + /* See Vulkan API for documentation. */ template <> VKAPI_ATTR void VKAPI_CALL layer_vkDestroyDeferredOperationKHR( @@ -6441,6 +6570,81 @@ VKAPI_ATTR VkResult VKAPI_CALL layer_vkGetCalibratedTimestampsKHR( return layer->driver.vkGetCalibratedTimestampsKHR(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation); } +/* See Vulkan API for documentation. */ +template <> +VKAPI_ATTR VkResult VKAPI_CALL layer_vkGetDataGraphPipelineAvailablePropertiesARM( + VkDevice device, + const VkDataGraphPipelineInfoARM* pPipelineInfo, + uint32_t* pPropertiesCount, + VkDataGraphPipelinePropertyARM* pProperties +) { + LAYER_TRACE(__func__); + + // Hold the lock to access layer-wide global store + std::unique_lock lock { g_vulkanLock }; + auto* layer = Device::retrieve(device); + + // Release the lock to call into the driver + lock.unlock(); + return layer->driver.vkGetDataGraphPipelineAvailablePropertiesARM(device, pPipelineInfo, pPropertiesCount, pProperties); +} + +/* See Vulkan API for documentation. */ +template <> +VKAPI_ATTR VkResult VKAPI_CALL layer_vkGetDataGraphPipelinePropertiesARM( + VkDevice device, + const VkDataGraphPipelineInfoARM* pPipelineInfo, + uint32_t propertiesCount, + VkDataGraphPipelinePropertyQueryResultARM* pProperties +) { + LAYER_TRACE(__func__); + + // Hold the lock to access layer-wide global store + std::unique_lock lock { g_vulkanLock }; + auto* layer = Device::retrieve(device); + + // Release the lock to call into the driver + lock.unlock(); + return layer->driver.vkGetDataGraphPipelinePropertiesARM(device, pPipelineInfo, propertiesCount, pProperties); +} + +/* See Vulkan API for documentation. */ +template <> +VKAPI_ATTR VkResult VKAPI_CALL layer_vkGetDataGraphPipelineSessionBindPointRequirementsARM( + VkDevice device, + const VkDataGraphPipelineSessionBindPointRequirementsInfoARM* pInfo, + uint32_t* pBindPointRequirementCount, + VkDataGraphPipelineSessionBindPointRequirementARM* pBindPointRequirements +) { + LAYER_TRACE(__func__); + + // Hold the lock to access layer-wide global store + std::unique_lock lock { g_vulkanLock }; + auto* layer = Device::retrieve(device); + + // Release the lock to call into the driver + lock.unlock(); + return layer->driver.vkGetDataGraphPipelineSessionBindPointRequirementsARM(device, pInfo, pBindPointRequirementCount, pBindPointRequirements); +} + +/* See Vulkan API for documentation. */ +template <> +VKAPI_ATTR void VKAPI_CALL layer_vkGetDataGraphPipelineSessionMemoryRequirementsARM( + VkDevice device, + const VkDataGraphPipelineSessionMemoryRequirementsInfoARM* pInfo, + VkMemoryRequirements2* pMemoryRequirements +) { + LAYER_TRACE(__func__); + + // Hold the lock to access layer-wide global store + std::unique_lock lock { g_vulkanLock }; + auto* layer = Device::retrieve(device); + + // Release the lock to call into the driver + lock.unlock(); + layer->driver.vkGetDataGraphPipelineSessionMemoryRequirementsARM(device, pInfo, pMemoryRequirements); +} + /* See Vulkan API for documentation. */ template <> VKAPI_ATTR uint32_t VKAPI_CALL layer_vkGetDeferredOperationMaxConcurrencyKHR( @@ -8265,7 +8469,7 @@ VKAPI_ATTR void VKAPI_CALL layer_vkReleaseProfilingLockKHR( template <> VKAPI_ATTR VkResult VKAPI_CALL layer_vkReleaseSwapchainImagesEXT( VkDevice device, - const VkReleaseSwapchainImagesInfoEXT* pReleaseInfo + const VkReleaseSwapchainImagesInfoKHR* pReleaseInfo ) { LAYER_TRACE(__func__); @@ -8278,6 +8482,23 @@ VKAPI_ATTR VkResult VKAPI_CALL layer_vkReleaseSwapchainImagesEXT( return layer->driver.vkReleaseSwapchainImagesEXT(device, pReleaseInfo); } +/* See Vulkan API for documentation. */ +template <> +VKAPI_ATTR VkResult VKAPI_CALL layer_vkReleaseSwapchainImagesKHR( + VkDevice device, + const VkReleaseSwapchainImagesInfoKHR* pReleaseInfo +) { + LAYER_TRACE(__func__); + + // Hold the lock to access layer-wide global store + std::unique_lock lock { g_vulkanLock }; + auto* layer = Device::retrieve(device); + + // Release the lock to call into the driver + lock.unlock(); + return layer->driver.vkReleaseSwapchainImagesKHR(device, pReleaseInfo); +} + /* See Vulkan API for documentation. */ template <> VKAPI_ATTR VkResult VKAPI_CALL layer_vkResetCommandBuffer( diff --git a/source_common/framework/device_functions.hpp b/source_common/framework/device_functions.hpp index 700ff0b8..25db4f31 100644 --- a/source_common/framework/device_functions.hpp +++ b/source_common/framework/device_functions.hpp @@ -187,6 +187,21 @@ VKAPI_ATTR VkResult VKAPI_CALL layer_vkBindBufferMemory2KHR( uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos); +/* See Vulkan API for documentation. */ +/* Delete the generic match-all */ +template +VKAPI_ATTR VkResult VKAPI_CALL layer_vkBindDataGraphPipelineSessionMemoryARM( + VkDevice device, + uint32_t bindInfoCount, + const VkBindDataGraphPipelineSessionMemoryInfoARM* pBindInfos) = delete; + +/* Default common code implementation. */ +template <> +VKAPI_ATTR VkResult VKAPI_CALL layer_vkBindDataGraphPipelineSessionMemoryARM( + VkDevice device, + uint32_t bindInfoCount, + const VkBindDataGraphPipelineSessionMemoryInfoARM* pBindInfos); + /* See Vulkan API for documentation. */ /* Delete the generic match-all */ template @@ -1085,6 +1100,19 @@ VKAPI_ATTR void VKAPI_CALL layer_vkCmdCopyImageToBuffer2KHR( VkCommandBuffer commandBuffer, const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo); +/* See Vulkan API for documentation. */ +/* Delete the generic match-all */ +template +VKAPI_ATTR void VKAPI_CALL layer_vkCmdCopyMemoryIndirectKHR( + VkCommandBuffer commandBuffer, + const VkCopyMemoryIndirectInfoKHR* pCopyMemoryIndirectInfo) = delete; + +/* Default common code implementation. */ +template <> +VKAPI_ATTR void VKAPI_CALL layer_vkCmdCopyMemoryIndirectKHR( + VkCommandBuffer commandBuffer, + const VkCopyMemoryIndirectInfoKHR* pCopyMemoryIndirectInfo); + /* See Vulkan API for documentation. */ /* Delete the generic match-all */ template @@ -1098,6 +1126,19 @@ VKAPI_ATTR void VKAPI_CALL layer_vkCmdCopyMemoryToAccelerationStructureKHR +VKAPI_ATTR void VKAPI_CALL layer_vkCmdCopyMemoryToImageIndirectKHR( + VkCommandBuffer commandBuffer, + const VkCopyMemoryToImageIndirectInfoKHR* pCopyMemoryToImageIndirectInfo) = delete; + +/* Default common code implementation. */ +template <> +VKAPI_ATTR void VKAPI_CALL layer_vkCmdCopyMemoryToImageIndirectKHR( + VkCommandBuffer commandBuffer, + const VkCopyMemoryToImageIndirectInfoKHR* pCopyMemoryToImageIndirectInfo); + /* See Vulkan API for documentation. */ /* Delete the generic match-all */ template @@ -1275,6 +1316,21 @@ VKAPI_ATTR void VKAPI_CALL layer_vkCmdDispatchBaseKHR( uint32_t groupCountY, uint32_t groupCountZ); +/* See Vulkan API for documentation. */ +/* Delete the generic match-all */ +template +VKAPI_ATTR void VKAPI_CALL layer_vkCmdDispatchDataGraphARM( + VkCommandBuffer commandBuffer, + VkDataGraphPipelineSessionARM session, + const VkDataGraphPipelineDispatchInfoARM* pInfo) = delete; + +/* Default common code implementation. */ +template <> +VKAPI_ATTR void VKAPI_CALL layer_vkCmdDispatchDataGraphARM( + VkCommandBuffer commandBuffer, + VkDataGraphPipelineSessionARM session, + const VkDataGraphPipelineDispatchInfoARM* pInfo); + /* See Vulkan API for documentation. */ /* Delete the generic match-all */ template @@ -4030,6 +4086,46 @@ VKAPI_ATTR VkResult VKAPI_CALL layer_vkCreateComputePipelines( const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines); +/* See Vulkan API for documentation. */ +/* Delete the generic match-all */ +template +VKAPI_ATTR VkResult VKAPI_CALL layer_vkCreateDataGraphPipelineSessionARM( + VkDevice device, + const VkDataGraphPipelineSessionCreateInfoARM* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkDataGraphPipelineSessionARM* pSession) = delete; + +/* Default common code implementation. */ +template <> +VKAPI_ATTR VkResult VKAPI_CALL layer_vkCreateDataGraphPipelineSessionARM( + VkDevice device, + const VkDataGraphPipelineSessionCreateInfoARM* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkDataGraphPipelineSessionARM* pSession); + +/* See Vulkan API for documentation. */ +/* Delete the generic match-all */ +template +VKAPI_ATTR VkResult VKAPI_CALL layer_vkCreateDataGraphPipelinesARM( + VkDevice device, + VkDeferredOperationKHR deferredOperation, + VkPipelineCache pipelineCache, + uint32_t createInfoCount, + const VkDataGraphPipelineCreateInfoARM* pCreateInfos, + const VkAllocationCallbacks* pAllocator, + VkPipeline* pPipelines) = delete; + +/* Default common code implementation. */ +template <> +VKAPI_ATTR VkResult VKAPI_CALL layer_vkCreateDataGraphPipelinesARM( + VkDevice device, + VkDeferredOperationKHR deferredOperation, + VkPipelineCache pipelineCache, + uint32_t createInfoCount, + const VkDataGraphPipelineCreateInfoARM* pCreateInfos, + const VkAllocationCallbacks* pAllocator, + VkPipeline* pPipelines); + /* See Vulkan API for documentation. */ /* Delete the generic match-all */ template @@ -4736,6 +4832,21 @@ VKAPI_ATTR void VKAPI_CALL layer_vkDestroyCommandPool( VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator); +/* See Vulkan API for documentation. */ +/* Delete the generic match-all */ +template +VKAPI_ATTR void VKAPI_CALL layer_vkDestroyDataGraphPipelineSessionARM( + VkDevice device, + VkDataGraphPipelineSessionARM session, + const VkAllocationCallbacks* pAllocator) = delete; + +/* Default common code implementation. */ +template <> +VKAPI_ATTR void VKAPI_CALL layer_vkDestroyDataGraphPipelineSessionARM( + VkDevice device, + VkDataGraphPipelineSessionARM session, + const VkAllocationCallbacks* pAllocator); + /* See Vulkan API for documentation. */ /* Delete the generic match-all */ template @@ -5525,6 +5636,72 @@ VKAPI_ATTR VkResult VKAPI_CALL layer_vkGetCalibratedTimestampsKHR( uint64_t* pTimestamps, uint64_t* pMaxDeviation); +/* See Vulkan API for documentation. */ +/* Delete the generic match-all */ +template +VKAPI_ATTR VkResult VKAPI_CALL layer_vkGetDataGraphPipelineAvailablePropertiesARM( + VkDevice device, + const VkDataGraphPipelineInfoARM* pPipelineInfo, + uint32_t* pPropertiesCount, + VkDataGraphPipelinePropertyARM* pProperties) = delete; + +/* Default common code implementation. */ +template <> +VKAPI_ATTR VkResult VKAPI_CALL layer_vkGetDataGraphPipelineAvailablePropertiesARM( + VkDevice device, + const VkDataGraphPipelineInfoARM* pPipelineInfo, + uint32_t* pPropertiesCount, + VkDataGraphPipelinePropertyARM* pProperties); + +/* See Vulkan API for documentation. */ +/* Delete the generic match-all */ +template +VKAPI_ATTR VkResult VKAPI_CALL layer_vkGetDataGraphPipelinePropertiesARM( + VkDevice device, + const VkDataGraphPipelineInfoARM* pPipelineInfo, + uint32_t propertiesCount, + VkDataGraphPipelinePropertyQueryResultARM* pProperties) = delete; + +/* Default common code implementation. */ +template <> +VKAPI_ATTR VkResult VKAPI_CALL layer_vkGetDataGraphPipelinePropertiesARM( + VkDevice device, + const VkDataGraphPipelineInfoARM* pPipelineInfo, + uint32_t propertiesCount, + VkDataGraphPipelinePropertyQueryResultARM* pProperties); + +/* See Vulkan API for documentation. */ +/* Delete the generic match-all */ +template +VKAPI_ATTR VkResult VKAPI_CALL layer_vkGetDataGraphPipelineSessionBindPointRequirementsARM( + VkDevice device, + const VkDataGraphPipelineSessionBindPointRequirementsInfoARM* pInfo, + uint32_t* pBindPointRequirementCount, + VkDataGraphPipelineSessionBindPointRequirementARM* pBindPointRequirements) = delete; + +/* Default common code implementation. */ +template <> +VKAPI_ATTR VkResult VKAPI_CALL layer_vkGetDataGraphPipelineSessionBindPointRequirementsARM( + VkDevice device, + const VkDataGraphPipelineSessionBindPointRequirementsInfoARM* pInfo, + uint32_t* pBindPointRequirementCount, + VkDataGraphPipelineSessionBindPointRequirementARM* pBindPointRequirements); + +/* See Vulkan API for documentation. */ +/* Delete the generic match-all */ +template +VKAPI_ATTR void VKAPI_CALL layer_vkGetDataGraphPipelineSessionMemoryRequirementsARM( + VkDevice device, + const VkDataGraphPipelineSessionMemoryRequirementsInfoARM* pInfo, + VkMemoryRequirements2* pMemoryRequirements) = delete; + +/* Default common code implementation. */ +template <> +VKAPI_ATTR void VKAPI_CALL layer_vkGetDataGraphPipelineSessionMemoryRequirementsARM( + VkDevice device, + const VkDataGraphPipelineSessionMemoryRequirementsInfoARM* pInfo, + VkMemoryRequirements2* pMemoryRequirements); + /* See Vulkan API for documentation. */ /* Delete the generic match-all */ template @@ -7119,13 +7296,26 @@ VKAPI_ATTR void VKAPI_CALL layer_vkReleaseProfilingLockKHR( template VKAPI_ATTR VkResult VKAPI_CALL layer_vkReleaseSwapchainImagesEXT( VkDevice device, - const VkReleaseSwapchainImagesInfoEXT* pReleaseInfo) = delete; + const VkReleaseSwapchainImagesInfoKHR* pReleaseInfo) = delete; /* Default common code implementation. */ template <> VKAPI_ATTR VkResult VKAPI_CALL layer_vkReleaseSwapchainImagesEXT( VkDevice device, - const VkReleaseSwapchainImagesInfoEXT* pReleaseInfo); + const VkReleaseSwapchainImagesInfoKHR* pReleaseInfo); + +/* See Vulkan API for documentation. */ +/* Delete the generic match-all */ +template +VKAPI_ATTR VkResult VKAPI_CALL layer_vkReleaseSwapchainImagesKHR( + VkDevice device, + const VkReleaseSwapchainImagesInfoKHR* pReleaseInfo) = delete; + +/* Default common code implementation. */ +template <> +VKAPI_ATTR VkResult VKAPI_CALL layer_vkReleaseSwapchainImagesKHR( + VkDevice device, + const VkReleaseSwapchainImagesInfoKHR* pReleaseInfo); /* See Vulkan API for documentation. */ /* Delete the generic match-all */ diff --git a/source_common/framework/device_functions_query.hpp b/source_common/framework/device_functions_query.hpp index a5752baf..736e1514 100644 --- a/source_common/framework/device_functions_query.hpp +++ b/source_common/framework/device_functions_query.hpp @@ -251,6 +251,28 @@ constexpr PFN_vkBindBufferMemory2KHR getLayerPtr_vkBindBufferMemory2KHR() }.operator()(); } +/* Test for user_tag availability. */ +template +concept hasLayerPtr_vkBindDataGraphPipelineSessionMemoryARM = requires( + VkDevice device, uint32_t bindInfoCount, const VkBindDataGraphPipelineSessionMemoryInfoARM* pBindInfos +) { + layer_vkBindDataGraphPipelineSessionMemoryARM(device, bindInfoCount, pBindInfos); +}; + +/* Function pointer resolution. */ +constexpr PFN_vkBindDataGraphPipelineSessionMemoryARM getLayerPtr_vkBindDataGraphPipelineSessionMemoryARM() +{ + return [] + { + if constexpr(hasLayerPtr_vkBindDataGraphPipelineSessionMemoryARM) + { + return layer_vkBindDataGraphPipelineSessionMemoryARM; + } + + return layer_vkBindDataGraphPipelineSessionMemoryARM; + }.operator()(); +} + /* Test for user_tag availability. */ template concept hasLayerPtr_vkBindImageMemory = requires( @@ -1439,6 +1461,28 @@ constexpr PFN_vkCmdCopyImageToBuffer2KHR getLayerPtr_vkCmdCopyImageToBuffer2KHR( }.operator()(); } +/* Test for user_tag availability. */ +template +concept hasLayerPtr_vkCmdCopyMemoryIndirectKHR = requires( + VkCommandBuffer commandBuffer, const VkCopyMemoryIndirectInfoKHR* pCopyMemoryIndirectInfo +) { + layer_vkCmdCopyMemoryIndirectKHR(commandBuffer, pCopyMemoryIndirectInfo); +}; + +/* Function pointer resolution. */ +constexpr PFN_vkCmdCopyMemoryIndirectKHR getLayerPtr_vkCmdCopyMemoryIndirectKHR() +{ + return [] + { + if constexpr(hasLayerPtr_vkCmdCopyMemoryIndirectKHR) + { + return layer_vkCmdCopyMemoryIndirectKHR; + } + + return layer_vkCmdCopyMemoryIndirectKHR; + }.operator()(); +} + /* Test for user_tag availability. */ template concept hasLayerPtr_vkCmdCopyMemoryToAccelerationStructureKHR = requires( @@ -1461,6 +1505,28 @@ constexpr PFN_vkCmdCopyMemoryToAccelerationStructureKHR getLayerPtr_vkCmdCopyMem }.operator()(); } +/* Test for user_tag availability. */ +template +concept hasLayerPtr_vkCmdCopyMemoryToImageIndirectKHR = requires( + VkCommandBuffer commandBuffer, const VkCopyMemoryToImageIndirectInfoKHR* pCopyMemoryToImageIndirectInfo +) { + layer_vkCmdCopyMemoryToImageIndirectKHR(commandBuffer, pCopyMemoryToImageIndirectInfo); +}; + +/* Function pointer resolution. */ +constexpr PFN_vkCmdCopyMemoryToImageIndirectKHR getLayerPtr_vkCmdCopyMemoryToImageIndirectKHR() +{ + return [] + { + if constexpr(hasLayerPtr_vkCmdCopyMemoryToImageIndirectKHR) + { + return layer_vkCmdCopyMemoryToImageIndirectKHR; + } + + return layer_vkCmdCopyMemoryToImageIndirectKHR; + }.operator()(); +} + /* Test for user_tag availability. */ template concept hasLayerPtr_vkCmdCopyMemoryToMicromapEXT = requires( @@ -1703,6 +1769,28 @@ constexpr PFN_vkCmdDispatchBaseKHR getLayerPtr_vkCmdDispatchBaseKHR() }.operator()(); } +/* Test for user_tag availability. */ +template +concept hasLayerPtr_vkCmdDispatchDataGraphARM = requires( + VkCommandBuffer commandBuffer, VkDataGraphPipelineSessionARM session, const VkDataGraphPipelineDispatchInfoARM* pInfo +) { + layer_vkCmdDispatchDataGraphARM(commandBuffer, session, pInfo); +}; + +/* Function pointer resolution. */ +constexpr PFN_vkCmdDispatchDataGraphARM getLayerPtr_vkCmdDispatchDataGraphARM() +{ + return [] + { + if constexpr(hasLayerPtr_vkCmdDispatchDataGraphARM) + { + return layer_vkCmdDispatchDataGraphARM; + } + + return layer_vkCmdDispatchDataGraphARM; + }.operator()(); +} + /* Test for user_tag availability. */ template concept hasLayerPtr_vkCmdDispatchIndirect = requires( @@ -5641,6 +5729,50 @@ constexpr PFN_vkCreateComputePipelines getLayerPtr_vkCreateComputePipelines() }.operator()(); } +/* Test for user_tag availability. */ +template +concept hasLayerPtr_vkCreateDataGraphPipelineSessionARM = requires( + VkDevice device, const VkDataGraphPipelineSessionCreateInfoARM* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDataGraphPipelineSessionARM* pSession +) { + layer_vkCreateDataGraphPipelineSessionARM(device, pCreateInfo, pAllocator, pSession); +}; + +/* Function pointer resolution. */ +constexpr PFN_vkCreateDataGraphPipelineSessionARM getLayerPtr_vkCreateDataGraphPipelineSessionARM() +{ + return [] + { + if constexpr(hasLayerPtr_vkCreateDataGraphPipelineSessionARM) + { + return layer_vkCreateDataGraphPipelineSessionARM; + } + + return layer_vkCreateDataGraphPipelineSessionARM; + }.operator()(); +} + +/* Test for user_tag availability. */ +template +concept hasLayerPtr_vkCreateDataGraphPipelinesARM = requires( + VkDevice device, VkDeferredOperationKHR deferredOperation, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkDataGraphPipelineCreateInfoARM* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines +) { + layer_vkCreateDataGraphPipelinesARM(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines); +}; + +/* Function pointer resolution. */ +constexpr PFN_vkCreateDataGraphPipelinesARM getLayerPtr_vkCreateDataGraphPipelinesARM() +{ + return [] + { + if constexpr(hasLayerPtr_vkCreateDataGraphPipelinesARM) + { + return layer_vkCreateDataGraphPipelinesARM; + } + + return layer_vkCreateDataGraphPipelinesARM; + }.operator()(); +} + /* Test for user_tag availability. */ template concept hasLayerPtr_vkCreateDeferredOperationKHR = requires( @@ -6565,6 +6697,28 @@ constexpr PFN_vkDestroyCommandPool getLayerPtr_vkDestroyCommandPool() }.operator()(); } +/* Test for user_tag availability. */ +template +concept hasLayerPtr_vkDestroyDataGraphPipelineSessionARM = requires( + VkDevice device, VkDataGraphPipelineSessionARM session, const VkAllocationCallbacks* pAllocator +) { + layer_vkDestroyDataGraphPipelineSessionARM(device, session, pAllocator); +}; + +/* Function pointer resolution. */ +constexpr PFN_vkDestroyDataGraphPipelineSessionARM getLayerPtr_vkDestroyDataGraphPipelineSessionARM() +{ + return [] + { + if constexpr(hasLayerPtr_vkDestroyDataGraphPipelineSessionARM) + { + return layer_vkDestroyDataGraphPipelineSessionARM; + } + + return layer_vkDestroyDataGraphPipelineSessionARM; + }.operator()(); +} + /* Test for user_tag availability. */ template concept hasLayerPtr_vkDestroyDeferredOperationKHR = requires( @@ -7731,6 +7885,94 @@ constexpr PFN_vkGetCalibratedTimestampsKHR getLayerPtr_vkGetCalibratedTimestamps }.operator()(); } +/* Test for user_tag availability. */ +template +concept hasLayerPtr_vkGetDataGraphPipelineAvailablePropertiesARM = requires( + VkDevice device, const VkDataGraphPipelineInfoARM* pPipelineInfo, uint32_t* pPropertiesCount, VkDataGraphPipelinePropertyARM* pProperties +) { + layer_vkGetDataGraphPipelineAvailablePropertiesARM(device, pPipelineInfo, pPropertiesCount, pProperties); +}; + +/* Function pointer resolution. */ +constexpr PFN_vkGetDataGraphPipelineAvailablePropertiesARM getLayerPtr_vkGetDataGraphPipelineAvailablePropertiesARM() +{ + return [] + { + if constexpr(hasLayerPtr_vkGetDataGraphPipelineAvailablePropertiesARM) + { + return layer_vkGetDataGraphPipelineAvailablePropertiesARM; + } + + return layer_vkGetDataGraphPipelineAvailablePropertiesARM; + }.operator()(); +} + +/* Test for user_tag availability. */ +template +concept hasLayerPtr_vkGetDataGraphPipelinePropertiesARM = requires( + VkDevice device, const VkDataGraphPipelineInfoARM* pPipelineInfo, uint32_t propertiesCount, VkDataGraphPipelinePropertyQueryResultARM* pProperties +) { + layer_vkGetDataGraphPipelinePropertiesARM(device, pPipelineInfo, propertiesCount, pProperties); +}; + +/* Function pointer resolution. */ +constexpr PFN_vkGetDataGraphPipelinePropertiesARM getLayerPtr_vkGetDataGraphPipelinePropertiesARM() +{ + return [] + { + if constexpr(hasLayerPtr_vkGetDataGraphPipelinePropertiesARM) + { + return layer_vkGetDataGraphPipelinePropertiesARM; + } + + return layer_vkGetDataGraphPipelinePropertiesARM; + }.operator()(); +} + +/* Test for user_tag availability. */ +template +concept hasLayerPtr_vkGetDataGraphPipelineSessionBindPointRequirementsARM = requires( + VkDevice device, const VkDataGraphPipelineSessionBindPointRequirementsInfoARM* pInfo, uint32_t* pBindPointRequirementCount, VkDataGraphPipelineSessionBindPointRequirementARM* pBindPointRequirements +) { + layer_vkGetDataGraphPipelineSessionBindPointRequirementsARM(device, pInfo, pBindPointRequirementCount, pBindPointRequirements); +}; + +/* Function pointer resolution. */ +constexpr PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM getLayerPtr_vkGetDataGraphPipelineSessionBindPointRequirementsARM() +{ + return [] + { + if constexpr(hasLayerPtr_vkGetDataGraphPipelineSessionBindPointRequirementsARM) + { + return layer_vkGetDataGraphPipelineSessionBindPointRequirementsARM; + } + + return layer_vkGetDataGraphPipelineSessionBindPointRequirementsARM; + }.operator()(); +} + +/* Test for user_tag availability. */ +template +concept hasLayerPtr_vkGetDataGraphPipelineSessionMemoryRequirementsARM = requires( + VkDevice device, const VkDataGraphPipelineSessionMemoryRequirementsInfoARM* pInfo, VkMemoryRequirements2* pMemoryRequirements +) { + layer_vkGetDataGraphPipelineSessionMemoryRequirementsARM(device, pInfo, pMemoryRequirements); +}; + +/* Function pointer resolution. */ +constexpr PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM getLayerPtr_vkGetDataGraphPipelineSessionMemoryRequirementsARM() +{ + return [] + { + if constexpr(hasLayerPtr_vkGetDataGraphPipelineSessionMemoryRequirementsARM) + { + return layer_vkGetDataGraphPipelineSessionMemoryRequirementsARM; + } + + return layer_vkGetDataGraphPipelineSessionMemoryRequirementsARM; + }.operator()(); +} + /* Test for user_tag availability. */ template concept hasLayerPtr_vkGetDeferredOperationMaxConcurrencyKHR = requires( @@ -9956,7 +10198,7 @@ constexpr PFN_vkReleaseProfilingLockKHR getLayerPtr_vkReleaseProfilingLockKHR() /* Test for user_tag availability. */ template concept hasLayerPtr_vkReleaseSwapchainImagesEXT = requires( - VkDevice device, const VkReleaseSwapchainImagesInfoEXT* pReleaseInfo + VkDevice device, const VkReleaseSwapchainImagesInfoKHR* pReleaseInfo ) { layer_vkReleaseSwapchainImagesEXT(device, pReleaseInfo); }; @@ -9975,6 +10217,28 @@ constexpr PFN_vkReleaseSwapchainImagesEXT getLayerPtr_vkReleaseSwapchainImagesEX }.operator()(); } +/* Test for user_tag availability. */ +template +concept hasLayerPtr_vkReleaseSwapchainImagesKHR = requires( + VkDevice device, const VkReleaseSwapchainImagesInfoKHR* pReleaseInfo +) { + layer_vkReleaseSwapchainImagesKHR(device, pReleaseInfo); +}; + +/* Function pointer resolution. */ +constexpr PFN_vkReleaseSwapchainImagesKHR getLayerPtr_vkReleaseSwapchainImagesKHR() +{ + return [] + { + if constexpr(hasLayerPtr_vkReleaseSwapchainImagesKHR) + { + return layer_vkReleaseSwapchainImagesKHR; + } + + return layer_vkReleaseSwapchainImagesKHR; + }.operator()(); +} + /* Test for user_tag availability. */ template concept hasLayerPtr_vkResetCommandBuffer = requires( diff --git a/source_common/framework/instance_dispatch_table.hpp b/source_common/framework/instance_dispatch_table.hpp index ee856d88..c89c9009 100644 --- a/source_common/framework/instance_dispatch_table.hpp +++ b/source_common/framework/instance_dispatch_table.hpp @@ -130,6 +130,8 @@ static const struct InstanceInterceptTableEntry instanceIntercepts[] = { ENTRY(vkGetPhysicalDeviceProperties), ENTRY(vkGetPhysicalDeviceProperties2), ENTRY(vkGetPhysicalDeviceProperties2KHR), + ENTRY(vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM), + ENTRY(vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM), ENTRY(vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR), ENTRY(vkGetPhysicalDeviceQueueFamilyProperties), ENTRY(vkGetPhysicalDeviceQueueFamilyProperties2), @@ -160,6 +162,7 @@ static const struct InstanceInterceptTableEntry instanceIntercepts[] = { ENTRY(vkBindBufferMemory), ENTRY(vkBindBufferMemory2), ENTRY(vkBindBufferMemory2KHR), + ENTRY(vkBindDataGraphPipelineSessionMemoryARM), ENTRY(vkBindImageMemory), ENTRY(vkBindImageMemory2), ENTRY(vkBindImageMemory2KHR), @@ -214,7 +217,9 @@ static const struct InstanceInterceptTableEntry instanceIntercepts[] = { ENTRY(vkCmdCopyImageToBuffer), ENTRY(vkCmdCopyImageToBuffer2), ENTRY(vkCmdCopyImageToBuffer2KHR), + ENTRY(vkCmdCopyMemoryIndirectKHR), ENTRY(vkCmdCopyMemoryToAccelerationStructureKHR), + ENTRY(vkCmdCopyMemoryToImageIndirectKHR), ENTRY(vkCmdCopyMemoryToMicromapEXT), ENTRY(vkCmdCopyMicromapEXT), ENTRY(vkCmdCopyMicromapToMemoryEXT), @@ -226,6 +231,7 @@ static const struct InstanceInterceptTableEntry instanceIntercepts[] = { ENTRY(vkCmdDispatch), ENTRY(vkCmdDispatchBase), ENTRY(vkCmdDispatchBaseKHR), + ENTRY(vkCmdDispatchDataGraphARM), ENTRY(vkCmdDispatchIndirect), ENTRY(vkCmdDraw), ENTRY(vkCmdDrawIndexed), @@ -405,6 +411,8 @@ static const struct InstanceInterceptTableEntry instanceIntercepts[] = { ENTRY(vkCreateBufferView), ENTRY(vkCreateCommandPool), ENTRY(vkCreateComputePipelines), + ENTRY(vkCreateDataGraphPipelineSessionARM), + ENTRY(vkCreateDataGraphPipelinesARM), ENTRY(vkCreateDeferredOperationKHR), ENTRY(vkCreateDescriptorPool), ENTRY(vkCreateDescriptorSetLayout), @@ -447,6 +455,7 @@ static const struct InstanceInterceptTableEntry instanceIntercepts[] = { ENTRY(vkDestroyBuffer), ENTRY(vkDestroyBufferView), ENTRY(vkDestroyCommandPool), + ENTRY(vkDestroyDataGraphPipelineSessionARM), ENTRY(vkDestroyDeferredOperationKHR), ENTRY(vkDestroyDescriptorPool), ENTRY(vkDestroyDescriptorSetLayout), @@ -500,6 +509,10 @@ static const struct InstanceInterceptTableEntry instanceIntercepts[] = { ENTRY(vkGetBufferOpaqueCaptureDescriptorDataEXT), ENTRY(vkGetCalibratedTimestampsEXT), ENTRY(vkGetCalibratedTimestampsKHR), + ENTRY(vkGetDataGraphPipelineAvailablePropertiesARM), + ENTRY(vkGetDataGraphPipelinePropertiesARM), + ENTRY(vkGetDataGraphPipelineSessionBindPointRequirementsARM), + ENTRY(vkGetDataGraphPipelineSessionMemoryRequirementsARM), ENTRY(vkGetDeferredOperationMaxConcurrencyKHR), ENTRY(vkGetDeferredOperationResultKHR), ENTRY(vkGetDescriptorEXT), @@ -602,6 +615,7 @@ static const struct InstanceInterceptTableEntry instanceIntercepts[] = { ENTRY(vkReleaseCapturedPipelineDataKHR), ENTRY(vkReleaseProfilingLockKHR), ENTRY(vkReleaseSwapchainImagesEXT), + ENTRY(vkReleaseSwapchainImagesKHR), ENTRY(vkResetCommandBuffer), ENTRY(vkResetCommandPool), ENTRY(vkResetDescriptorPool), @@ -703,6 +717,8 @@ struct InstanceDispatchTable { PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties; PFN_vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2; PFN_vkGetPhysicalDeviceProperties2KHR vkGetPhysicalDeviceProperties2KHR; + PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM; + PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM; PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR; PFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties; PFN_vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2; @@ -795,6 +811,8 @@ static inline void initDriverInstanceDispatchTable( ENTRY(vkGetPhysicalDeviceProperties); ENTRY(vkGetPhysicalDeviceProperties2); ENTRY(vkGetPhysicalDeviceProperties2KHR); + ENTRY(vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM); + ENTRY(vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM); ENTRY(vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR); ENTRY(vkGetPhysicalDeviceQueueFamilyProperties); ENTRY(vkGetPhysicalDeviceQueueFamilyProperties2); diff --git a/source_common/framework/instance_functions.cpp b/source_common/framework/instance_functions.cpp index ce58e461..fcbe7074 100644 --- a/source_common/framework/instance_functions.cpp +++ b/source_common/framework/instance_functions.cpp @@ -955,6 +955,43 @@ VKAPI_ATTR void VKAPI_CALL layer_vkGetPhysicalDeviceProperties2KHR( layer->driver.vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties); } +/* See Vulkan API for documentation. */ +template <> +VKAPI_ATTR void VKAPI_CALL layer_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM* pQueueFamilyDataGraphProcessingEngineInfo, + VkQueueFamilyDataGraphProcessingEnginePropertiesARM* pQueueFamilyDataGraphProcessingEngineProperties +) { + LAYER_TRACE(__func__); + + // Hold the lock to access layer-wide global store + std::unique_lock lock { g_vulkanLock }; + auto* layer = Instance::retrieve(physicalDevice); + + // Release the lock to call into the driver + lock.unlock(); + layer->driver.vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM(physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties); +} + +/* See Vulkan API for documentation. */ +template <> +VKAPI_ATTR VkResult VKAPI_CALL layer_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM( + VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + uint32_t* pQueueFamilyDataGraphPropertyCount, + VkQueueFamilyDataGraphPropertiesARM* pQueueFamilyDataGraphProperties +) { + LAYER_TRACE(__func__); + + // Hold the lock to access layer-wide global store + std::unique_lock lock { g_vulkanLock }; + auto* layer = Instance::retrieve(physicalDevice); + + // Release the lock to call into the driver + lock.unlock(); + return layer->driver.vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM(physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties); +} + /* See Vulkan API for documentation. */ template <> VKAPI_ATTR void VKAPI_CALL layer_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR( diff --git a/source_common/framework/instance_functions.hpp b/source_common/framework/instance_functions.hpp index c49cf5b3..faff4d0e 100644 --- a/source_common/framework/instance_functions.hpp +++ b/source_common/framework/instance_functions.hpp @@ -927,6 +927,38 @@ VKAPI_ATTR void VKAPI_CALL layer_vkGetPhysicalDeviceProperties2KHR( VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties); +/* See Vulkan API for documentation. */ +/* Delete the generic match-all */ +template +VKAPI_ATTR void VKAPI_CALL layer_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM* pQueueFamilyDataGraphProcessingEngineInfo, + VkQueueFamilyDataGraphProcessingEnginePropertiesARM* pQueueFamilyDataGraphProcessingEngineProperties) = delete; + +/* Default common code implementation. */ +template <> +VKAPI_ATTR void VKAPI_CALL layer_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM* pQueueFamilyDataGraphProcessingEngineInfo, + VkQueueFamilyDataGraphProcessingEnginePropertiesARM* pQueueFamilyDataGraphProcessingEngineProperties); + +/* See Vulkan API for documentation. */ +/* Delete the generic match-all */ +template +VKAPI_ATTR VkResult VKAPI_CALL layer_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM( + VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + uint32_t* pQueueFamilyDataGraphPropertyCount, + VkQueueFamilyDataGraphPropertiesARM* pQueueFamilyDataGraphProperties) = delete; + +/* Default common code implementation. */ +template <> +VKAPI_ATTR VkResult VKAPI_CALL layer_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM( + VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + uint32_t* pQueueFamilyDataGraphPropertyCount, + VkQueueFamilyDataGraphPropertiesARM* pQueueFamilyDataGraphProperties); + /* See Vulkan API for documentation. */ /* Delete the generic match-all */ template diff --git a/source_common/framework/instance_functions_query.hpp b/source_common/framework/instance_functions_query.hpp index 013cc0b7..ffb6ffd4 100644 --- a/source_common/framework/instance_functions_query.hpp +++ b/source_common/framework/instance_functions_query.hpp @@ -1309,6 +1309,50 @@ constexpr PFN_vkGetPhysicalDeviceProperties2KHR getLayerPtr_vkGetPhysicalDeviceP }.operator()(); } +/* Test for user_tag availability. */ +template +concept hasLayerPtr_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM = requires( + VkPhysicalDevice physicalDevice, const VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM* pQueueFamilyDataGraphProcessingEngineInfo, VkQueueFamilyDataGraphProcessingEnginePropertiesARM* pQueueFamilyDataGraphProcessingEngineProperties +) { + layer_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM(physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties); +}; + +/* Function pointer resolution. */ +constexpr PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM getLayerPtr_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM() +{ + return [] + { + if constexpr(hasLayerPtr_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM) + { + return layer_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM; + } + + return layer_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM; + }.operator()(); +} + +/* Test for user_tag availability. */ +template +concept hasLayerPtr_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM = requires( + VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, uint32_t* pQueueFamilyDataGraphPropertyCount, VkQueueFamilyDataGraphPropertiesARM* pQueueFamilyDataGraphProperties +) { + layer_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM(physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties); +}; + +/* Function pointer resolution. */ +constexpr PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM getLayerPtr_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM() +{ + return [] + { + if constexpr(hasLayerPtr_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM) + { + return layer_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM; + } + + return layer_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM; + }.operator()(); +} + /* Test for user_tag availability. */ template concept hasLayerPtr_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = requires(