Status update from kd-11 (10-01-2021)
Added 2021-01-10 21:01:18 +0000 UTCHi,
It's kd-11 with another RSX development update for RPCS3.
The past month has seen a mix of R&D and bugfixes going into the RSX codebase. As usual, I'll start with a quick summary of the major PRs already merged:
1. The render pipeline restructure that separated program code from general state was merged. This change avoids doing unnecessary work that has not changed between draw calls. I mentioned this during the last update as it was still in progress. Since then, several cases have been found where this change can have massive performance uplift in some games such as Split/Second which enjoyed an order of magnitude boost to performance. I will discuss the implications of this in the next section.
2. Fixed some lighting regressions in some sports games (NCAA series)
3. Added some checks when using very high resolution scale values with MSAA enabled. This can often end up rendering beyond hardware capabilities which causes garbage output.
4. Fixed some bugs in the debugging tools. RSX captures broke when implementing the pipeline restructure.
5. Fixed some vulkan bugs that caused rare crashes on some GPUs. Some of these were regressions. while some had been present in the codebase for a long time but have only started getting triggered by newer driver releases.
6. Improved debug statistics by making stats dynamically configurable at runtime. While not useful to end users, this eventually led to some discoveries by our testers that will be discussed.
7. Added full support for Ampere GPUs. This required registering some PCI IDs and setting up rules for their known quirks/restrictions. This fixes unstable behavior with new RTX cards in certain games.
8. Fixed some depth-related regressions affecting shadows in games such as MGS4. The issue is still open due to a pascal-specific issue, but it was confirmed that newer NVIDIA hardware now renders correctly. This issue is not present on AMD or INTEL hardware. Investigations are still ongoing for the remaining affected users.
Now onto the R&D discussion
First I'd like to mention a large refactoring effort that is ongoing for the rendering backends. I have already done most of the work for Vulkan, picking up from Megamouse's initial attempt at it. OpenGL remains untouched for the moment, but work on it is ongoing and will be merged slowly over the upcoming weeks.
Second, I mentioned some findings from the restructure work that led to massive performance improvements in some games. There is a serious bottleneck in the renderer that is triggered in specific games. These games use a streaming-like model for texture management which means textures move a lot in the PS3 GPU. Unfortunately, RPCS3 is very slow when dealing with games built this way, with id tech 5 being the worst affected due to the way virtual texturing (megatexture) works. Other affected games include Killzone 2 and 3, Ratchet & Clank: Future series, Farcry series, Motorstorm series, Dirt series, etc. Split/Second was also affected but when doing the restructure, I noticed that we could completely avoid uploading some textures that are bound but unused. This caused the game to jump from 3 fps to a locked 30 fps for some users which makes it a critical area for improvement.
For the moment, I have started working on multiple possible solutions to this problem. The first improvement is already in testing and nearing completion and massively boosts texture streaming throughput by having the GPU do all the heavy lifting instead of the CPU. The results are promising in some games, showing upto 20% performance uplift in select situations. The second improvement seeks to eliminate usage of memory protection for general use texture data. This mechanism is still needed for some special data structures but it is very slow to manage when a game is streaming hundreds of textures per frame.
For the moment, I plan to keep working on this texture cache improvement. Initially I wanted to first fix the surface cache issue, but the two problems are actually linked and it makes sense to start with the section that has the potential to improve the end user's experience.
I hope to share some exciting findings in the next update. Thank you for your continued support.
Regards,
kd-11
Comments
yeah same. I wanted to play some of the ratchet and clank future games. Tools of destruction runs a treat but a crack in time has so many missing effects and performance issues that i would call it almost unplayable. Mind you i'm playing both at 4k with a ryzen 7 3700x and an rx 5700xt I've also been getting so many graphical glitches with last of us that i'm pretty sure are a result of poor navi card optimization because there's a bunch of people on YouTube with the exact same issues. Anyways thanks for the awesome work everyone has done on this emulator, it's really come a long way
comp thing
2021-02-06 00:19:16 +0000 UTCWas interested in trying one of the Ratchet & Clank games, so thanks for this update.
Curtis Himel
2021-01-29 19:36:31 +0000 UTC