mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-02-02 17:30:29 +01:00
nvk/meta: Save and restore set_dynamic_buffer_start
Fixes:e0d907f56f("nvk: Rework descriptor set binding") Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29276> (cherry picked from commit681acde6d3)
This commit is contained in:
parent
7b96875784
commit
b47ea93f86
2 changed files with 17 additions and 1 deletions
|
|
@ -84,7 +84,7 @@
|
|||
"description": "nvk/meta: Save and restore set_dynamic_buffer_start",
|
||||
"nominated": true,
|
||||
"nomination_type": 1,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"main_sha": null,
|
||||
"because_sha": "e0d907f56fd84c119af22d6b4d14c52d99fd7b0c",
|
||||
"notes": null
|
||||
|
|
|
|||
|
|
@ -65,6 +65,7 @@ struct nvk_meta_save {
|
|||
struct nvk_descriptor_set *desc0;
|
||||
bool has_push_desc0;
|
||||
struct nvk_push_descriptor_set push_desc0;
|
||||
uint8_t set_dynamic_buffer_start[NVK_MAX_SETS];
|
||||
uint8_t push[128];
|
||||
};
|
||||
|
||||
|
|
@ -86,6 +87,12 @@ nvk_meta_begin(struct nvk_cmd_buffer *cmd,
|
|||
if (save->has_push_desc0)
|
||||
save->push_desc0 = *cmd->state.gfx.descriptors.push[0];
|
||||
|
||||
STATIC_ASSERT(sizeof(save->set_dynamic_buffer_start) ==
|
||||
sizeof(cmd->state.gfx.descriptors.root.set_dynamic_buffer_start));
|
||||
memcpy(save->set_dynamic_buffer_start,
|
||||
cmd->state.gfx.descriptors.root.set_dynamic_buffer_start,
|
||||
sizeof(save->set_dynamic_buffer_start));
|
||||
|
||||
STATIC_ASSERT(sizeof(save->push) ==
|
||||
sizeof(cmd->state.gfx.descriptors.root.push));
|
||||
memcpy(save->push, cmd->state.gfx.descriptors.root.push, sizeof(save->push));
|
||||
|
|
@ -141,6 +148,15 @@ nvk_meta_end(struct nvk_cmd_buffer *cmd,
|
|||
cmd->state.gfx.descriptors.push_dirty |= BITFIELD_BIT(0);
|
||||
}
|
||||
|
||||
/* Restore set_dynaic_buffer_start because meta binding set 0 can disturb
|
||||
* all dynamic buffers starts for all sets.
|
||||
*/
|
||||
STATIC_ASSERT(sizeof(save->set_dynamic_buffer_start) ==
|
||||
sizeof(cmd->state.gfx.descriptors.root.set_dynamic_buffer_start));
|
||||
memcpy(cmd->state.gfx.descriptors.root.set_dynamic_buffer_start,
|
||||
save->set_dynamic_buffer_start,
|
||||
sizeof(save->set_dynamic_buffer_start));
|
||||
|
||||
/* Restore the dynamic state */
|
||||
assert(save->dynamic.vi == &cmd->state.gfx._dynamic_vi);
|
||||
assert(save->dynamic.ms.sample_locations == &cmd->state.gfx._dynamic_sl);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue