mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 05:08:08 +02:00
zink: fix batch disambiguation on first submit
submit_count is used to disambiguate a batch_id based on the generation id of a given batch: this value is incremented once on submit and once on reset such that the diff of the values is > 1 any time the batch does not represent the fence it was last submitted with in the case of a batch's first use, however, this value was being incorrectly incremented such that the first submit would cause disambiguation checks to erroneously determine that the batch had already completed, breaking synchronization fixes #9313 cc: mesa-stable Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24016>
This commit is contained in:
parent
9b572ce8eb
commit
3c520892b1
1 changed files with 3 additions and 1 deletions
|
|
@ -167,6 +167,9 @@ zink_reset_batch_state(struct zink_context *ctx, struct zink_batch_state *bs)
|
|||
bs->unordered_write_access = 0;
|
||||
bs->unordered_write_stages = 0;
|
||||
|
||||
/* only increment batch generation if previously in-use to avoid false detection of batch completion */
|
||||
if (bs->fence.submitted)
|
||||
bs->usage.submit_count++;
|
||||
/* only reset submitted here so that tc fence desync can pick up the 'completed' flag
|
||||
* before the state is reused
|
||||
*/
|
||||
|
|
@ -174,7 +177,6 @@ zink_reset_batch_state(struct zink_context *ctx, struct zink_batch_state *bs)
|
|||
bs->has_barriers = false;
|
||||
if (bs->fence.batch_id)
|
||||
zink_screen_update_last_finished(screen, bs->fence.batch_id);
|
||||
bs->usage.submit_count++;
|
||||
bs->fence.batch_id = 0;
|
||||
bs->usage.usage = 0;
|
||||
bs->next = NULL;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue