panvk: Implement VK_KHR_synchronization2

It's easier to switch to sync2 before CmdPipelineBarrier gets any more
complicated.

Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15436>
This commit is contained in:
Jason Ekstrand
2022-03-17 14:53:18 -05:00
committed by Marge Bot
parent 39c395d1d2
commit b573b22628
3 changed files with 18 additions and 32 deletions
+2 -1
View File
@@ -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,
+4 -4
View File
@@ -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();
}
+12 -27
View File
@@ -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);