Previous Post

Status update from kd-11 (2020-04-29)

Next Post
no preview
DESCRIPTION

Hi,

It's kd-11 with another RPCS3 development update.

As from my last update, I was working on polishing and finalizing work on the shader interpreter subsystem. This work, I am happy to report, is now mostly completed and integrated into the emulator. For those interested, you can follow updates on this task [here]. Just a quick reminder to those who are unaware, the shader interpreter is an ubershader that interprets microcode for the PS3 GPU and uses it to render visuals. This is important to allow seamless emulator operation as generating shaders on the fly is slow and can cause stutter or pop-in when missing shaders are being compiled. Performance is largely improved, although still very poor compared to native compiled shaders, but it is enough to make the interpreters usable without the user being impacted too much.

That being said, a lot of work remains to be done in this area, although I do not plan on following it up immediately. The rough roadmap for completing this integration is as follows:

- Integrate shader optimizers into the project and use them to post-process shader bytecode. During development, it became apparent that drivers are trusting that the application has optimized SPIRV data sent to them. Unfortunately without an automated optimizer, I was left tuning the glsl shaders by hand and running them through some tools to see if the generated GPU code is good enough. This was a slow and tedious process and ultimately I fell short of getting full performance out of the GPU. This is the top priority task after the current work is integrated.

- Vulkan by design has some limitations on how shaders can be generated, necessitating deferred compilation. The current shader compiler will need to be reworked to support generating interpreters on the fly. This should fix some rare stutters that occur with the interpreter enabled.

- Background shader loading shall be implemented as the final step, where shaders can be loaded while the game intros and menus are running. This should help get users into their game much faster albeit at lower performance while shaders are being loaded from disk.

Thank you all for your continued support.

Regards,

kd-11

Nekotekina PATREON 7 favs
VIEWS1
FILES1 file
POSTEDApr 29, 2020
ARCHIVEDJun 10, 2026