-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
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
[WIP] rsx: Plug leaky texture cache section invalidate #9107
Conversation
Madden 16 still crashes. |
As @xddxd stated, the crashing still exists. I tested it with Madden 17 and the same thing happened.
|
I am no longer able to reproduce the crash with madden 17. If I cannnot reproduce it within reasonable time the PR will get merged regardless and the broken games shall be revisited at a later date. |
Breaks GT5 graphics. |
even worse on my 1050 Ti - as soon as a track loads in the entire PC crashes and reboots. |
The same exact thing that originally happened, happens still. The same method, the same error, etc. Just tested another time and it crashed and gave me this error:
@kd-11 Try these steps as I mentioned in the original thread:
|
Crashing and corruption regression was because of a typo and is fixed. I'll keep trying to reproduce the madden issue, I have gone over the steps multiple times without issue, while on master I get it consistently every time if WCB is enabled. |
That's so odd. I'm using all default settings except for WCB being enabled and am still crashing exactly like I was before. @xddxd crashed on madden 16. Maybe try producing the issue on madden 16? |
@munchnbeaver Are you getting the purple verification failure or just generic crash/freezing? I am observing random freezing without errors in some cases, but this isn't new. |
@kd-11 yes, I still get the exact error that I got before. Earlier I got passed the loading screen one time by fiddling with the settings but I still got the freeze and crash. One time I got this error code: {PPU[0x1000019] Thread (FGGameSim) [0x00b1004c]} VM: Access violation reading location 0x7367c190 (unmapped memory) [type=u32] But yes, I still get the crash with default settings and WCB being enabled, as well as the same error code. |
@kd-11 For some reason it works if I go to advanced and enable read color buffers however if I do that, the text in game is messed up: Why would it be working with read color buffers enabled and not disabled? |
Hmm, interesting. I always have RCB enabled if WCB is enabled for memory coherency (ideally you should always enable them in pairs), that explains why I cannot observe the crashing anymore. I'll try and figure out why it works ok with RCB now vs without. |
I updated my post with screenshots of the text being messed up if RCB is enabled. The text appears like that only if RCB is enabled. It seems like there is a problem after problem haha |
As long as it was always broken, that is another problem that will not be fixed in this changeset. Once the crashing is gone a new issue should be opened with the RCB problem. |
Should the UI be updated with a suggestion to do this or move RCB from advanced next to WCB in GPU and link them? Just checked some of my games are configured with WCB only. |
I still freeze and crash with this error:
|
VM crashes are outside scope. That is not RSX-related unless everything is fine with video output disabled. |
Well I haven't crashed (other than the VM thing I posted), however it seems the fix(?) added another graphical issue. Half of the screen is blurry. But only in certain parts of the game, like cut scenes. |
Just an update: I've been playing for a while and haven't had any crashes, however, as I mentioned above, there's a blur on half of the screen on different cut scenes that is caused by whatever you have done to fix it. |
This implementation is valid, but there are other underlying issues that need investigation before this can be continued. |
Fixes Battlefield 4, no longer needs RCB to go ingame. |
1fefce7
to
3ba2451
Compare
…er flush events - This is a mostly correct fix, but a corner case exists that can leak old data to the surface cache
- Avoid double-inheritance in case discarded section was yet to be synced - Sync memory after all sections have flushed to handle overlaps correctly - Consume soon-to-fail-memory-test sections immediately - Rewrite inheritance rules a bit: -- Allow block to inherit memory if its own memory is intact
I will start adding these commits to master along with some restructuring. I'm unblocking the ticket itself for the moment. |
A lot of what is discussed here has been already committed into master. The RCB/RDB problems are acknowledged and solutions are in development for some time now. |
This is a particularly annoying issue to solve. When the texture cache was rewritten with ruipin's optimizations, we failed to plug one data path that can lead to corruption. For a sequence of overlapping memory sections A-B, an optimization was added that avoids flushing section B if section A is invalidated but the "dirty" region doesn't touch section B. However, it is valid for A and B to overlap which then causes flushing A to write into part of B in super memory. This shouldn't be a big deal since B is still protected, but the surface cache regularly checks if surfaces are corrupted and the mismatching contents will trigger B to get removed from the surface cache. Subsequent access of this (still valid in texture cache because it is protected) region will cause all manner of havoc.
The fix is two-fold:
What to test:
Fix 1 is fairly 'cheap' so no harm there.
Fix 2 is risky. If implemented incorrectly performance and stability can take a big hit. Test as many games as you can and keep an eye on VRAM usage to catch any leakage.
Fixes #9049