この1、2ヶ月ほどmanjaroで動画を再生する時、画面がちらつくようになったのが気になっていました。ググったところ、Intel製GPUの場合はちらつき防止のオプションがあるので有効化するといいみたいですね。
/etc/X11/xorg.conf.d/20-intel.conf
に以下を書き込むだけ。簡単。
Section "Device"
Identifier "Intel Graphics"
Driver "intel"
Option "TearFree" "true"
EndSection
Option "TearFree" "true"
がポイントですね。ちらつきというと英語でflicker
かなと思いがちなのですが、ここではtear
です。この場合のtear
は涙ではなく引き裂くの意。どうもこの「ちらつき」は垂直同期に関係していて、画面が上下に「引き裂かれる」結果だからみたいですね。
某所で教えて頂いたのですが、ちゃんと用語としてあるみたいですね。
ティアリングとは
1 枚の画像の中に複数フレームの画像が描画されてしまい、映像が途中で左右にずれたように見える現象のこと
さすがArchWikiは情報がよく纏まってるなあとか、トラブル調査すると英語も含め勉強になるなと思った次第でした。
ちなみに垂直同期は画面の更新度合いに合わせて自動でオンオフされるっぽいのですが、今回の設定を行ったら文字列などもくっきり読めるようになった気がします。
あと、この設定を行う際、xrandrなどを使って解像度などの変更をしている人はディスプレイの指定方法が変わる場合がある点に注意してください。なぜかわかりませんが、私の環境では以下のようにハイフンを使わない名前に変わってました。
DP-1
->DP1
HDMI-1
->HDMI1
思えば、このちらつきが発生するようになった直前くらいに、丁度逆方向の名前の変更が発生してxrandrの設定が効かなくなるトラブルに見舞われたのでした。その頃になにかあったんだろうなあ……。
別解
そもそもこの問題はドライバにxf86-video-intel
を使うせいらしいです。非推奨なので、modesetting
を使うといいとか。先の設定を使っている場合は、以下の手順でいける模様。
xf86-video-intel
をアンインストール/etc/X11/xorg.conf.d/20-intel.conf
を削除mesa
をインストール/etc/mkinitcpio.conf
にMODULES=(i915)
と記述mkinitcpio -P
を実行
ただし私の環境ではティアリングが復活してしまいました。 4K + WUXGAなのが原因かも知れず、EDIDなるものを手動で指定する必要があるのではと議論してます。
If you are using a custom EDID file (not applicable for the built-in resolutions), you should embed it into initramfs as well:
https://wiki.archlinux.org/title/Kernel_mode_setting#mkinitcpio
ちょっとダルいしxf86-video-intel
でとりあえず問題は解決したので先送りにします。