いろいろな変化の中で見つけてしまった。
原因不明
先日、DirectX9世代のゲームを新PCで起動させた際、特定の場面に遭遇するとゲームが停止するという現象が発生する事が判明した。
その特定の場面というのが、3Dモデリングされたキャラクターが大きく表示されるシーンで、その直前までも粒度の雑なキャラクターは表示されているものの、この現象が発生するシーンに入った途端に粒度が高いキャラクターが表示されるタイミングなので、原因としてはGPU関係のドライバにあるのではないかと予測はしている。
しかし、実はこのタイミングで結構いろんなアップデートを立て続けにしているので、本当の意味での原因というのがわからない。
たとえば、Windows10 Fall Creators Updateも行っているし、ビデオドライバのRadeon Software Adrenalin Editionへとアップデートもしているし、そもそも以前のPCの環境と比較すればGPUもGeForceからRadeonに変更しているし…変更点が多すぎて、真の原因が今一つわからない。
一番解せないのは、同じプログラムが以前のPCだと動作する、という事である。
新PCでだけ動作しない理由となれば、やはり原因はRadeon&ドライバという事になるのだろうか?
Windows10 FCUでは改善している
そもそも、Windows10 Fall Creators Update(以下Windows10 FCUと略)では、DirectX9関係の問題がいくつか改善されていると言われている。
例えばWindows8.1/10ではDirectX9で4GB以上のVRAMを割り当てる事ができないというバグが存在していた。このバグの存在は古くから知られていて、2015年4月20日にはユーザーから報告されていた問題である。それが今回のWindows10 FCUでようやく解決された。但し、Windows8.1に関しては未修正という事らしいが。
また、Windows10 FCUを適用したが故に、GeForce関連でG-SyncやV-Syncに問題が発生している、という報告例もある。AMD系ではなくNVIDIA系の問題ではあるが、こういう問題がNVIDIA系で出ているとなると、AMD系でも何か問題があってもおかしくはない。まぁ報告例がないからハッキリわからないのだが、報告例がでない程不況していない、という事でもないハズなので、真偽は定かではないのだが。
また、現在では修正パッチが出た(2017年12月1日に出た)が、Windows10 FCUを適用するとDirectX9ゲームでのフレームレートが低くなるという問題もあった。これはウィンドウモードでプレイすれば問題はでない話のようだが、正常ではないという事実に違いは無い。
とにかく、あらゆる面でWindows10 FCU適用による弊害というのが出ていて、徐々に修正はされつつあるものの、イキナリ動作しなくなるなんて問題は出てきても不思議ではない状況にある。
そんな感じなので、今回DirectX9ゲームが特定の場面で停止する、という問題の原因がどこにあるのかが見えないのである。
Radeonだからダメ?
前述したように、以前のPCでは今回の問題は発生していない。
以前のPCの環境としては、Windows10 FCU適用済みで搭載しているGPUはGeForce GTX970、ドライバは最新版を入れている。
この環境下で全く同じプログラムを動作させて問題なく動作しているのだが、これが新PCだと動作しない。
当初、以前のPCと新PCの違いだけで考えた場合に、違うのは搭載しているGPUとそれに関連するドライバだけなので、Radeon側に問題があると限定して考えていた。
しかし、厳密に言えばCPUも違えばマザーボードも違うし、そもそもインストールしたプログラムの順番も違えば構築している細かな環境も異なっている。
そうした相違あるシステムでの比較となれば、確かに原因究明は困難を極めるワケだが、往々にしてある一定の標準というのは存在していて、その標準で考えた時に動作しない問題があれば、まずは大きな違いから注目するのは必然であり当然である。
というわけで、先日アップデートしたRadeon Software Adrenalin EditionでDirectX9との不具合が出ているかをいろいろ探っているのだが、現時点ではそうした報告は見当たらない。
というか、そもそもWindows10 FCU対応として、今回のAdrenalin Editionの前であるCrimson Editionの最新版で対応済みとしていた関係から、Adrenalin Editionでは全く問題が見つかっていない体の記事ばかりである。
というわけで、以前の環境にRadeon RX Vegaを載せて動作させるとどうなるのか? という事を試してみた。
すると…やはり動作しない。同じ条件で途中で停止してしまい、結局プログラムが停止してしまう。GeForce GTX970に戻せばやはり問題なく動作するので、どうもRadeonとの組合せで問題が起きる可能性は低くはないようである。
とりあえず様子見
可能性を追求していくと、とにかくいろんな条件が見えてくるので、キリがない。
ドライバが新しくなったからにしても、Windows10 FCUが原因であったとしても、今後もアップデートは続いてくだろうから、現時点ではしばらく様子見しようかと思う。
もしどうしても解決しないなら、以前使っていたPCをいつでも利用出来るようにする、というのが一つの解決策でもある。
できれば、全てを新PCに移行したいのだが、動かなければやむを得ない。
リモートデスクトップ機能で以前のPCを動作させるという手もあるが…このリモートデスクトップ機能もまた、万能というものではないので、どこまでできるのかをまた確認してみたい。