IntelのGPUとWaylandの組み合わせでは、Broadcast RGBがLimitedに設定されて色が正しく表示されないことがあります。というか自分のPCのLinuxがそうでした。Xを使っている場合は、 xrandr --output DP-1 --set "Broadcast RGB" "Full"
みたいにすればいいのですが、 xrandr
が使えないWaylandでは結構苦労しました。
症状
Xで xrandr
を使ってBroadcast RGBをFullに設定したときと比べ、Waylandの画面では黒が薄く見える。Waylandでは当然 xrandr
が使えない。
対処
proptestの入手
まず、libdrmのソースコードを入手して展開する。 ダウンロードはこのURL から。そして下記のようにしてビルドする。
$ meson libdrm-2.4.105 $ ninja
ビルドするだけでインストールはしない。ビルドが終わると ./tests/proptest/proptest
というバイナリができているので、これを /usr/local/bin/proptest
にコピーする。
proptestの実行
/usr/local/bin/proptest
を実行すると下記のような出力が得られる。この場合、コネクタが95、Broadcast RGBのIDが101、その値は0 (Automatic)になっている。
trying to open device 'i915'...done Connector 95 (DP-1) 1 EDID: ...(略)... 101 Broadcast RGB: flags: enum enums: Automatic=0 Full=1 Limited 16:235=2 value: 0 ...(略)...
値を1 (Full)に設定するには、 /usr/local/bin/proptest -M i915 -D /dev/dri/card0 95 connector 101 1
を Waylandの起動前 に実行すればいい。
proptestの自動実行の設定
上記をGDMの起動時に自動的に実行する設定を行う。具体的には sudo EDITOR=rvim systemctl edit gdm.service
でsystemdの設定を編集する。3行目あたりにある空行に、下記を追記して保存する。
[Service] ExecStartPre=/usr/local/bin/proptest -M i915 -D /dev/dri/card0 95 connector 101 1
Linuxを再起動して /usr/local/bin/proptest
を実行し、出力が下記のようになっていることを確認する。
trying to open device 'i915'...done Connector 95 (DP-1) 1 EDID: ...(略)... 101 Broadcast RGB: flags: enum enums: Automatic=0 Full=1 Limited 16:235=2 value: 1 ...(略)...