Rpcs3: PR 3664 Major slowdown regression

Created on 29 Oct 2017  路  16Comments  路  Source: RPCS3/rpcs3

PR 3664 commit bf234dc6 caused major slowdown in most in many (if not all games)
here's few examples
RDR intro scene
before 15fps
after 5fps
Juiced 2 first career race
before 23 fps
after 11 fps
Heavy Rain Demo main menu
before 30fps (about 37-40 if not limited)
after 24-25 fps

Most helpful comment

The pipeline will be rewritten to eliminate this issue. I'll tackle this one with the next round of optimizations coming up in the next few days.

All 16 comments

That commit exclusively affects strict mode. Are you using strict mode?

Nope all test done with Strict Rendering off
but i think it's Vulkan only issue, cause OGL has the same speed before and after
and reverting changes in VKGSrender.cpp get issue fixed

In that case its not an issue. The previous implementation there was terrible and hacky. However, I'm not getting this massive slowdown you speak of and games are running at the same speed as before for me. I'll try and reproduce the issue.

I can confirm this major slowdown for Read Dead Redemption. For me it even goes down to 2ps with Vulkan (GeForce GTX 1070).

Any other games? RDR is the worst test candidate and I dont have the other 2.

I can confirm that all my games (less busy ones, mostly lot's of jrpgs) still run perfectly smooth on 30 and 60fps :) No scaling, and using Vulkan only.

Try https://ci.appveyor.com/project/kd-11/rpcs3/build/0.0.3-1079
The issue with these games is that they have several dozen framebuffers per frame. Like 80+
That is a problem when scanning them several times per draw call x 2k+ calls. You end up scanning for hits something like 32000 times. This is not a bug per se, btw. We should scan for hits in framebuffer memory to determine proper scaling.
That build optimizes the scanning method a bit to try and limit the impact of searching through such a long list. I'll eventually have to optimize the function or integrate the surface store into the texture cache somehow to ease the problem. The texture cache is alot more optimized for random searches.
The only "solution" would be to hide this step behind strict mode, but I feel we're already hiding too much functionality behind that switch

I tested around ~10 games and only found Juiced 2 to be regressed in terms of performance, the build kd linked above did fix the problem though. Here's results from Juiced 2 I just sat at the racing line then monitored performance after the other cars left the view.

Master: 13fps
Fork: 19fps
Before 3664: 23fps

This new build speeds up the beginning of Red Dead Redemption to around 6fps with Vulkan, so it is indeed an improvement.

The pipeline will be rewritten to eliminate this issue. I'll tackle this one with the next round of optimizations coming up in the next few days.

Indeed the games i've tested speeded up with this, thanks

Midnight club LA - from 12fps to 6fps
5820k 4,5Ghz

Retest with https://github.com/RPCS3/rpcs3/pull/3689
Or you can check by rsx_volatile branch which has a WIP rewrite of the rendering code

PR 3689 is fine, speed is back, but wip rsx_volatile rdr is slow as if there's no fix also characters has white faces and shadows even if they're buggy are gone, anyway it's another issue

12 fps back with 3689

fixed now by #3699

Was this page helpful?
0 / 5 - 0 ratings