After doing this update, be SURE to clear your shader cache for each game. Using your previous shader cache can and will cause issues!
This is a big QoL feature for many of you - especially for those who really hate opening up your PC/laptop to drag/drop newer updates (I know I do). I've added an in-app updater. Its based-off NX-torrent-player, I've never made one before so it might be a bit clunky and buggy. We'll fix it over iterations, don't worry!
Also, I managed to reduce the number shaders that are compiled by around 10-15% because a bunch of the small shaders were being duplicated in the runtime (basically race scenarios, different parts of the emulator raced for certain shaders, resulting in the emulator wanting to build them multiple times). Additionally, I noticed that the performance drop when using 2 workers instead of 1 for compiling shaders wasn't really that much, even at stock settings. This resulted in twice as many shaders being compiled at once. Best case scenario, you'll compile shaders twice as fast. Worst case scenario, around 20-25% faster - I hate those huge PICA shaders, need to find a way to break them into smaller chunks hopefully.
Speaking of, I also made a few small tweaks to PICA shaders and how they are compiled - so they compile around 20-30% faster. You will still see stutters when those are compiled, but the stutters last on average 30% less than before. I had to do a huge amount of logging to find them, driver tweaks etc etc.
Oh and if you are chasing for accuracy, I also ported Uber shaders from Deko3D - the older backend that was being experimented by the OG dev before we got the Vulkan backend. It is incredibly slow, but its basically the best way to get the game to play smoothly-ish without the stutters or graphical glitches. Its an optional setting, you can turn them on if you want, maybe some games will play nicer with them?
Fixed a bunch of shader-related bugs when using async shader compilation - the bleeding of one screen onto the other happens considerably less now - I saw that happen a crazy ton on Zelda.
Fastmem was causing issues with some games, namely Pokemon X/Y to play at half speed during battles. However, many other games see a performance boost using Fastmem. I have added a switch in Settings that allows Fastmem to be enabled or disabled if you want.
I also did a small UI update - now you will get a popup if you try to change Async GPU settings to restart. The restart crashes the emulator for now, but it technically gets the job done. I will try to add a graceful restart/shutdown mechanic in the next updates.
Changelog:
In-App Updater. No need to plug in your Switch into PC to get updates. Your app will crash after update. That's normal.
Number of shaders to be compiled reduced by 10-15%.
Shaders compile on two workers instead of one, resulting in compilation speed boost during gameplay.
Bigger shaders compile around 30% faster, resulting in lower timed stutters.
Added an option to use slow Ubershaders for accuracy. These are ported from Deko3D.
Added an option to allow you to toggle Fastmem.
Fixed crashes with Zelda Link Between Worlds - especially when you are entering a certain dungeon inside Hyrule Castle. Spoilers.
Pulled latest changes from Azahar.
Smaller QoL changes and bug fixes.
After doing this update, be SURE to clear your shader cache for each game. Using your previous shader cache can and will cause issues!
Known Issues:
You will get crashes if you try to play a game from the library after exiting out from one. The best solution is to restart the emulator for now.
Pipelines will build incredibly slow if you play a game from the library after exiting out from one. This is because of a leak in memory. The best solution right now is to restart the emulator.
You will get crashes or black screens if you try to exit out into library from a game while shaders are compiling.