New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Core: Skip duplicate frames when using frame advance #8730
Core: Skip duplicate frames when using frame advance #8730
Conversation
|
I'll point out that this isn't going to work so well in any XFB mode other than Immediate Present. Not sure if that's an issue you care about. |
|
My testing was done without Immediately Present XFB, and I didn't run into any problems. What type of issue would it be more specifically? |
|
This PR makes an assumption that if the game copies something to a XFB, then that XFB will be displayed on screen in the next frame. While this might be true in the general case, there are a lot of edge cases.
|
|
Oh.. thought of some more edge cases. Homebrew often draws directly to XFB. These updates will be skipped over. Retail games occasionally do this too. Some games render loading screens or cutscenes directly to XFB. |
|
So, we already have code that knows if an XFB is duplicate or not. dolphin/Source/Core/VideoCommon/RenderBase.cpp Line 1203 in b0e0404
You should pipe that though to the |
1884659
to
8623447
Compare
|
I've pushed a new version that should be better, though I'm not sure if it solves every problem you mentioned. |
8623447
to
bb8aac1
Compare
f1a1c25
to
bcbe8d5
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Other than the minior naming/documentation issues I mentioned above, LGTM.
bcbe8d5
to
311c558
Compare
It used to be the case that frame advance skipped duplicate frames (i.e. it would take 30 frame advances to get through one second of emulated time in a 30 fps game), but this broke in 9c5c3c0. Skipping duplicate frames making TASing less annoying.
311c558
to
812ad42
Compare
https://bugs.dolphin-emu.org/issues/12025
It used to be the case that frame advance skipped duplicate frames (i.e. it would take 30 frame advances to get through one second of emulated time in a 30 fps game), but this broke in PR #8347. Skipping duplicate frames making TASing less annoying.