
For example, Citra MMJ already had a shader cache implemented. If your smartphone has a Mali GPU (found in Kirin and Exynos SoCs) then you might be better off trying out the unofficial Citra MMJ, as it has a number of mods and patches used specifically to eke out more performance.


Your mileage will vary though, and for now, performance is still far from optimal on non-Qualcomm chipsets. While it certainly helps that I am using a flagship Qualcomm Snapdragon 888 device with fast storage, users on Reddit have reported that there are noticeable performance improvements even on weaker devices. The shader cache is enabled by default in Citra, and the performance is massively improved already from my testing in both A nimal Crossing: New Leaf and in Pokemon X. A common thing for people to do is to back up their shader cache when using Citra on their PC, so that if they want to come back to play the game in the future, then the game will run near-flawlessly thanks to the already-compiled shaders that can be used by the emulator. You need to install Citra beta 15 from the Google Play Store to try it out, though you'll need to decrypt your own 3DS ROMs using your own Nintendo 3DS to play games on your smartphone. They're stored in the citra-emu folder on your phone's storage, and it's worth keeping in mind that using an on-device shader will be bottlenecked by your smartphone's storage speed. The best part about shader caches is that you can save them and transfer them to new devices, though they contain copyrighted material and should not be shared with others. You can see in the video above that once you cross back and forth once, it runs at a perfectly stable 100% speed afterward. This is because the game freezes while it compiles the shaders that are used in the next section of the game, and it unfreezes when it has finished. The game freezes for a couple of seconds, however, it runs flawlessly when crossing back and forth thereafter. This is extremely noticeable in Pokemon X when crossing the bridge out of Aquacorde Town.

Once you re-engage in the same action or enter the same area that caused the slowdown, you'll see that it runs flawlessly. You'll see that there are some pretty severe slowdowns in some areas, but that appears to be when it compiles the shader and saves it to the device storage.

Testing on both the Xiaomi Mi 11 Ultra and the OPPO Find X3 Pro, the difference is hugely noticeable. Merges latest fixes & improvements from upstream Citra.Implements a GPU shader cache, which improves performance and reduces framerate "stuttering".
