Previous Post

Status update from kd-11 (2019-06-25)

Next Post
no preview
DESCRIPTION

Hi,

kd-11 here with an update on the recent development progress of RPCS3.

Let's start with an update from the last post; [MSAA PR] was merged successfully with minimal regressions. After this I took some time to do some much needed RSX optimization work. First, let's start with a quick look at the events that led to this. During the research stage of multisample anti-aliasing (MSAA) integration, I was made aware of some major performance differences between AMD and NVIDIA cards especially on windows. Some quick profiling by contributor Whatcookie showed an excessive amount of sampler objects being created on vulkan, and that this step was much slower on AMD drivers than NVIDIA drivers. Following this report and the subsequent hotfix, I decided to investigate further into the AMD card problems. During MSAA implementation, I noticed some problems with how RPCS3 was using the GPU, thanks to the GPUOpen project and the Radeon GPU profiler. There were some major problems with shader occupancy on some passes, shaders were way too big and complicated and consumed too much register space. I decided to look into this problem a bit further after the MSAA work was finished and got to work immediately after that PR was merged. After investigating some generated shaders and optimizing them by hand, I noticed that some shaders were consuming almost 50% more registers while being 3-10x longer in terms of instruction count that should be needed. This was actually causing shader load problems in some games where even with a shader cache it would take too long to preload the shaders. Another major issue especially on vulkan was that I had too many barriers in place. Every imaging operation was converting the layout to the expected layout then doing more barriers to revert this change after. This isn't a problem done once or twice but this was happening way too often and causing performance bottlenecks. I set out to correct these two issues first before proceeding with profiling and user testing. After this users pointed out a few more games with RSX bottlenecks and further digging revealed new bottlenecks in ZCULL and index buffer uploads. These two sections were subsequently reworked and performance was greatly improved. Many 60fps games that were stuck in the mid-40s can now hit 60fps if other parts of the emulator allow it which should improve playability of some fighting games. Many games should see a significant benefit from this work which you can follow [here].

A lot more optimization work remains, but I plan of fixing some older regressions from previous work for now. Thank you all for your continued support.

Kind regards,

kd-11

Nekotekina PATREON 7 favs
VIEWS1
FILES1 file
POSTEDJun 25, 2019
ARCHIVEDJun 10, 2026