2016-09-29

結論、DX9 DX11の共有リソース方法をSLIで使用した場合、1プロセス内で正常に処理できる方法は無い!
全方法試したw
まず、DX11のデバイスのGPUを切り替えられるかという試み。SwapChain作成してPresent呼べば確かに取得できる値は変わる。ただし、正常に処理できない。
この結果からおそらく機能していない。おまけにDX9のレンダリングにも異常が発生する事もある。
この事からSLIは1プロセス単位でグローバルな状態管理を行っていると思われる。
次に、DX12でマルチGPU(ノードマスクを設定したオブジェクト)でGPU毎処理の試み。
序盤で躓く。SLIプロファイル(SLI有効な場合)が設定されていると、DX12でプライマリノード(ビット1)以外、作成ができない。というかブロックされる。
なるほど、SLI状態の時は裏制限が色々あるんだね。

よし、マルチGPU時のパフォーマンスアップは諦めよう。
ただし、SLIの場合ノード0は判別できるので、2GPUなら半分のレートでキャプチャはできる。
CFはそういうAPIはたぶん無い、、、はず。
シングルGPU環境だと正常動作できるので、大部分の人は恩恵を受けれるかな。

0 件のコメント:

コメントを投稿