From b573b226285b09f8c11e7fe29437a2bdc586bb10 Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Thu, 17 Mar 2022 14:53:18 -0500 Subject: [PATCH] panvk: Implement VK_KHR_synchronization2 It's easier to switch to sync2 before CmdPipelineBarrier gets any more complicated. Reviewed-by: Boris Brezillon Part-of: --- src/panfrost/vulkan/panvk_device.c | 3 +- src/panfrost/vulkan/panvk_query.c | 8 ++--- src/panfrost/vulkan/panvk_vX_cmd_buffer.c | 39 +++++++---------------- 3 files changed, 18 insertions(+), 32 deletions(-) diff --git a/src/panfrost/vulkan/panvk_device.c b/src/panfrost/vulkan/panvk_device.c index f9833baeddf..797bba05874 100644 --- a/src/panfrost/vulkan/panvk_device.c +++ b/src/panfrost/vulkan/panvk_device.c @@ -151,6 +151,7 @@ panvk_get_device_extensions(const struct panvk_physical_device *device, #ifdef PANVK_USE_WSI_PLATFORM .KHR_swapchain = true, #endif + .KHR_synchronization2 = true, .EXT_custom_border_color = true, .EXT_index_type_uint8 = true, .EXT_vertex_attribute_divisor = true, @@ -558,7 +559,7 @@ panvk_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice, .shaderTerminateInvocation = false, .subgroupSizeControl = false, .computeFullSubgroups = false, - .synchronization2 = false, + .synchronization2 = true, .textureCompressionASTC_HDR = false, .shaderZeroInitializeWorkgroupMemory = false, .dynamicRendering = false, diff --git a/src/panfrost/vulkan/panvk_query.c b/src/panfrost/vulkan/panvk_query.c index 6f9ca04ea46..508e8225365 100644 --- a/src/panfrost/vulkan/panvk_query.c +++ b/src/panfrost/vulkan/panvk_query.c @@ -95,10 +95,10 @@ panvk_CmdEndQuery(VkCommandBuffer commandBuffer, } void -panvk_CmdWriteTimestamp(VkCommandBuffer commandBuffer, - VkPipelineStageFlagBits pipelineStage, - VkQueryPool queryPool, - uint32_t query) +panvk_CmdWriteTimestamp2(VkCommandBuffer commandBuffer, + VkPipelineStageFlags2 stage, + VkQueryPool queryPool, + uint32_t query) { panvk_stub(); } diff --git a/src/panfrost/vulkan/panvk_vX_cmd_buffer.c b/src/panfrost/vulkan/panvk_vX_cmd_buffer.c index cb1598626fe..a9b2c2af501 100644 --- a/src/panfrost/vulkan/panvk_vX_cmd_buffer.c +++ b/src/panfrost/vulkan/panvk_vX_cmd_buffer.c @@ -1105,16 +1105,8 @@ panvk_per_arch(CmdEndRenderPass)(VkCommandBuffer cmd) void -panvk_per_arch(CmdPipelineBarrier)(VkCommandBuffer commandBuffer, - VkPipelineStageFlags srcStageMask, - VkPipelineStageFlags destStageMask, - VkDependencyFlags dependencyFlags, - uint32_t memoryBarrierCount, - const VkMemoryBarrier *pMemoryBarriers, - uint32_t bufferMemoryBarrierCount, - const VkBufferMemoryBarrier *pBufferMemoryBarriers, - uint32_t imageMemoryBarrierCount, - const VkImageMemoryBarrier *pImageMemoryBarriers) +panvk_per_arch(CmdPipelineBarrier2)(VkCommandBuffer commandBuffer, + const VkDependencyInfo *pDependencyInfo) { VK_FROM_HANDLE(panvk_cmd_buffer, cmdbuf, commandBuffer); @@ -1195,9 +1187,9 @@ panvk_add_wait_event_operation(struct panvk_cmd_buffer *cmdbuf, } void -panvk_per_arch(CmdSetEvent)(VkCommandBuffer commandBuffer, - VkEvent _event, - VkPipelineStageFlags stageMask) +panvk_per_arch(CmdSetEvent2)(VkCommandBuffer commandBuffer, + VkEvent _event, + const VkDependencyInfo *pDependencyInfo) { VK_FROM_HANDLE(panvk_cmd_buffer, cmdbuf, commandBuffer); VK_FROM_HANDLE(panvk_event, event, _event); @@ -1209,9 +1201,9 @@ panvk_per_arch(CmdSetEvent)(VkCommandBuffer commandBuffer, } void -panvk_per_arch(CmdResetEvent)(VkCommandBuffer commandBuffer, - VkEvent _event, - VkPipelineStageFlags stageMask) +panvk_per_arch(CmdResetEvent2)(VkCommandBuffer commandBuffer, + VkEvent _event, + VkPipelineStageFlags2 stageMask) { VK_FROM_HANDLE(panvk_cmd_buffer, cmdbuf, commandBuffer); VK_FROM_HANDLE(panvk_event, event, _event); @@ -1223,17 +1215,10 @@ panvk_per_arch(CmdResetEvent)(VkCommandBuffer commandBuffer, } void -panvk_per_arch(CmdWaitEvents)(VkCommandBuffer commandBuffer, - uint32_t eventCount, - const VkEvent *pEvents, - VkPipelineStageFlags srcStageMask, - VkPipelineStageFlags dstStageMask, - uint32_t memoryBarrierCount, - const VkMemoryBarrier *pMemoryBarriers, - uint32_t bufferMemoryBarrierCount, - const VkBufferMemoryBarrier *pBufferMemoryBarriers, - uint32_t imageMemoryBarrierCount, - const VkImageMemoryBarrier *pImageMemoryBarriers) +panvk_per_arch(CmdWaitEvents2)(VkCommandBuffer commandBuffer, + uint32_t eventCount, + const VkEvent *pEvents, + const VkDependencyInfo *pDependencyInfos) { VK_FROM_HANDLE(panvk_cmd_buffer, cmdbuf, commandBuffer);