XaiJu
Nekotekina
Nekotekina

patreon


Status update from kd-11 (31-01-2023)

Hi,

It's kd-11 with another update on RSX emulation for RPCS3.

There have been a lot of improvements since the last update. For most of the tail end of 2022, I kept my focus on bugfixes and improvements to improve our game compatibility. Let's go over a quick summary.

1. Lighting fixes for OpenGL in some titles such as NFS: Rivals.

2. Fixed crashing that happened if the user tried to manually prebuild the PPU cache before starting the game.

3. Implemented 8-bit ROP emulation. This fixed some rounding issues with fragment shader outputs in some titles such as Metal Gear Solid 3.

4. Fixed GPU blit for OpenGL. It had become nearly useless over time and did not work.

5. Fixed a crash when running the vulkan renderer with the "Low" shader precision preset.

6. Improved detection for incorrectly installed emulator files with a helpful message box on windows.

7. Added a much better workaround for the NVIDIA fragment attribute interpolation problem. This requires features only available on Turing+ but works much better than the old method. This fixed many games that didn't work well on NVIDIA cards before and should just work out of the box going forward.

8. Improved error handling when running the emulator on old hardware. Instead of the emulator just dying quietly, there is an error popup with the graphics card requirements that need to be met.

9. Fixed a memory barrier issue when using scratch memory in vulkan which caused flickering or light flares in some games. Mostly affected Frostbite engine games, but image stability improved in many games that use deferred lighting.

10. Improved communication between surface and texture caches. While the unification of these 2 units is a long-term goal, introducing more awareness on both sides can be used to eliminate some redundant work. This improved performance drastically in some situations when "Write Color Buffers" option is enabled in some titles such as Metal Gear Solid 4. The option is required for console-accurate visuals in some scenes.

11. Added official support for RTX40 and RDNA3 GPUs. While most new GPUs work fine out of the box, we maintain hardware specific paths for optimization and correctness for all major vendors.

12. Fixed a long-standing bug relating to fragment operation precedence. This one affected Tokyo Jungle and made it unplayable on AMD GPUs newer than polaris. In OpenGL logicOp takes higher priority than blending, but this is undefined with Vulkan if both are enabled at the same time.

13. Reimplemented framebuffer memory synchronization to fix some tricky corner cases that appeared when MSAA was enabled. This fixes text flickering and sometimes being unreadable in the Gran Turismo series.

14. Fixed incorrect text rendering in Call of Duty: Black Ops II.

I've only documented some of the major bugfixes above, but I also did some work to specifically target lower draw call overhead. In 2022, I mentioned that I had observed a very high per-drawcall count with the emulator. The reason for this is how the PS3 render commands are emitted in the stream, often without batching and with interleaved draws referencing different sets of data (textures, index buffers, etc) in ways that are impossible to batch upfront. Well, I came to the realization that if we couldn't improve the batching, we should just make it cheaper to render. There is a limit to how fast we can do this as the driver inserts overhead every time we call vkDraw commands, but the throughput should be much higher. I started some major restructuring efforts to essentially get rid of this fixed cost and the first pull request was merged [a few weeks ago.](https://github.com/RPCS3/rpcs3/pull/13201) There is more work to be done with that work, but we're now able to emit 20k draw calls at 30fps on ryzen which is a pretty good achievement.

For now the focus is back to bugfixes and quality of life improvements. I have a few major research threads going for which I hope to have something to show by the next update.

Thank you all for your continued supports.

Regards,

kd-11

Comments

Hey kd-11 and Nekotekina, Awesome work you guys do with the emulator. Are there any plans to add support for the Dualsense Edge? I was trying to use it today and it doesn't seem to be supported. DS4Windows has not worked for me with any Dualsense either, so I can't play Killzone 2 with back paddles sadly.

Jorge A. Diaz Barreto

Sorry, why do you need specific paths per brand? Aren't using generic Vulkan?

John-Gee


More Creators