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>
This commit is contained in:
parent
e4dadb545f
commit
6b75262941
|
@ -4414,6 +4414,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…
Reference in New Issue