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: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21913>
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user