Allow initialising shaders in parallel #455
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.
Headline stats: Reduces shader initialisation time from ~5seconds on Pixel 6 to ~2 seconds (with no compromises on runtime performance)
This is disabled on wasm because there are no threads.
This is disabled on macOS, following the prior art in Bevy (bevyengine/bevy#10812 (comment))
This work queuing system is not intended to be the final form of this, which is why I have made this optional.
This would not be suitable for many consumers, who will likely already have their own thread pool.
We currently just create short lived threads using
std::thread::scope
.I still think this is useful to have for experimental purposes, and I think it should also be useful in Xilem in its current form. @xorgy might need you to confirm that
This is not async shader initialisation, which I do also plan to add. This is a useful first step towards that, however