uDesktopDuplication icon indicating copy to clipboard operation
uDesktopDuplication copied to clipboard

HTC VIVEをExtended modeで動作させているモニターを表示させようとするとUnityがハングアップする

Open gpsnmeajp opened this issue 5 years ago • 2 comments

twitterでお話させていた件の継続です。 https://twitter.com/Seg_Faul/status/1078886594491248642

概要 レアケースなのかもしれませんが、ViveのExtended modeを使用している際、uDesktopDuplicationでHMD側の画面を取得しながらそちらの画面にマウスカーソルを持っていくと、なぜかほぼ100% UnityEditorが操作不能な状態になります。 特にログが出ていなかったので何が起きているのか不明です 挙動的には、マウスカーソル関係の処理が競合しているように見えます。(無いはずのカーソルが左上固定で表示されていました)

再現手順 Unity 2017.4.15f1にて、uDesktopDuplicationのPrimary Monitorサンプルで再現。 HTC ViveをSteam VRにてダイレクトモード無効にし、HMDをセカンドモニタとして認識させた状態で、 uDesktopDuplicationにてセカンドモニタ(\\.\DISPLAY2)を選択。

最短の場合、この状態でプライマリモニタ(\\.\DISPLAY1)に切り替えるか、マウスカーソルをセカンドモニタに持っていくと発生。 なかなか発生しない場合もあるが、セカンドモニタにウィンドウを持ち込んだり、Steam VRの警告メッセージより「コンポジターをフルスクリーンにする」を選択すると数回でほぼ確実に発生する。

Steam VRの挙動について Extended Modeは推奨外ながら、VR非対応のグラフィックボードでも動作させる最後の手段として相当工夫をしているようで、アクティブな状態でウィンドウを持ち込もうとすると、一旦弾かれるような挙動をする。 おそらく、モニタとしての認識をオン・オフしたり、解像度を変更したりするなどの操作を頻繁に行っているのではないかと思われる。

自プロダクトにおけるRelease版uDesktopDuplicationでのアタッチ試行 #14 を参考にアタッチしたVisualStudioの標準出力側に以下のログが延々と吐き出されていることを確認 ブレークしても「すべてのコードが外部コード~」のメッセージになり、行数確認できず。 RenderTexture: Resolving a destination texture that is NULL. (Filename: C:\buildslave\unity\build\Runtime/GfxDevice/d3d11/GfxDeviceD3D11.cpp Line: 1517)

Debug版uDesktopDuplicationサンプルでのアタッチ試行 現象再現、ログファイル添付 VSlog.txt uDesktopDuplication.log uDesktopDuplication.logには異常を確認できないが、アタッチしたVisualStudioの標準出力側に同様のエラーが出力されている

D3D11: Removing Device. Assertion failed on expression: 'SUCCEEDED(hr)' (Filename: C:\buildslave\unity\build\Runtime/GfxDevice/d3d11/D3D11Window.cpp Line: 194) Assertion failed on expression: 'SUCCEEDED(hr)' (Filename: C:\buildslave\unity\build\Runtime/GfxDevice/d3d11/D3D11Window.cpp Line: 194) (略) 0x00007FF8B5275299 で例外がスローされました (Unity.exe 内): Microsoft C++ の例外: _com_error (メモリの場所 0x000000001A5EC770)。 0x00007FF8B5275299 で例外がスローされました (Unity.exe 内): Microsoft C++ の例外: _com_error (メモリの場所 0x000000001A5EE190)。 0x00007FF8B5275299 で例外がスローされました (Unity.exe 内): Microsoft C++ の例外: _com_error (メモリの場所 0x000000001A5EE478)。 d3d11: failed to create buffer (target 0x1 mode 0 size 6336) [0x887A0005]

gpsnmeajp avatar Jan 05 '19 11:01 gpsnmeajp

ありがとうございます、調査いたします。

hecomi avatar Jan 05 '19 12:01 hecomi

関連: https://twitter.com/gtk2k/status/1081523855309516801

hecomi avatar Jan 05 '19 12:01 hecomi