
Windowsがいきなり暗転する問題がようやく解決した
長らく問題を抱えていた。
というのも、いきなり画面が暗くなって(一瞬だけ暗転)夜間モードが解除されたり、ウィンドウが真っ暗になったりという現象がたまに起こっていた。頻繁でないというのが厄介で、いまいち検索しても似た症状がヒットせず、困っていた。
で、最近ようやくそれの原因と改善策が分かったので共有しておく。ただ、もしかしたらそれぞれの環境によっては無意味だったりするので、そこは留意されたい。
症状
一瞬だけアプリなどの動作が停止し(2秒ぐらい?)、暗転。復帰すると夜間モードが解除されたり、chromeのウィンドウが真っ黒になってたりする。Discordなんかも真っ暗になり、一度アプリを落とさないと操作不可になる。
幸いアプリそのものを再起動すればいいだけなのだが、その手間が面倒。そして、夜間モードに関しては機能上オンになっているが見た目では完全にオフになっているのが不思議。
原因
おそらく原因は2つ。1つは「ハードウェアアクセラレーションによるオーバーフロー(?)」、もう1つは「モニターの想定FPSを超えるFPS発生によるズレ修正」。
最初は前者が原因かと思ったが、たぶん大きいのは後者のような気がする。いろいろ試したところ、前者は違うような気がしてきた。一応どちらもの対策を記載しておく。
対処法
ハードウェアアクセラレーションをオフにする
そもそもハードウェアアクセラレーションとは、簡単に言うと処理をCPUからGPUに変換して効率を上げるシステムのことを言う。ここでは難しい話は省略するが、つまり「ウチのほうがそれ得意ですよ!」という部署に仕事を回す機能だ。
これを使うと、本来なら重い処理を要するwebページでもサクサク軽快に動くので、基本的にはオンにして良い。ただ、調べてみたところ問題もいくつか抱えているらしく、「ブラックスクリーン化(画面が真っ暗になってしまう)」することも結構報告されているようだ。
ということで、とりあえずの対処としてはオフにするのが良いと思う。chromeならば変なアプデが来ていない限り(少なくとも2024年9月時点では)、設定→システムでハードウェアアクセラレーションをオフにできる。同様に、Discordでもオフにすることが可能だ。
ただ、ここまで言っておいて何だが、現在私はオンにして使っている。やはりGPU主導でサクサク動いてくれるのは助かるし、後述の方が原因としては大きかったみたいで、今となっては「ハードウェアアクセラレーションは関係ないのでは」とも思っている。
アプリケーションの最大FPSを制限する
おそらく問題としてはこっちのほうが大きいと思われる。
まず、暗転する状況において自分が何をしていたのかと言えば、思い当たるのはPCゲームだった。そういえばゲームをしているとあの症状が起きていたなとふと気付いた。ということは、これに原因があると考えるのは妥当だろう。
しかし、検索してみてもゲームと暗転に関係する記述はほとんど無かった。ただ、ゲームとは関係なく、リフレッシュレートのズレの解消として「暗転することがある」という話題を見つけ、もしかしてこれじゃないかと思い至った。
最初に結論を述べる。モニターの規定リフレッシュレート以上にFPSが出ないよう上限FPSを設定するだけで上記の問題はほぼ発生しなくなる。少なくとも私は上限60FPSにしたところ、一切起こらなくなった。
つまるところ、モニターの性能に対して、自分のPCのスペックが高すぎたため、本来60FPSまでしか描画できないところ150FPSとか出すもんだから、ズレにズレまくってそのズレを一気に処理したときに暗転が起きたのではないかと思う。
今でさえ結局、本当のことはわからないが、しかしFPS上限を設定して以降は問題が起きなくなった以上、あながちこの予想は間違いでもない気がする。思えばずっと昔、とにかくFPSを上げたくてネット記事の通りに設定したことがあったが、それが原因だったのだろう(その著者とは環境が違いすぎた)。
さいごに
考えてみれば「モニターの出せるパワー以上を要求したらおかしくなるよ」なんてわざわざ悩まずとも分かることなのだが、どうしてかその発想に至らなかった。なお、これでまた暗転が発生したら私はもう知らん。その時はモニターもPCも買い替えよう。