Emulator Issues #4844
closedTesting/Review request for new-shadercache-uids
0%
Description
Name of branch:
new-shadercache-uids
Purpose of code changes on this branch:
Reduce stuttering caused by redundant shader compilations and possibly fix some obscure graphical glitches.
The current pixel shader UID generator has two problems: a) It often assigns different UIDs to equivalent pipeline states (i.e. states which are emulated with the same shader code) b) In some cases, it assigned the same UID to different pipeline states (i.e. making us emulate the current state with a wrong shader).
This branch addresses both problems: It reduces the number of redundant shader compilations (case a) almost to a minimum (it's only one redundant compilations in the games I tested, compared to up to roughly 600 before). This should be very noticeable in games like F-Zero GX which supposedly have been very pixel shader intensive before. But it also reduced stuttering in many games perceptibly (only affects "loading scenes", for example the opening screen of Super Mario Sunshine or the menu/start of a race of Mario Kart Wii).
Additionally, this branches fixes case b. I'm not sure if any games where actually affected by this, it certainly is possible, though.
Another addition of this branch is the graphics setting "Enable Shader Debugging" (intentionally without a GUI option) which will make sure case b never gets hit with the new code (you never know ;)). I.e. if this branch causes any regressions, it's almost trivial to figure out what's broken.
When reviewing my code changes, please focus on:
I'm pretty confident that this doesn't break anything (and if it does, it's fairly trivial to debug with the EnableShaderDebugging setting mentioned above), so I don't really need any further testing for regressions.
Instead, I'd rather like people to test any games out there which show graphics glitches - i.e. all kinds of graphical issues apart from crashes or blackscreens. It's hard to describe, just take all those games with glitches which need less than 10 minutes to check ;)
For example, some Sonic game had various lighting issues IIRC, that would be an example.
Apart from that, I'd like to head about any differences in stuttering / game speed in particular about Red Steel 2, F-Zero GX, SSX Blur and any other games which suffer from heavy stuttering.
After the review, please merge to branch:
I'll just merge it myself to master once I've got enough feedback ;)
(still want to change a few little things before merging)
Updated by NeoBrainX about 13 years ago
NOTE: Disable pixel lighting when testing. It will not work, yet.
Updated by NeoBrainX about 13 years ago
NOTE2: I just want to stress that this won't magically fix all kinds of issues - but it might fix one or two of them. If you happen to find something which is fixed, please provide "before and after" screenshots :)
Updated by NeoBrainX about 13 years ago
Fwiw, I just tried Red Steel 2 and this branch GREATLY improves gameplay experience.. the fights are actually enjoyable now and have received a speed increase from sth like 7-25 FPS to a more solid 45 FPS.
Updated by cole.roddy about 13 years ago
Resident Evil 4 really takes benefit from this commit. It reduced stuttering greatly in the cut scenes, wich was caused by constant shader compilation activity. Only tested RE4 so far. Don't know about other games beyond the ones you've already mentioned.
Updated by hatarumoroboshi about 13 years ago
I've just tried Mario Kart Wii and Metroi Other M on a "3.0-94 dirty new shader cache uids" Dolphin version, but on my system E8400, hd4850, WinXP 32-bit I cannot see any benefit, Mario Kart still almost "freezes" when showing the circuit intro and Metroid Other M still stutters the same way during the tutorial. Where's the problem?
Updated by paavolah about 13 years ago
Sounds really good. All the work trying to tackle the stutters are really important. The random stutters / small freezes are the biggest issue with the emulator, in addition to the 4 wiimotes not working currently.
Updated by Sonicadvance1 about 13 years ago
Is this going to get pulled in soon, or is there still problems arising somewhere?
Updated by NeoBrainX about 13 years ago
Too lazy to finish it atm, it still needs to have some minor cleanups and per pixel lighting fixed.
Updated by NeoBrainX about 13 years ago
Alright, the branch should be good to go into master now. I'm waiting for [SS] to test some stuff then I'll merge it to master.