Stop calling getNextDrawable
on buffer swap to avoid CPU stalls
#497
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.
MTLPlaceholderTexture
#493 for merge easegetNextDrawable
is a blocking call, which doesn't return until a metal drawable is available or timed out after a full second has passed (and returnsnull
).Calling the function after a buffer swap is a bad practice as the game may execute other logic that isn't related to rendering (more specifically, doesn't require a metal drawable).
Therefore I've moved the call to only happen on the first draw call of the frame (indicated by the buffer swap). This improves Metal performance quite a lot for our game.
Before:
After: