Create a seperate event for each fence wait. #8273
Merged
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.
Connections
Fixes #8267
Description
Currently a single event is used across every single thread that waits. However, these events only wake up a single thread per signal, and that thread is never defined. This can cause a thread never to be signaled, causing a 60 second hang in fence waiting. I have also made a separate event per
wait_for_present_queue_idle
call, however I have no definitive case showing if it could fail so if requested, I can revert it.Testing
Ran a modified version (due to changes between latest release and now) of the test case in #8267. Because this bug has to do with thread timings, and the specific way windows wakes up threads, I currently have decided to include no test case (but if desired I could put in a test).
Squash or Rebase?
Squash.
Checklist
cargo fmt
.cargo clippy --tests
.cargo xtask test
to run tests.CHANGELOG.md
entry.