3

問題: IDXGIOutput1::DuplicateOutput メソッドを呼び出すと、切り替え可能なグラフィックスを備えたマシンで個別のグラフィックス コントローラーを使用してアプリケーションを実行すると、DXGI_ERROR_UNSUPPORTED が返されます。

この回答は、この問題に光を当てます。つまり、ディスクリート グラフィックスは画面の一部のみをレンダリングし、データを統合グラフィックス コントローラのフレームバッファに送信します。つまり、すべての出力は常に統合グラフィックス コントローラを経由します。これが、DuplicateOutput が DXGI_ERROR_UNSUPPORTED を返す理由のようです。

winapi ( EnumDisplayDevices 関数) とdirectx ( IDXGIFactory::EnumAdapters メソッド& IDXGIAdapter::EnumOutputs メソッド) を使用してすべての出力とそのビデオアダプターを取得し、切り替え可能なグラフィックス (Intel HD 4600 & NVIDIA 840M) を備えたマシンで比較するサンプルを作成しました。結果は次のとおりです。

ここに画像の説明を入力

私の比較がどれほど正しいかはわかりませんが、winapiは DISPLAY1 が Intel カードに属し、directxは DISPLAY1 が NVIDIA カードに属していると言っていることがわかります。1 つの解決策は、Intel カードの出力を複製することです (すべてがそれを通過するため) が、EnumOutputs はその出力を返しません。

現在、回避策があります。Duplication API を使用するアプリケーションは、統合グラフィックス コントローラを使用して常に実行してください。

質問: DuplicateOutput を、切り替え可能なグラフィックスを備えたラップトップのディスクリート グラフィックス コントローラーで動作させるにはどうすればよいですか? それとも Desktop Duplication API の制限ですか?

4

1 に答える 1

5

解決済み:

残念ながら、この問題は、Desktop Duplication API が Microsoft ハイブリッド システム上のディスクリート GPU に対して実行されることをサポートしていないために発生します。設計上、このようなシナリオでは、呼び出しはエラー コード DXGI_ERROR_UNSUPPORTED と共に失敗します。

この問題を回避するには、Microsoft ハイブリッド システムのディスクリート GPU ではなく、統合 GPU でアプリケーションを実行します。

ここから: https://support.microsoft.com/en-us/kb/3019314

于 2016-06-13T09:57:22.120 に答える