nvk: Don't re-initialize the descriptor writer if the set matches

The logic here before was wrong.  In the case where the set is the same,
it would avoid the flush but then re-initialize anyway, loosing the
dirty information and causing us not to actually flush out all the
descriptors.

Fixes: 1f0fda22f7 ("nvk: Flush descriptor set maps")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38163>
This commit is contained in:
Faith Ekstrand 2025-10-28 22:09:48 -04:00 committed by Marge Bot
parent bae22fec7d
commit 2f6b3b6b91

View file

@ -94,7 +94,14 @@ nvk_descriptor_writer_next_set(struct nvk_descriptor_writer *w,
{
const struct nvk_physical_device *pdev = w->pdev;
if (w->set != NULL && w->set != set)
/* If we're writing to the same set, keep using the original writer as-is
* so we don't do unnecessary extra flushing in the case where the client
* has a lot of writes to the same set back-to-back.
*/
if (w->set == set)
return;
if (w->set != NULL)
nvk_descriptor_writer_finish(w);
nvk_descriptor_writer_init_set(pdev, w, set);