mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 09:08:10 +02:00
radv: Fix threading issue with submission refcounts.
If decrement == 0 then: - it isn't safe to access the submission - even if it is, checking that the result of the atomic_sub is 0 doesn't given an unique owner anymore. So skip it. The submission always starts out with refcount >= 1, so first one to decrement to 0 still get dibs on executing it. Fixes:4aa75bb3bd"radv: Add wait-before-submit support for timelines." Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6478> (cherry picked from commit6b75262941)
This commit is contained in:
parent
0bc75626a0
commit
dae04016ed
2 changed files with 7 additions and 1 deletions
|
|
@ -2965,7 +2965,7 @@
|
|||
"description": "radv: Fix threading issue with submission refcounts.",
|
||||
"nominated": true,
|
||||
"nomination_type": 1,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"master_sha": null,
|
||||
"because_sha": "4aa75bb3bdd195d4715ee8fae51bfb0c0fcd823b"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -4312,6 +4312,12 @@ radv_queue_enqueue_submission(struct radv_deferred_queue_submission *submission,
|
|||
* submitted, but if the queue was empty, we decrement ourselves as there is no previous
|
||||
* submission. */
|
||||
uint32_t decrement = submission->wait_semaphore_count - wait_cnt + (is_first ? 1 : 0);
|
||||
|
||||
/* if decrement is zero, then we don't have a refcounted reference to the
|
||||
* submission anymore, so it is not safe to access the submission. */
|
||||
if (!decrement)
|
||||
return VK_SUCCESS;
|
||||
|
||||
return radv_queue_trigger_submission(submission, decrement, processing_list);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue