Use F3DEX3 memset to clear Z buffer for RDP time savings #130
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.
If F3DEX3 is enabled and the global variable
gUseMemsetForZBuffer
is set (is by default), F3DEX3's newSPMemset
command is used to clear the Z buffer instead of a fill rectangle on the RDP. This saves about 400 us of RDP time, and adds about 400 us of RSP time, per frame. Theoretically the RSP is supposed to be faster at filling memory than the RDP, but I wasn't able to measure one being more than the other because the game's render time fluctuates anyway. Even at the same time, this is still a benefit as the game is usually RDP bound.The Z buffer is cleared later in the frame, after drawing the sky (before anything which uses the Z buffer), because we need to get the framebuffer clear or sky draw commands started on the RDP before spending RSP time clearing the Z buffer.
Also cleans up a little repeated code in z_select.