XaiJu
Nekotekina
Nekotekina

patreon


Status update from kd-11 (02-11-2022)

Hi,

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

As is tradition I'll begin by summarizing all the work that has gone into the emulator since my last update. The changes are listed roughly in chronological order.

1. Improved support for Intel's ANV driver in mesa. This largely affects our linux users with integrated graphics or Arc GPUs.

2. Async compute texture streaming was reworked to avoid killing performance in some titles on NVIDIA GPUs such as Killzone 3.

3. Reworked ZPASS enablement for occlusion culling. This was a long-standing bug going back many years. Several games were improved by this including Deadpool, Transformers: Fall of Cybertron and Shaun White Skateboarding.

4. Fixed an issue with surface cache that caused data corruption when the pitch of a memory area was changed. This fixed some severe graphics corruption in Ratchet & Clank: A Crack In Time when alpha particles were on screen.

5. Several improvements to the stability of the emulator were made, specifically to address "device lost" crashes when using Vulkan. This affects all games, and especially when running an NVIDIA GPU. Other GPUs also benefit from correct rendering in heavy scenes.

6. Finally landed support for VK_EXT_attachment_feedback_loop_layout. This vulkan extension makes some of our speedhacks legal vulkan code that is supported by drivers where applicable. This fixes some visual glitches and potential crashing when running rpcs3 without "strict mode" enabled. Not all GPU drivers support this feature at this time.

7. Several performance-focused changes were also added to reduce CPU load. These net around a 10% performance improvement across most games where GPU load is reasonable.

8. Fixed a GPU memory initialization bug that fixed reflections in several games such as God of War III

9. Fixed a bug with framebuffer configuration change notifications. This fixed graphics in FUSE. The game now only needs a minor performance improvement to be considered playable.

10. Fixed a rare bug caused by integer underflow that could sometimes trigger a random crash when running rpcs3 on Linux.

11. Fixed a severe memory protection bug that caused random crashing when 'Write Color Buffers' is enabled in some titles such as MGS4.

12. Fixed a bug where the active shader program was not tracked correctly, causing random flashing and flickering in some titles. This fix also solved a long-standing crashing problem with Gran Turismo 6.

13. Made some optimizations to avoid constantly making changes to the vulkan dynamic state every draw call. This nets us another ~5% performance uplift.

14. Shader generation was reworked. There is now an option to use lower precision math if possible for a performance boost at high resolution. This allows us to emulate some GPU features such as float16 support correctly instead of relying on whatever behaviour the GPU vendor is using on their cards. Many games are fixed by doing this including but not limited to F.E.A.R, F.E.A.R 2, Ridge Racer 7, etc

15. Fixed a texturing bug that would randomly trigger a "verification failed" crash if the user enabled "Write Depth Buffer" option. This option is required in some games, most notable the Ratchet & Clank series, to avoid flickering player-character shadows.

16. Enable position invariance by default on NVIDIA drivers. This fixes some long-standing bugs that only happened with NVIDIA GPUs, such as flickering geometry in Final Fantasy XIII

17. Fixed a long standing bug regarding packed 16-bit surface formats. Clear color data and masks were generated incorrectly for these formats and they have never worked correctly. This fixes night-time rendering for Midnight Club: LA, making the game graphically perfect.

18. Many improvements to the surface cache regarding memory layout conversion (2D->1D and vice-versa). This is needed for some work I have planned.

Lastly, feature parity between OpenGL and Vulkan has finally been achieved. This was a significant effort across dozens of pull requests. The number of affected titles is too large to list individually so it was worth the effort. As we move forward with vulkan support, including the expected bump to version 1.3, it is a good idea a fallback for older GPUs that only support a subset of modern vulkan. This is a long-term goal at the moment as preserving hardware compatibility is important.

That was a long list, but there is more to be done. I have in the past month switched focus to bugfixes, with a goal to cut reported graphics glitches by half.

I still have a few long-running tasks where code is still trickling in, mostly:

1. Finish surface pitch conversion. I've landed most of the code already, only the final bits remain. I'd say we're 90% done here.

2. DMA detiling. This will reuse a lot of code from pitch conversion. I'm being extra careful here, because performance can be a little sensitive with this one. This affects a lot of AAA titles that use SPU effects, so it will be interesting to get it working out of the box without needing patches.

3. Zero-overhead drawcalls. This is a longterm goal, with the main idea being that emitting each individual draw call should not be a heavy operation. I have been slowly working towards this over the past year and we have seen some impressive performance gains.

Hopefully, I have even more improvements for you guys next time.

Thank you for your continued support.

Regards,

kd-11

Comments

oi

Davi Soares Teixeira

I think it will be available soon

Nekotekina

What is the current status of the emulator for M1 Mac OSX?

Fernando de Orbegoso

Hello. We appreciate your hard work. This all seems pretty involving so thanks! +1 on an update to the database list, even a small one =) Thanks

Jonathan R

What's the current status of the Ratchet & Clank games? Database says "playable" but also hasn't been updated in years, and you've called out several fixes for those games meanwhile.

Curtis Himel

This is really nice work

Master

Absolutely amazing progress! great work!

DSonk42145

great work

RegentFlaw

Arr my favorite time of the month :)

Dormant_Hero

Thanks for the write-up, they are always interesting

Andreas


More Creators