rsx: Asynchronous host memory management - #16352
Conversation
This comment was marked as off-topic.
This comment was marked as off-topic.
|
@MarioSonic2987 Is the breakage in the screenshot? I am quite bad at finding differences in still images unless it's obvious or pointed out. |
We can see a glitch on his right hand (black texture) |
The poor dude in the screenshot got his eyebrows shaved and also his right palm has a pitch black spot. |
|
However (Disable Asynchronous Memory Manager: False) this option will cause (Gran Turismo 5) the loading screen to freeze when returning to the main menu after a match or when exiting a replay, and must be changed to True before returning to the main menu. |
|
Applied this PR on top of current rpcs3 release (today) and also on previous releases (3 days ago when this PR was opened) and in both cases I have some freezes in some games on specific sections. For example, attached the log on Resistance 3 when starting section |
Any other games affected? I was hoping a smaller game or demo could reproduce. AAAs are hard to debug due to the fact that there is so much "noise" in the data. |
yes, the freeze was present also on other games (I have to recheck which ones (I do not remember)) but they are AAA games (I do not have small games or demos). The freeze is present also with the new param |
The issue is present also on your standalone PR (downloaded and compiled). I also verified that in Resistance 3 the freeze is due to WCB enabled |
There's some running discussion of write color buffers accelerating freezes in games prone to freezing. I can't double confirm this PR as causation to the freezes because of this running discussion. |
I do not have any freeze on current master (or previous versions) with WCB (I always had WCB enabled). On my side, the only annoying issue on some Insomniac games (R1 and R3) is the Device Lost that is present with or without WCB. EDIT: With this PR, the freeze is not random but it always happens when the game's section is loading (just when the screen is switched to black before the gameplay starts. |
|
The freeze on my side seems to be related to the flag
in If I remove that flag there is no more freeze. |
0bb59de to
c6d76e8
Compare
Thanks for confirming. Skipping external bounds can work but requires some extra work to avoid replacement (RO vs NO flags). I've removed the change for now. Hopefully no more hangs. |
|
@ItsLaguna Retest when it builds as well. I need to make sure no regressions. |
Game crashes when trying to load to main menu if Disable Asynchronous Memory Manager is set to False. If it's set to True, the game reaches the main menu and can play just fine. |
@MarioSonic2987, @ItsLaguna |
@digant73 Just saw this but I wasn´t cloning the project, I'm grabbing the artifacts produced from Azure. I've been trying to get everything set up to build it myself but I'm struggling to do it, it would be faster if someone could provide an appimage with the rolledback file. Sorry. |
understood. Unfortunately, I can provide the Windows version only |
Managed to build it but it crashes after opening any game... I tried 😅 |
|
I'll try and make time for this over the weekend to address remaining issues. |
|
Time for some retests. If visuals are glitchy still I'll just invert the option to default to the old way and have users optionally enable this for the speedboost. |
|
Looks like everything works fine :) |
|
Open a proper bug report and link to this PR. This discussion is completed the moment the changes are committed. |
|
Weird how this issue was originally in 2018: #4876 (comment) then broke again in 2020: #7338 Then came back and was fixed again here. |



















When requesting memory protection operations, enqueue the requests and handle them in batches. Applies to the texture cache only. A common issue is that when locking pages, we end up trampling on our own work (e.g upload texture 1, lock pages, upload texture 2, requires to unlock texture 1 then lock texture 1 and texture 2, etc). This can get really slow.
Instead, we don't actually care about the memory protection during command recording, so freely mark the slots for protection until we have gathered everything and are ready to render. Then apply the protections in bulk.
The result is a significant speedup in sensitive games though this is admittedly a rare scenario. Makes id tech 5 stop stuttering to single digit framerates.