Holographic Emulator hangs before Unity splash screen

313 views Asked by At

I am running Visual Studio 2015 update 3, Unity 5.6.3f1, Holographic Emulator 10.0.14393.1358 and Windows 10 SDK 10.0.14393.798. I am just working through a Pluralsight course for HoloLens Development Fundamentals and I keep running into this issue when I deploy my app to the HoloLens emulator.

Whether I run without debugging or run with debugging and do not set any breakpoints, I see the start menu bloom just fine and then it clears and at the point where the Unity splash screen is supposed to display, I just get the small white cursor in the middle of the screen and nothing else ever happens.

However, If I set a breakpoint in the app.cs constructor and then step through the code, I can then see the splash screen appear and the app runs once I step through the Main method and the CoreApplication.Run(App) method call.

When looking at the ouotput log, when the program hangs, it stops at the point shown below.

Direct3D:

Version:  Direct3D 11.0 [level 11.1]

Renderer: Microsoft RemoteFX Graphics Device - WDDM (ID=0x2c1)

Vendor:   Microsoft

VRAM:     639 MB

Initialize engine version: 5.6.3f1 (d3101c3b8468)

'Example1.exe' (CoreCLR: CoreCLR_UWP_Domain): Loaded 'C:\Data\Users\DefaultAccount\AppData\Local\DevelopmentFiles\Example1VS.Debug_x86.xxxx\UnityEngineProxy.dll'. Cannot find or open the PDB file.
'Example1.exe' (CoreCLR: CoreCLR_UWP_Domain): Loaded 'C:\Data\Users\DefaultAccount\AppData\Local\DevelopmentFiles\Example1VS.Debug_x86.xxxx\System.Linq.dll'. Cannot find or open the PDB file.
'Example1.exe' (CoreCLR: CoreCLR_UWP_Domain): Loaded 'C:\Data\Users\DefaultAccount\AppData\Local\DevelopmentFiles\Example1VS.Debug_x86.xxxx\System.Reflection.Extensions.dll'. Module was built without symbols.
The following GlobalManagers were stripped from the build (Either because they're not used or not supported on this platform):
  NetworkManager
  MasterServerInterface
  UnityAdsManager
  ClusterInputManager
  CrashReportManager

If your machine has multiple graphics adapters, Unity may have created a WindowContext on the wrong adapter. If you experience a black screen when playing, please restart the Editor.

(Filename: C:/buildslave/unity/build/Runtime/VR/VRDevice.cpp Line: 194)

however, when the program runs correctly as a result of me setting a breakpoint and stepping through the code, the following lines appear after the output listed above, in the output window

UnloadTime: 36.962299 ms

Setting up 1 worker threads for Enlighten.

  Thread -> id: 8d0 -> priority: 1 

The program '[1480] Example1.exe' has exited with code -1 (0xffffffff).

My dev laptop has two adapters;

AMD Radeon HD 8790M
Intel HD Graphics 4600

I found a post on redditt r/HoloLens that talked about "Go into player settings -> other settings -> Color Space and swap it to Gamma rather than Linear", but my setting is already on Gamma so that doesn't seem to apply.

Any ideas?

1

There are 1 answers

2
Cameron Vetter On BEST ANSWER

I would guess what is happening is that the emulator (which uses the hyper v directx acceleration) is rendering to the wrong adapter. It sounds like this is timing related. Laptops with the dual video card setup use the lower power Intel adapter most of the time but switch to the nvidia card when they are rendering 3d content. I'm guessing that unity and/or hyperv is picking the adapter before that switch takes place.

Things to try:

  • You should be able to force one adapter's use all of the time in your drivers somewhere. See if that makes it work, if it does you know that is the problem.
  • Try updating your drivers for both adapters to the latest version.
  • Try updating to the newest tool chain (vs2017/unity2017)