Repository navigation
Conversation
9 tasks done
|
Other open pull requests touch the same code. Merging one will break the other, or both implement the same thing. If this one builds on them, list them in Depends on.
|
Collaborator
|
Thanks. The back-entry check uses the same comparison as the scan, owner identity included, so a hit returns the same framebuffer as before. The only difference is that the prune of expired entries now runs only on a miss. That's fine, since a miss is the only time the list grows. Two things:
|
This was referenced Oct 7, 2026
meh7an
force-pushed
the
perf/agc-framebuffer-mru-check
branch
from
October 7, 2026 17:28
318868d to
e356edb
Compare
Collaborator
|
Closing for now: there are still no numbers for this change on its own. Please reopen with a before/after (frame time or the profiled function) for this change alone. |
9 tasks done
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
What
Pipeline::AcquireFramebufferfirst pruned its cached framebuffers (ause_countand anexpired()per owner of every entry) and then scanned them, on every draw. A hit is rotated to the back, so consecutive draws into the same targets find it there. The back entry is now checked first; the prune and the scan run only on a miss, as before.#419 changes the same function for multisampled targets. The two don't overlap in purpose: the entry comparison is now one
matcheslambda used by both the back-entry check and the scan, so whichever lands second only needs #419'sownedcheck moved into that lambda.Tested
Windows 11, MinGW GCC 15.2, RTX 2080 Ti. This branch builds, and the 165 agc driver, recompiler and execution test targets pass with it stacked on the other changes I'm sending (#849 and the perf PRs opened with this one). I haven't measured this change alone: together with 14 changes of the same kind on my working branch it took Sonic Origins Plus's heaviest menu page (about 1,650 draws per frame) from 48.0 to 43.6 ms per frame (20.8 to 22.9 FPS).
Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed in TechnicalDebt.mdfiles or images added to the repository (attach them to this PR)