ゲーム用PCを新調するにあたり、SLIを有効にしてFF14を起動させたところ、画面が乱れる不具合が発生し、解決にかなりハマッたのでその経過を書きたいと思います。
ネットで検索したところ同じ事例で困っている人も少ないながらいるようなので、その方達の参考になれば。
環境など
問題アプリ DirectX11版FF14、及びイシュガルドベンチマーク
ハードウェア構成
CPU | Intel Core i7 5820K | LGA2011 3.3GHz |
CPUクーラー | CRYORIG ハイヴ・フィンデザイン H5 | シングルファン・サイドフローCPUクーラー |
メモリ | Crucial CT4K8G4DFD8213 | DDR4-SDRAM 8Gx4 |
マザーボード | ASRock X99X KILLER FTALITY | X99チップセット |
GPU | ASUS GTX 780 DirectCU II OC 3 GB | NVIDIA Geforce GTX780(SLI) |
SSD | Transcend TS512GSSD370S | 512GB |
HDD | Western Digital Green | 2TB |
ケース | Fractal Design Define5 | ミドルタワーATX |
電源 | SeaSonic SS-1200XP3 | 1200W 80 Plus Platinum |
OS | Microsoft Windows7 Professional | 64bit Service Pack 1 日本語 DSP版 |
症状:SLIを有効にし、フルスクリーンモードでFF14を起動すると画面が乱れる
イシュガルドベンチでも全く同じ現象が起きます。
画面が乱れるというのを具体的に説明すると
①いわゆるティアリングのように画面上部~中ほどにかけて水平方向に描画が波打つ
あるいは、
②画面全体がゴースト現象のように2重になって交互に明滅する
この2パターンの不具合が混在しました。
私の環境では「フルスクリーン時のみ」この現象が発生し、ウィンドウモードでは問題が起きません。
ですが人によっては「ウィンドウモードのみ」起きる場合もあるようですね。
原因:グラボへの電源ケーブルの挿し方が問題
どういう事かと言うと、私が使っているグラボには電源コネクタが2個付いています。
こういうグラボは何度か使ったことがありますが、2個ある電源入力のうち、片方が8ピン、もう一方が6ピンになっていて、非対称です。
で、SLIにしているので、何となく1本の電源ケーブルから2枚の8ピンコネクタへ接続。
もう1本の電源ケーブルから2枚の6ピンコネクタへ接続。
というふうに繋げていたんですね。
特に深い理由があったわけではなく、ケース内のケーブルの配置がすっきりするのでそういう接続にしただけです。
どうもコレが諸悪の根源だったようです。
これを、1本の電源ケーブルから1枚のグラボの8ピン、6ピンに接続し、もう1枚のグラボも同様に、同じ1本の電源ケーブルから2つの電源入力へ接続したら、上で書いた不具合は発生しなくなりました。
どういう理屈なのかはさっぱり分かりません。
が、他のあらゆる手段を講じても解決しなかった問題が、電源を繋ぎ直しただけであっさり解消されました。
解決に至るまでに試した事。原因では無い要素の数々。
NVIDAコントロールパネルの設定のせいではない
簡単に手をつけられるところから試したのですが、NVIDIAコントロールパネルの3D設定の管理にSLIレンダリングやら、垂直同期に関する項目があります。
これらをいじっても本現象には全く影響がありません。
というかここの設定、下手にいじると面倒くさそうなんで触るのは憚られますね。
FF14の描画設定のせいではない
fps固定モードやら、解像度をいじっても何の解決にもなりません。
新規に組んだPCなので試せていませんが、FF14以外の他の3Dゲームでも同じ現象が起きるのではないでしょうか?
NVIDIAのドライバのバージョンを変えても直らない
真っ先に疑ったのはこいつです。ネット上にも「いつの間にか直った」「ドライバを旧バージョンに戻したら直った」などと偶に書かれています。
NVIDIAのドライバが糞なのは有名なので、グラボで何か不具合が起きたらまずドライバを疑うのは当たり前となっています。
もちろん今回の挙動も、ドライバがバグっている可能性があります。というかむしろ根本の原因である可能性が高いです。
が、いくつかバージョン戻して試しましたが、全く直りませんでしたね。
半年以上前のバージョンにしても変化が無かったので、「ドライバを戻せば直る」類の問題ではありません。
DVIコネクタを挿すGPUが、GPU(1)になっていないのが悪いのでは?
コレどういう事かと言うと
NVIDIAコントロールパネルでSLIを有効にした場合、普通こうなっているかと思います。
モニターとGPU(1)が接続されており、PhysXはGPU(2)に割り当てられています。
これが、画面乱れが発生する時は
このように、GPU(2)からモニターに接続され、場合によってはPhysXと同じGPUになっていたりします。
※なっていたりします、というのは今回いろいろと試していた際に挙動が不定だったためです。
もちろん、どんなマザーボードでもPCI-ExpressのスロットはCPU側から1,2,3・・・と番号が割り当てられており、PCケースで言うと上から下へ向かってグラボの1枚目2枚目を挿入していく事になります。
当然、1枚目つまり上側のグラボのDVIコネクタからモニターへ出力しているので、上で書いたようなGPU(2)とモニターが接続されている状態にはならないはずなんですが、何故かソレが起きてしまいます。
私が調べた限りでは「何故ソレが起きるのか」は分かりませんでした。
GPU(1)からモニタ出力されるように、DVIコネクタを挿す位置を変えると一見解決したように見える
コレが罠で、すっかりハマッてしまいました。
上側のGPUが「2枚目」だと認識されているなら下側のコネクタからモニターに接続すれば、NVIDIAコントロールパネル上はGPU(1)とモニタが接続しているようになり、画面乱れも発生しなくなり、一見全て解決したかに見えます。
ですが、私の環境では別の問題が発生しました。
SLI構成にしていると、どうやってもHDRレンダリングがOFFの状態になってしまう。
HDRレンダリングがOFFだとどうなるかというと、あらゆるグラデーションがガタガタになります。
特に描画面積の大きい空やエフェクト等がとても正視に耐えないレベルのマッハバンド状態になり、明らかにショボ過ぎる見た目になります。
この問題の厄介なところは、DirectX11版クライアントでは、グラフィック設定から「HDRレンダリングを有効にする」オプションが無くなっているんですね。
どうもDirectX11はデフォルトでHDRレンダリングがOnになっていて、Offにはできないようです。
が、上のように、電源ケーブルの接続がおかしな状態且つ、GPU(1)をモニタに接続していると、ティアリングやゴーストは直ったのですが、HDRレンダリングがOffになったかのような見た目になると。
この状態だとDirectX9版のクライアントを立ち上げても、やはり同じようにHDRレンダリングがOff状態になってしまいます。
さらには、SLIを無効にするとこの現象も直ります。
結局のところ、GPU(1)からモニタに繋ごうが、GPU(2)からモニタに繋ごうが、それで問題が起きる訳ではなく、「1GPUに対し同じ電源ケーブルから2つのコネクタに接続」していない事がまずかったようです。
Windows8.1のせいではない
次に疑ったのがコイツ。史上最悪の糞OSであるWindows8.1を今回新調したPCにはインストールしていました。
「どうせAeroとか糞metro UIが悪さしているのだろう」と思ったのですが、Windows7と違って8はAeroを無効にすることができない。
いやできるんですがOSに独自パッチを当てるような最終手段しかない、との事なのでこれは無理。
結果的には、Windows8.1が直接の原因ではありませんでした。
もちろん、「NVIDIAのドライバとWindows8の相性が悪く」糞バグOSと糞バグドライバのドミノ倒しで本現象が起きているのかと疑ってもみました。
が、Windows7をインストールし直しても同じようにGPUのIDは逆転したままなので、Windows7なら状況が変わるというワケでは全くありません。
SLIブリッジ(コネクタ)の向きのせいではない
GPU同士を結線する例のコネクタですが、コレ、上下どちらの向きで挿そうが挿せてしまうんですよね。
正しい向きがあるのか無いのか、本当のところが分かりません。
マザーボードに付属している事が多いこのブリッジですが、マザーボードのマニュアルにはこのパーツの存在すら記載されていません。何となく、コレはこういう用途のパーツだろうと勝手に判断して使っています、イヤマジで。
グラボのマニュアルも同様にブリッジについては完璧にスルーされてます。
NVIDIA公式サイトのQ&Aでも全く触れられていませんね。
「正しい向きはある、逆に挿すとSLIとして機能しない」と自信たっぷりに書かれている記事も見かけますが、実際のところ逆に挿さそうがSLIになってますし、3WAY用にグラボ側にもコネクタが2系統存在していますが、どちらに挿そうが問題が起きたり、ベンチの値が上下したりといった事は起きません。
今回、ブリッジをどのように挿そうがGPUのIDは全く変わりませんでしたね。
SLI構成時にPCIE3(x8)がGPU(1)になっているのは問題ないのか
結局のところ、今回組んだPCでは何をどうしてもPCIE1をNVIDIAコントロールパネルでGPU(1)として認識させる事ができませんでしたが、電源ケーブルさえ正しく接続すれば、どちらのGPUからモニタに接続しても問題は発生しなくなりました。
が、マザーボードのマニュアルによると、CPU側のPCI-Expressレーン数が28の場合(つまり今回使っているCore i7-5820Kの場合)は、PCIE1は16レーン、PCIE3は8レーンになる、と書かれています。
まぁ当然ですね。
この場合、8レーンのGPUがグラボ1として認識されている状態なので、性能面で不利になってはしないか?と心配になります。
あるいは、レーンの構成がこうなっているからこそ、モニターへの出力は8レーン側(PCIE3)で行い、描画処理自体は16レーン側で行うように、わざわざNVIDIAのドライバが気を利かせて変更しているのか?という考えも浮かびます。
さておき、実際にこの状態でベンチを取ってみました。
うんまぁ、特に問題ないようですね。
旧マシンで計測した時は9365というスコアだったので、チップセットが変わったせいなのか多少数値が向上しています。
前のCPU(Core i7 980)はPCI-Express2.0 x 36レーンでしたが、CPU直結ではなくノースブリッジを介していたので、今回のCPUに搭載されたPCI-Express3.0 x 28レーンの方が有利なのかもしれません。
4年前に組んだPCと大差ないスコアってのもちょっと残念ですが、GPUは変わってませんからねぇ。