I feel like best/simplest/most effective solution is somehow omitted. Personally I think the best way to solve shader compilation stuttering would be to:
1. Gather necessary shaders - in "oryginal" form, just the "bytes/code" before it is transformed into PC GPU shaders
2. Save them on disk, or remotely through some REST API with game identiefier and hash (global database for each game, anyone playing Wii game through Dolphin could be sending game "oryginal" shader "bytes/code")
3. Per request, on target pc/GPU/driver transform all gathered "original" shaders to PC GPU shaders, compile it: a) when user whants (without actually playing game) or b) when users starts a game and wants to wait till all the shaders will be compiled or c) when user starts a game - in seperate thread
4. Now we have pre-compiled PC GPU shaders per game - use it (check hash) if it is available, if not do point 2
5. When Dolphin will detect GPU/driver change - do point 3
The idea is to have all the "original bytes/code" that have to be transformed to PC GPU shaders for each game (to gather most of them at least one person would have to actually finish whole game). This can be later offered as downloadable package for game. Dolphin will have to re-compile it each time when GPU/driver change - save it and re-use.
What is wrong with my thinking ? Isn't that best/simplest to implement solution ?
1. Gather necessary shaders - in "oryginal" form, just the "bytes/code" before it is transformed into PC GPU shaders
2. Save them on disk, or remotely through some REST API with game identiefier and hash (global database for each game, anyone playing Wii game through Dolphin could be sending game "oryginal" shader "bytes/code")
3. Per request, on target pc/GPU/driver transform all gathered "original" shaders to PC GPU shaders, compile it: a) when user whants (without actually playing game) or b) when users starts a game and wants to wait till all the shaders will be compiled or c) when user starts a game - in seperate thread
4. Now we have pre-compiled PC GPU shaders per game - use it (check hash) if it is available, if not do point 2
5. When Dolphin will detect GPU/driver change - do point 3
The idea is to have all the "original bytes/code" that have to be transformed to PC GPU shaders for each game (to gather most of them at least one person would have to actually finish whole game). This can be later offered as downloadable package for game. Dolphin will have to re-compile it each time when GPU/driver change - save it and re-use.
What is wrong with my thinking ? Isn't that best/simplest to implement solution ?