Give the barrier pool its own mutex to avoid a deadlock with transfer workers. #99066
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #99043.
Sharing a single mutex for the barriers vector that is used before the start of each frame led into a possible deadlock if during the process of acquiring a transfer worker, there's no available workers due to a low processor count (or an big queue of threaded buffer/texture loading), so an existing worker must be waited on and flushed. This could lead into a deadlock if the frame was also waiting on said worker to finish processing before going ahead with drawing the frame, as the pool mutex was locked.
The fix itself makes sense and should be a pretty safe merge.