From 5f61e6602485c154ceaa2be3093d4227c1c601ac Mon Sep 17 00:00:00 2001 From: Jesse Natalie Date: Fri, 3 Mar 2023 08:48:39 -0800 Subject: [PATCH] dzn: Use separate dirty bits for descriptor sets/dynamic buffers We'll be able to take advantage of this granularity in bindless mode Part-of: --- src/microsoft/vulkan/dzn_cmd_buffer.c | 4 ++-- src/microsoft/vulkan/dzn_private.h | 13 ++++++++++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/microsoft/vulkan/dzn_cmd_buffer.c b/src/microsoft/vulkan/dzn_cmd_buffer.c index 28cf783..930b9c3 100644 --- a/src/microsoft/vulkan/dzn_cmd_buffer.c +++ b/src/microsoft/vulkan/dzn_cmd_buffer.c @@ -4700,7 +4700,7 @@ dzn_CmdBindDescriptorSets(VkCommandBuffer commandBuffer, if (desc_state->sets[idx].set != set) { desc_state->sets[idx].set = set; - dirty |= DZN_CMD_BINDPOINT_DIRTY_HEAPS; + dirty |= DZN_CMD_BINDPOINT_DIRTY_DESC_SET0 << idx; } uint32_t dynamic_buffer_count = playout->sets[idx].dynamic_buffer_count; @@ -4712,7 +4712,7 @@ dzn_CmdBindDescriptorSets(VkCommandBuffer commandBuffer, dynamicOffsetCount -= dynamic_buffer_count; pDynamicOffsets += dynamic_buffer_count; - dirty |= DZN_CMD_BINDPOINT_DIRTY_HEAPS; + dirty |= DZN_CMD_BINDPOINT_DIRTY_DYNAMIC_BUFFERS; } } diff --git a/src/microsoft/vulkan/dzn_private.h b/src/microsoft/vulkan/dzn_private.h index 7d300c3..a36d085 100644 --- a/src/microsoft/vulkan/dzn_private.h +++ b/src/microsoft/vulkan/dzn_private.h @@ -339,8 +339,19 @@ struct dzn_device_memory { enum dzn_cmd_bindpoint_dirty { DZN_CMD_BINDPOINT_DIRTY_PIPELINE = 1 << 0, - DZN_CMD_BINDPOINT_DIRTY_HEAPS = 1 << 1, + DZN_CMD_BINDPOINT_DIRTY_DYNAMIC_BUFFERS = 1 << 1, DZN_CMD_BINDPOINT_DIRTY_SYSVALS = 1 << 2, + DZN_CMD_BINDPOINT_DIRTY_DESC_SET0 = 1 << 3, + DZN_CMD_BINDPOINT_DIRTY_DESC_SET1 = 1 << 4, + DZN_CMD_BINDPOINT_DIRTY_DESC_SET2 = 1 << 5, + DZN_CMD_BINDPOINT_DIRTY_DESC_SET3 = 1 << 6, + DZN_CMD_BINDPOINT_DIRTY_HEAPS = + DZN_CMD_BINDPOINT_DIRTY_DYNAMIC_BUFFERS | + DZN_CMD_BINDPOINT_DIRTY_SYSVALS | + DZN_CMD_BINDPOINT_DIRTY_DESC_SET0 | + DZN_CMD_BINDPOINT_DIRTY_DESC_SET1 | + DZN_CMD_BINDPOINT_DIRTY_DESC_SET2 | + DZN_CMD_BINDPOINT_DIRTY_DESC_SET3, }; enum dzn_cmd_dirty { -- 2.7.4