tl;dr If you have a dual NVIDIA & Intel graphics configuration and are running the Windows 8 Consumer Preview experiencing crashes (black screens) when launching Metro apps, there’s a workaround.
Last week I received a new Dell XPS 15z laptop (which has its own set of issues but I digress) and one of the first things I did was to load the Windows 8 Consumer Preview on it for it to become my primary Windows 8 development machine.
Sooner than later, I discovered launching some Metro applications (mostly third-party ones) would flicker the screen black and eventually send me to the Windows login screen. This was a real roadblocker.
- Verify you have the latest NVIDIA drivers for Windows 8 (at the time of writing 296.17)
- Open the NVIDIA control panel by right-clicking on the desktop
- In “Manage 3D settings”, choose “Integrated graphics” as the preferred graphics processor globally
- Apply/save the setting
- Restart Windows (this is to ensure DWM will use this new setting)
- Open “Device Manager” by right-clicking on the bottom left corner of the desktop
- Expand the “Display adapters” section
- Right click on the NVIDIA item and click “Disable”
(Depending on your luck, you may be sent to a black screen where you’ll need to restart. The setting may also require a few attempts to take effect. Usually takes me 2 tries.)
- Verify the NVIDIA card is disabled in the Device Manager. (It will have a small gray icon)
- Try to launch a Metro app which crashed earlier, should work now
Aside from the obvious fact this won’t work if there’s no alternate integrated graphics processor, this workaround also has the side-effect of disabling some display functionality which may be tied directly to the NVIDIA GPU – most likely the HDMI port and of course 3D grunt processing power.
I’m hoping this is only a temporary workaround until NVIDIA fixes the underlying crash in their next beta driver update.
On a related note, AMD users should also be aware that the Windows 8 Catalyst drivers are also plagued with a problem in OpenGL, but there’s a workaround for that too.