Dolphin, the GameCube and Wii emulator - Forums

Full Version: Ubershaders on D3D Failing on laptop.
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Dolphin seems to have problems using Ubershaders on my laptop when using the D3D11 backend. The game runs judging from the audio but the screen remains entirely black.

My guess is that it has problems with how laptops render stuff (the graphics render through the iGPU even if you are using the dedicated one) as it detects the GT 740m fine in the settings at first but after launching a game it only sees Intel HD Graphics 4000 despite Dolphin using the GT 740m for all the rendering. But this is just speculation on my part.

On Vulkan is works fine (albeit really slow) but going fullscreen results in a black screen like D3D. Which remains even if you switch back to windowed mode.

OpenGL is the only one that works entirely as intended (but also at like 10 fps in Twilight Princess at 2x IR).


The Nvidia driver version is 364.72. Rest of the specs can be found on my user profile.
Are you using exclusive or hybrid ubershaders? Exclusive mode tends to be more intensive.

Make sure you have both GPUs´ drivers updated to the latest version. And, make sure you have set up a High Performance profile in the NVidia Control Panel (and Windows, too).

Also, you didn´t specify the dev build you´re using.
I'm was the exclusive mode as I was just curious how well it would run.

After spending the last 2 hours updating drivers (Thanks to Nvidiot for still sucking at updating their own drivers) the problems is still there.

So I decided to try Hybrid mode. The results seemed promising at first but I quickly realised it works exactly like asynchronous shader caching in that objects it didn't have a cached shader for simply wouldn't render! (see attachments).


I'm using 5.0-4994 btw.
You may want to clear the ubershaders generated (Documents/Dolphin Emulator/Cache/Shaders) and make them recompile under Hybrid mode for better results. There shouldn´t be graphics missing like that (the Hybrid mode compiles most of the larger/difficult shaders AFAIK, and the smaller ones are generated normally as you play).
hah. nice.


Can you check to see if this happens in a clean user profile and settings?

drop a blank "portable.txt" next to dolphin.exe, start it, configure your controller and whatever. Then in Graphics, only set your backend, and ubershaders option.

If ubershaders works, then set your internal resolution. The fun thing about Ubers is that a lot of settings can change it's behavior. So diagnosing problems is hard.
Now it doesn't even get in-game. It just throw an error at me during shader compilation. This error only occurs on the D3D11 backend. OpenGL works fine.

Is it supposed to recompile the shaders evertime you launch a game? I expected it would just compile it once and then cache it.


(08-04-2017, 09:06 AM)DJBarry004 Wrote: [ -> ]You may want to clear the ubershaders generated (Documents/Dolphin Emulator/Cache/Shaders) and make them recompile under Hybrid mode for better results. There shouldn´t be graphics missing like that (the Hybrid mode compiles most of the larger/difficult shaders AFAIK, and the smaller ones are generated normally as you play).

From how I understand it works is that it simply checks if there is a cached shader. If not it starts creating one and renders the effect using the slower Ubershader until this is done. Which would explain why these graphical defects happen if the Ubershader simply fails to render anything.


Edit: Disabling the Panic Handlers (which is how it was set before I put Dolphin into portable mode) does allow it to get past the shader caching without errors blocking the way. But with the same black screen and a dump folder filled with bad_ps files. The Ubershader cache files are also suspiciously small. (UberPS is 1kb and UberVS is only 139kb. Compared to the OpenGL one which is over 9MB).
It should compile once... unless you change certain settings (like IR).
Windows 7 doesn't come with a new enough Shader compiler for Ubershaders. You need to get all the updates from Windows update I believe... another forum thread listed the exact ones you needed, but I can't find it.
That fixed it! My only guess is that is was part of the most recent monthly quality rollup I didnt have time to install yet. The other updates didn't seem to be related.

I'm not really sure how D3D11 was that much faster in the artice on the main page. Exculsive runs just as slow on D3D11 as on any other backend. Hybrid works absolutly flawless though so no complaigning from me.

After playing games on Dolphin for years I just got used to the shader caching. It's such a weird experience when my brain expects to the game pause for a split second when instead it just keeps running smoothly like shaders don't even exist.

Simply amazing work!