Skip to content
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

Resistance 3: Permanent FPS drop (to about 10) with Resolution Scale set to 1080p (150%) #16548

Open
digant73 opened this issue Jan 12, 2025 · 12 comments
Assignees

Comments

@digant73
Copy link
Contributor

digant73 commented Jan 12, 2025

Quick summary

An issue I see also on old RPCS3 releases (so it is not a regression).

On my HW (Ryzen 7800X3D and GTX 970), the game is perfectly able to sustain even 60fps (enabling the 60 fps patch) at 1080p (RS set to 150%). However, even without any patch applied (so playing at 30 fps as in this submitted bug report), I often see a permanent fps drop. It doesn't seem to be related to the scene. Once the issue starts:

  • FPS immediately drops to about 10 (from a solid 30 fps)
  • GPU usage jumps to 100%. (from an average of 50-60%)
  • CPU usage is not affected (it is the same as in case the issue is not triggered; so it remains on an average 20-30%)

The GPU usage will remain at 100% and FPS at about 10 even moving to the game's main menu and starting a new chapter. The only solution is to close the game and restart it (no need to close and restart RPCS3).
When the issue is not triggered, the fps is solid 30 fps (or in range 40-60 fps with the 60 fps patch applied).
That issue is also present on the RTX 4060 with RS set to 200% (1440p).
Tested on many nvidia drivers (old and recent). The issue was present on all drivers.
Don't know if RS is in some way managed by RPCS3 or it is completely managed by the vendor's driver (nvidia in my case).

Attached a video where typically (more frequently) the issue is triggered.

BCES01118_recording_2025_01_12_12_54_29.mp4

Details

No response

Attach a log file

RPCS3.log

Attach capture files for visual issues

No response

System configuration

No response

Other details

No response

@kd-11
Copy link
Contributor

kd-11 commented Jan 12, 2025

Check your VRAM utilization in task manager to see if it's filling up the 3.5GB partition. Also try setting "VRAM allocation limit" to 2048 in the config file, hopefully that avoids using the slow memory on that card.

@digant73
Copy link
Contributor Author

It seems that when 3700 MB of VRAM usage is reached then the drop is triggered. Even if then it is below (e.g. 3400 MB) the drop persists.
I know VRAM allocation limit. Setting it to 2048, the VRAM reaches 3500 MB (not capped to 2048 MB) and then after some stuttering the entire emulator is closed (not only the game).
Attached the log file with the crash.

RPCS3.log

@Hamof1
Copy link

Hamof1 commented Jan 12, 2025

IIRC, the 970 had 3.5GB of real GDDR5 memory and 0.5GB of slower memory, so as soon as you exceed the 3.5 gigs the performance craters. You said the 4060 had the same problem? How much memory does it hit before it happens?

@digant73
Copy link
Contributor Author

digant73 commented Jan 12, 2025

IIRC, the 970 had 3.5GB of real GDDR5 memory and 0.5GB of slower memory, so as soon as you exceed the 3.5 gigs the performance craters. You said the 4060 had the same problem? How much memory does it hit before it happens?

the RTX 4060 had 8GB. I do not have it for retesting. The issue was present at 1440p (or above of course).
On the GTX 970, the VRAM allocation limit seems not to be honored however and causing also a crash of the entire emulator.
So I cannot try to skip the slow 0,5GB memory (e.g. setting VRAM allocation limit to something like 3400)

@Hamof1
Copy link

Hamof1 commented Jan 12, 2025

I know for Resistance Fall of Man there's a note in the wiki that it uses just an absolute ton of VRAM. Like a 5GB GPU doesn't recommend using above 125% RS, and even a 11GB GPU isn't 100% stable with 200% and needs to drop it down to 175%. I don't know if this still applies to RS3.

As for the memory limiter not working, that's a question I can't answer and needs to wait for kd-11 (or another developer) to get back to you.

@kd-11 kd-11 self-assigned this Jan 12, 2025
@kd-11
Copy link
Contributor

kd-11 commented Jan 12, 2025

This one is tough to fix with the current emulator state. The engine is generating so many small "slices" randomly in the address space that even when we spill the entire surface cache to RAM and reload it on demand it still uses up too much memory. The log is full of warnings and errors, but we currently have no guaranteed way to fix it without forcing RCB/RDB to ON.
I'll leave it open for now and implement an "ideal" solution (full spill and rebuild) and we can go from there. That will take a long time though before I get back to this.

@digant73
Copy link
Contributor Author

Sure thanks. Just reported something strange I see since many time

@digant73
Copy link
Contributor Author

digant73 commented Jan 14, 2025

With the exception of the old GTX 970 (waiting for the RTX 5000 series), my PC is quite good (Ryzen 7800X3D with 32 GB RAM at 6000 MHz). Just thought if it can make sense to force RPCS3 to not use at all the 4 GB at only 1750 MHz of VRAM (e.g. setting VRAM allocation limit to 0 or using other settings or even with some changes on the code) and to use only the shared RAM (16GB at 6000 MHZ with 96GB/s of bandwidth). Is that, in some ways, possible on the current emulator or possible with minor changes on the code even if it is a not optimal solution?

@kd-11
Copy link
Contributor

kd-11 commented Jan 14, 2025

Allocation limit works, we're just spilling so much to system RAM and reloading it in every frame that it has no effect in stat counters. Also since reaching the limit is treated as a fail/death condition, risky operations are attempted to keep the renderer from completely crashing which in turn increases the odds of the game crashing which is counterproductive.

@digant73
Copy link
Contributor Author

digant73 commented Jan 14, 2025

ok thanks. I also saw that GTX 970's memory bandwidth is about 224GB/S so still better than the RAM's bandwidth (I thought it was worse).
Not sure, why you say that it is reloaded. I was thinking if it was possible to use only RAM (make everything in the RAM and not in the VRAM). I set VRAM allocation limit to 0 but I see about 3,6 GB on VRAM and 1,6 GB on shared RAM. I was expecting almost 0 in VRAM (only something used by windows) and all RPCS3's game loaded in RAM (so about 5,1 GB)

@kd-11
Copy link
Contributor

kd-11 commented Jan 14, 2025

Currently rpcs3 manually spills data but doesn't use it as-is on the CPU. Before use a fresh copy is made on the GPU which is why it is so slow. It's one area of improvement, but early vulkan drivers almost never supported doing anything with cpu-side resources. Imagine having a texture that you cannot actually use for rendering until you move it back to GPU for example.

@digant73
Copy link
Contributor Author

understood now. thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants