popup mlv

swiftのサンプルを動かしてみたり。

DisplayPortでモニターをスリープしたときに解像度が変わるのを解決する話

DisplayPortを使用してモニターを接続している時、モニターのスリープや電源をOFFにするとウィンドウサイズが変わったり解像度が小さくなってウィンドウが左上に寄ってしまう問題を直す話です。

DisplayPortはFreesyncやデイジーチェーンをサポートしたりHDMIより広い帯域、そしてUSB3.0type-Cではオルタネートモードによってサポートされています。今後も普及が進むことでしょうが、この問題によってとても不便にしてしまっています。モニタのレビューを見ていると、この問題を製品の不具合と言っている方もいるくらいです。

なぜ?

  • DisplayPortの仕様

発生する環境

解決方法

  • レジストリを変更して解像度を維持する
  • DisplayPortのリンクをスリープでも維持できるモニタを買う

以上2つありますが、仕様なのでレジストリを変更して解像度を維持することが現実的だと思います。

手順

  • ウィンドズキーを押して「regedit」と入力してレジストリエディタを管理者権限で実行
  • 「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration」を入力

アドレスバーへそのまま貼り付けるとすぐにその階層へ跳べます。なければ「表示→アドレスバー」にチェックを入れると表示されます。
f:id:popupin0x0:20170708071158p:plain

  • 「SIMULATED_xx」の下の階層「00」を選択(xxは環境によって違い複数ある場合があり、全て変更する必要があります。)
  • 下記の2つを開き、表記を「10進数(D)」へ変更して自分のモニターの解像度(2560x1440)を入力
    • PrimSurfSize.cx → 2560
    • PrimSurfSize.cy → 1440

f:id:popupin0x0:20170708072804p:plain

  • 「SIMULATED_xx」が複数ある場合は同様の手順で全て変更してください。私の場合、4つほどありました。

解像度の調べ方

  • デスクトップで「右クリック→ディスプレイの設定」を選択
  • 右の項目「ディスプレイ」の「解像度」の項目を見る

最後に

マルチモニター環境ではないので全ての解決にはならないと思います。マイクロソフトがこの問題を対処していればこうした手順をする必要が無いのですがなんとかならないのでしょうかね。

参考

answers.microsoft.com

Amazonベーシック DisplayPort to DisplayPortケーブル 3m

Amazonベーシック DisplayPort to DisplayPortケーブル 3m