インテルグラフィックス
Intel はオープンソースドライバの提供とサポートを行なっているので、今日 Intel のグラフィックカードは原則的にプラグアンドプレイです。
Intel の GPU モデル と関連するチップセット・CPU の一覧は Wikipedia の比較を見て下さい。
目次
- 1 インストール
- 2 設定
- 3 KMS (Kernel Mode Setting)
- 4 モジュールによる省電力設定
- 5 ヒントとテクニック
- 6 トラブルシューティング
- 6.1 ティアリングの解消
- 6.2 Disable Vertical Synchronization (VSYNC)
- 6.3 SNA issues
- 6.4 DRI3 の問題
- 6.5 GTK+ アプリケーションでフォントや画面の表示がおかしい (サスペンド・復帰後に文字が表示されない)
- 6.6 起動中 "Loading modules" するときに画面がブラックアウトする
- 6.7 Intel ドライバで X がフリーズ・クラッシュする
- 6.8 Baytrail complete freeze
- 6.9 認識されない解像度を追加する
- 6.10 復帰後、バックライトが一部調整できない、もしくは全く調整できない
- 6.11 Chromium や Firefox が壊れる、応答しない
- 6.12 Broadwell/Core-M チップでカーネル 4.0 以上を使っている場合にクラッシュする
- 6.13 Windows をゲストとした場合にラグが発生する
- 6.14 画面がちらつく
- 6.15 OpenGL 2.1 with i915 driver
- 6.16 KMS Issue: console is limited to small area
- 6.17 Weathered colors (color range problems)
- 7 参照
インストール
mesa パッケージをインストールしてください。3D アクセラレーションのための DRI ドライバーが含まれています。
- 32ビットのサポートが必要な場合は multilib リポジトリから lib32-mesa パッケージもインストールしてください。
- (Xorg で 2D アクセラレーションを得るための) DDX ドライバーが必要な場合は xf86-video-intel パッケージをインストールしてください (推奨されません、下のノートを見てください)。
- Vulkan のサポートが必要な場合 (Ivy Bridge 以降)、vulkan-intel パッケージをインストールしてください。
ハードウェアビデオアクセラレーションも見てください。
設定
Xorg を走らせるのに特別な設定は必要ありません。
ただし、ドライバーのオプションを変更するには、以下のような Xorg 設定ファイルを作成する必要があります:
/etc/X11/xorg.conf.d/20-intel.conf
Section "Device" Identifier "Intel Graphics" Driver "intel" EndSection
オプションを追加するときは Driver
の下に追加します。
設定の一覧を見るには、$ man intel
と入力してください。
KMS (Kernel Mode Setting)
X を走らせたり GNOME, KDE, Xfce, LXDE などのデスクトップ環境を使うには KMS が必要です。KMS は i915 DRM ドライバを使う Intel チップセットによりサポートされておりカーネル v2.6.32 よりデフォルトで有効にされています。xf86-video-intel ドライバのバージョン 2.10 からは UMS のサポートは打ち切られ (非常に古い 810 チップセットファミリーは例外)、KMS の使用が必須になっています[3]。KMS は基本的にカーネルが起動してから初期化されますが、起動中に KMS を有効にして、全てのブートプロセスを最大解像度で実行することもできます。
起動中に KMS を有効にするには /etc/mkinitcpio.conf
の MODULES
行に i915
モジュールを追加します:
MODULES="... i915 ..."
カスタムした EDID ファイルを使っている場合は、EDID ファイルも initramfs に入れる必要があります:
/etc/mkinitcpio.conf
FILES="/lib/firmware/edid/your_edid.bin"
initramfs を再生成します:
# mkinitcpio -p linux
そしてシステムを再起動してください。うまく機能するはずです。
GuC / HuC ファームウェアのロードを有効化
Skylake 以降のプロセッサでは、一部のビデオ機能 (例: SKL 低電圧エンコーディングモードの CBR レート制御) を使うには最新の GPU ファームウェアを必要とします。現在のところ (4.16) デフォルトでは有効となっていません。GuC/HuC ファームウェアのロードを有効にすると一部のシステムで問題が発生します。(ハイバネートから復帰したときなどに) フリーズが発生するときは無効化してください。
GuC と HuC 両方のファームウェアのロードを有効にするにはカーネルパラメータに i915.enable_guc=2
を追加します。また、initramfs に i915
モジュールを含まれている場合 (Kernel Mode Setting#Early KMS start を参照)、/etc/modprobe.d/
のファイルでオプションを設定することでも有効にできます。例:
/etc/modprobe.d/i915.conf
options i915 enable_guc=2
enable_guc=3
モジュールパラメータを使うことで GuC/HuC ファームウェアのロードに加えて GuC のサブミッションも有効になりますが、システムの安定性を損なうことがあるので基本的に非推奨です。
dmesg を使うことで有効になっているかどうか確認できます:
$ dmesg
[drm] HuC: Loaded firmware i915/kbl_huc_ver02_00_1810.bin (version 2.0) [drm] GuC: Loaded firmware i915/kbl_guc_ver9_39.bin (version 9.39) i915 0000:00:02.0: GuC firmware version 9.39 i915 0000:00:02.0: GuC submission enabled i915 0000:00:02.0: HuC enabled
もしくは以下のコマンドで確認:
# cat /sys/kernel/debug/dri/0/i915_huc_load_status # cat /sys/kernel/debug/dri/0/i915_guc_load_status
モジュールによる省電力設定
i915
カーネルモジュールはモジュールオプションによって設定ができます。モジュールオプションの中には省電力機能に関係するものもあります。
次のコマンドを使うことで全てのオプションとその説明、デフォルト値のリストが出力されます:
$ modinfo -p i915
現在有効になっているオプションを確認するには、次を実行して下さい:
# systool -m i915 -av
多くのオプションはデフォルトで -1 になっており、チップのデフォルトの省電力設定が使われます。ただし、モジュールオプションを使うことでより強力な省電力設定をすることができます。
安全に有効にすることができる一般的なオプションは以下のようになります:
/etc/modprobe.d/i915.conf
options i915 enable_rc6=1 enable_fbc=1 semaphores=1
RC6 スリープモード (enable_rc6)
enable_rc6
には 1 よりも大きい値が設定できますが、使用している GPU がオプションをサポートしていなかったり他のオプションを有効にできるなくなる可能性があります [5]。
enable_rc6
に設定できる値は 1 (RC6), 2 (RC6p), 4 (RC6pp) のビットマスクです [6]。"RC6p" や "RC6pp" は電力消費がより少ないステートになります。
現在の RC6 レベルを確認するには、sysfs を見てください:
# cat /sys/class/drm/card0/power/rc6_enable
出力された数字が低い場合、おそらく他の RC6 レベルがサポートされていません。drm.debug=0xe
を使うことで DRM のデバッグ情報をカーネルログに追加することができます:
[drm:sanitize_rc6_option] Adjusting RC6 mask to 1 (requested 7, valid 1)
フレームバッファ圧縮 (enable_fbc)
フレームバッファの圧縮は Sandy Bridge 以前の古い世代の Intel GPU では信頼性がありません。以下のようなメッセージがないかシステムログをチェックしてください:
kernel: drm: not enough stolen space for compressed buffer, disabling.
ヒントとテクニック
アクセラレーションメソッドの選択
- UXA - (Unified Acceleration Architecture) は GEM ドライバーモデルを導入した成熟しているバックエンドです。
- SNA - (Sandybridge's New Acceleration) は高速で先進的なハードウェアサポートを提供します。
デフォルトのメソッドは SNA (2013-08-05[7]) で、UXA よりも不安定ですが高速です。Phoronix によるベンチマーク [8] を見てください。Sandy Bridge のテスト と Ivy Bridge のテスト があります。SNA で問題が発生するなら、UXA は手堅い選択です。例えば、SNA ではフルスクリーンの Flash 動画を終了するときに黒画面になることがあります。
古い UXA メソッドを使いたいならば、次の内容で /etc/X11/xorg.conf.d/20-intel.conf
を作って下さい:
/etc/X11/xorg.conf.d/20-intel.conf
Section "Device" Identifier "Intel Graphics" Driver "intel" Option "AccelMethod" "uxa" EndSection
Glamor アクセラレーションメソッドの有効化
Glamor は Intel の実験的な OpenGL 2D アクセラレーションメソッドで、man ページには記載がありません。Glamor を使用するには、以下の行を設定ファイルに追加してください:
Option "AccelMethod" "glamor"
垂直同期 (VSYNC) を無効にする
垂直同期 (VSYNC) を無効にするには /etc/X11/xorg.conf.d/20-intel.conf
の Section "Device"
に Option "SwapbuffersWait" "false"
を加えて下さい。
もしくは、~/.drirc
の vblank_mode
を 0
に設定して、driver
を dri2
にセットします:
~/.drirc
<device screen="0" driver="dri2"> <application name="Default"> <option name="vblank_mode" value="0"/> </application> </device>
スケーリングモードの設定
フルスクリーンを使うアプリケーションで有用かもしれません:
$ xrandr --output LVDS1 --set PANEL_FITTING param
選べる param
は:
center
: 解像度は固定され、スケーリングは無効になりますfull
: 画面いっぱいまで解像度がスケールしますfull_aspect
: アスペクト比を維持したままスケールします
機能しない場合、次を試して下さい:
$ xrandr --output LVDS1 --set "scaling mode" param
param
は "Full"
, "Center"
, "Full aspect"
のいずれかです。
KMS Issue: コンソールの画面が狭い
起動中に低解像度のビデオが転送されると、ターミナルが使える画面が小さくなることがあります。修正するには、i915 ブートローダのカーネルのコマンドラインパラメータに video=SVIDEO-1:d
を加えてはっきりと転送を無効にするよう i915 モジュールを設定してください。詳しい情報はカーネルパラメータを見て下さい。
これが機能しない時は、SVIDEO-1 の代わりに TV1 か VGA1 を無効にするのを試してみて下さい。
有効なビデオ端子を確認する
video カーネルパラメータで無効化したいビデオ端子を識別するには、sysfs でダイレクトレンダリングマネージャモジュールを確認してください:
$ ls -l /sys/class/drm/ total 0 lrwxrwxrwx 1 root root 0 May 17 11:03 card0 -> ../../devices/pci0000:00/0000:00:02.0/drm/card0 lrwxrwxrwx 1 root root 0 May 17 11:03 card0-DP-1 -> ../../devices/pci0000:00/0000:00:02.0/drm/card0/card0-DP-1 lrwxrwxrwx 1 root root 0 May 17 11:03 card0-DP-2 -> ../../devices/pci0000:00/0000:00:02.0/drm/card0/card0-DP-2 lrwxrwxrwx 1 root root 0 May 17 11:03 card0-eDP-1 -> ../../devices/pci0000:00/0000:00:02.0/drm/card0/card0-eDP-1 lrwxrwxrwx 1 root root 0 May 17 11:03 card0-HDMI-A-1 -> ../../devices/pci0000:00/0000:00:02.0/drm/card0/card0-HDMI-A-1 lrwxrwxrwx 1 root root 0 May 17 11:03 card0-HDMI-A-2 -> ../../devices/pci0000:00/0000:00:02.0/drm/card0/card0-HDMI-A-2 lrwxrwxrwx 1 root root 0 May 17 11:03 card0-HDMI-A-3 -> ../../devices/pci0000:00/0000:00:02.0/drm/card0/card0-HDMI-A-3 lrwxrwxrwx 1 root root 0 May 17 11:03 controlD64 -> ../../devices/pci0000:00/0000:00:02.0/drm/controlD64 lrwxrwxrwx 1 root root 0 May 17 11:03 renderD128 -> ../../devices/pci0000:00/0000:00:02.0/drm/renderD128 -r--r--r-- 1 root root 4096 May 17 11:03 version
各々の端子の状態を確認するには:
$ grep . /sys/class/drm/card?-*/status /sys/class/drm/card0-DP-1/status:disconnected /sys/class/drm/card0-DP-2/status:disconnected /sys/class/drm/card0-eDP-1/status:disconnected /sys/class/drm/card0-HDMI-A-1/status:disconnected /sys/class/drm/card0-HDMI-A-2/status:disconnected /sys/class/drm/card0-HDMI-A-3/status:connected
使用したくないビデオ端子が接続済みになっている場合、上記の video=
パラメータで無効化してください (cardN-
の後ろの部分が識別子です)。例えば上の例で HDMI-A-3 端子を無効化するには video=HDMI-A-3:d
とします。
GMA 4500 での H.264 デコーディング
libva-intel-driver パッケージは GMA 4500 シリーズの GPU だけに MPEG-2 デコーディングを提供します。H.264 デコーディングのサポートは枝分かれした g45-h264 ブランチで維持されていて、AUR の libva-intel-driver-g45-h264AUR パッケージをインストールすることで使えます。しかしながらこのサポートは実験的なものであり現在活発には開発されていないことに注意して下さい。GMA 4500 シリーズ GPU のドライバと VA-API を使うことは CPU の負担を下げますが、アクセラレーションが効いていないのと同じで、スムーズに再生できるようにはならないかもしれません。mplayer を使ったテストでは H.264 でエンコードされた 1080p のビデオを vaapi を使って再生したところ (XV オーバーレイに比べて) CPU の負担は下がりましたが、途切れ途切れの再生になりました。一方 720p はうまく動きました [10]。他の報告も同じようなものでした [11]。
ffmpeg-gitAUR や libva-intel-driver-g45-h264AUR と mpv-gitAUR を組み合わせることで (1080p/720p の動画を) スムーズに再生できます。Firefox の "Watch with MPV" [12] プラグインと MPV を使うことで YouTube の動画を視聴するときにハードウェア支援が活用できます。
ガンマ値と明るさの設定
ドライバのレベルでこれらを設定する方法はありませんが、幸運なことに xgamma
や xrandr
を使って設定することができます。
ガンマ値を設定するには:
$ xgamma -gamma 1.0
もしくは:
$ xrandr --output VGA1 --gamma 1.0:1.0:1.0
明るさを設定するには:
$ xrandr --output VGA1 --brightness 1.0
トラブルシューティング
ティアリングの解消
SNA アクセラレーションメソッドを使っている場合、ティアリングが発生することがあります。これを解消するには、ドライバーの "TearFree"
オプションを有効にしてください:
/etc/X11/xorg.conf.d/20-intel.conf
Section "Device" Identifier "Intel Graphics" Driver "intel" Option "TearFree" "true" EndSection
詳しくは オリジナルのバグレポート を見て下さい。
Disable Vertical Synchronization (VSYNC)
Useful when:
- Chomium/Chrome has lags and slow performance due to GPU and runs smoothly with --disable-gpu switch
- glxgears test does not show desired performance
The intel-driver uses Triple Buffering for vertical synchronization, this allows for full performance and avoids tearing. To turn vertical synchronization off (e.g. for benchmarking) use this .drirc
in your home directory:
~/.drirc
<device screen="0" driver="dri2"> <application name="Default"> <option name="vblank_mode" value="0"/> </application> </device>
SNA issues
SNA is the default acceleration method in xf86-video-intel. If you experience issues with SNA (e.g. pixelated graphics, corrupt text, etc.), try using UXA instead, which can be done by adding the following line to your configuration file:
Option "AccelMethod" "uxa"
See intel(4) under Option "AccelMethod"
.
DRI3 の問題
xf86-video-intel ではデフォルトで DRI3 が使われます。一部の環境では DRI3 によって問題が発生することがあります [14]。DRI2 を使うには設定ファイルに以下の行を追加してください:
Option "DRI" "2"
modesetting
ドライバーでは上記の方法では DRI3 を無効化することはできません。代わりに LIBGL_DRI3_DISABLE=1
環境変数を設定してください。
GTK+ アプリケーションでフォントや画面の表示がおかしい (サスペンド・復帰後に文字が表示されない)
GTK+ アプリケーションでフォントの文字が表示されなくなってしまう場合、以下の方法で直る可能性があります。/etc/environment
を編集して以下の行を追加してください:
/etc/environment
COGL_ATLAS_DEFAULT_BLIT_MODE=framebuffer
詳しくは FreeDesktop bug 88584 を参照。
起動中 "Loading modules" するときに画面がブラックアウトする
KMS の"遅いスタート"を使っているとき "Loading modules" で画面がブラックアウトする場合、initramfs に i915
と intel_agp
を加えると解決するかもしれません。上記の KMS セクションを見て下さい。
または、次のカーネルパラメータを加えるとうまく動くかもしれません:
video=SVIDEO-1:d
VGA に出力する必要があるときは次を使ってみて下さい:
video=VGA-1:1280x800
Intel ドライバで X がフリーズ・クラッシュする
X のクラッシュや GPU のハングアップ、X のフリーズなどが起こる場合、NoAccel
オプションを使って GPU の使用を無効にすることで修復できます:
/etc/X11/xorg.conf.d/20-intel.conf
Section "Device" Identifier "Intel Graphics" Driver "intel" Option "NoAccel" "True" EndSection
または、DRI
オプションを使って 3D アクセラレーションだけを無効にすることもできます:
/etc/X11/xorg.conf.d/20-intel.conf
Section "Device" Identifier "Intel Graphics" Driver "intel" Option "DRI" "False" EndSection
設定ファイルに以下のオプションを使うとクラッシュする場合は:
Option "TearFree" "true" Option "AccelMethod" "sna"
ブートパラメータに次を追加すると修正できます:
i915.semaphores=1
カーネル 4.0.x 以上で Baytrail アーキテクチャを利用している場合にシステムが何度もフリーズする (特に動画を見たり GFX を集中使用したときに発生する) ようなときは、以下のカーネルオプションを追加することで解決します。詳しくは こちら を参照してください。
intel_idle.max_cstate=1
Baytrail complete freeze
If you are using kernel > 3.16 on Baytrail architecture and randomly encounter total system freezes, the following kernel option is a workaround until this bug is fixed in the linux kernel.
intel_idle.max_cstate=1
This is originally an Intel CPU bug that can be triggered by certain c-state transitions. It can also happen with Linux kernel 3.16 or Windows, though apparently much more rarely. The kernel option will prevent the freeze by avoiding c-state transitions but will also increase power consumption.
認識されない解像度を追加する
この問題については Xrandr のページを参照してください。
復帰後、バックライトが一部調整できない、もしくは全く調整できない
Intel graphics を使っていて製造者によるホットキーで画面の明るさを変えられない場合、次のカーネルパラメータを使って起動してみて下さい:
acpi_backlight=vendor
これで問題が解決されない場合、上のパラメータに加えて:
acpi_osi=Linux
または:
acpi_osi="!Windows 2012"
または:
acpi_osi=
を使うことで解決できるかもしれません。
また、カーネルバージョン 3.13 から、ユーザーによっては効果があるカーネルコマンドラインのパラメータがあります:
video.use_native_backlight=1
上記のどの方法を使っても問題が解決されない場合、以下の内容で /etc/X11/xorg.conf.d/20-intel.conf
を編集・作成してください:
/etc/X11/xorg.conf.d/20-intel.conf
Section "Device" Identifier "card0" Driver "intel" Option "Backlight" "intel_backlight" BusID "PCI:0:2:0" EndSection
Chromium や Firefox が壊れる、応答しない
Chromium や Firefox の表示がおかしくなったり、反応しなくなる場合はアクセラレーションメソッドを "uxa" に設定してみてください。
Broadwell/Core-M チップでカーネル 4.0 以上を使っている場合にクラッシュする
X/Wayland がロードされた数秒間、マシンがフリーズして、journalctl に以下のような Intel Graphics に関連するカーネルのクラッシュログが残ることがあります:
Jun 16 17:54:03 hostname kernel: BUG: unable to handle kernel NULL pointer dereference at (null) Jun 16 17:54:03 hostname kernel: IP: [< (null)>] (null) ... Jun 16 17:54:03 hostname kernel: CPU: 0 PID: 733 Comm: gnome-shell Tainted: G U O 4.0.5-1-ARCH #1 ... Jun 16 17:54:03 hostname kernel: Call Trace: Jun 16 17:54:03 hostname kernel: [<ffffffffa055cc27>] ? i915_gem_object_sync+0xe7/0x190 [i915] Jun 16 17:54:03 hostname kernel: [<ffffffffa0579634>] intel_execlists_submission+0x294/0x4c0 [i915] Jun 16 17:54:03 hostname kernel: [<ffffffffa05539fc>] i915_gem_do_execbuffer.isra.12+0xabc/0x1230 [i915] Jun 16 17:54:03 hostname kernel: [<ffffffffa055d349>] ? i915_gem_object_set_to_cpu_domain+0xa9/0x1f0 [i915] Jun 16 17:54:03 hostname kernel: [<ffffffff811ba2ae>] ? __kmalloc+0x2e/0x2a0 Jun 16 17:54:03 hostname kernel: [<ffffffffa0555471>] i915_gem_execbuffer2+0x141/0x2b0 [i915] Jun 16 17:54:03 hostname kernel: [<ffffffffa042fcab>] drm_ioctl+0x1db/0x640 [drm] Jun 16 17:54:03 hostname kernel: [<ffffffffa0555330>] ? i915_gem_execbuffer+0x450/0x450 [i915] Jun 16 17:54:03 hostname kernel: [<ffffffff8122339b>] ? eventfd_ctx_read+0x16b/0x200 Jun 16 17:54:03 hostname kernel: [<ffffffff811ebc36>] do_vfs_ioctl+0x2c6/0x4d0 Jun 16 17:54:03 hostname kernel: [<ffffffff811f6452>] ? __fget+0x72/0xb0 Jun 16 17:54:03 hostname kernel: [<ffffffff811ebec1>] SyS_ioctl+0x81/0xa0 Jun 16 17:54:03 hostname kernel: [<ffffffff8157a589>] system_call_fastpath+0x12/0x17 Jun 16 17:54:03 hostname kernel: Code: Bad RIP value. Jun 16 17:54:03 hostname kernel: RIP [< (null)>] (null)
この問題は execlist のサポート (カーネル 4.0 からデフォルトに変更されました) を無効化することで解決します。以下のカーネルパラメータを追加してください:
i915.enable_execlists=0
Windows をゲストとした場合にラグが発生する
VirtualBox でホスト側から(マウスカーソルを動かすなどして)画面を更新しないと Windows ゲストのビデオ出力が止まってしまうことがあります。enable_fbc=1
オプションを削除すれば問題は解決します。
画面がちらつく
Intel の iGPU によって使われている省電力機能の中にはちらつきを発生させるものがあります。適切なカーネルパラメータオプションを使って無効化することで解決できます:
- Rc6 スリープモード (#RC6 スリープモード (enable_rc6) を参照) は
i915.enable_rc6=0
で無効化できます。
- カーネルのバージョン 4.6 からパネルセルフリフレッシュ (PSR) はデフォルトで有効になります (FS#49628 FS#49371 FS#50605)。無効化するには
i915.enable_psr=0
オプションを使ってください。
OpenGL 2.1 with i915 driver
The update of mesa from version 13.x to 17 may break support for OpenGL 2.1 on third gen Intel GPUs (GMA3100, see here), as described in this article, reverting it back to OpenGL 1.4. However this could be restored manually by setting /etc/drirc
or ~/.drirc
options like:
/etc/drirc
<driconf> ... <device driver="i915"> <application name="Default"> <option name="stub_occlusion_query" value="true" /> <option name="fragment_shader" value="true" /> </application> </device> ... </driconf>
KMS Issue: console is limited to small area
One of the low-resolution video ports may be enabled on boot which is causing the terminal to utilize a small area of the screen. To fix, explicitly disable the port with an i915 module setting with video=SVIDEO-1:d
in the kernel command line parameter in the bootloader. See Kernel parameters for more info.
If that does not work, try disabling TV1 or VGA1 instead of SVIDEO-1. Video port names can be listed with xrandr.
Weathered colors (color range problems)
The "Broadcast RGB" property in the Intel driver defines the color range which can be used by the display - either "Limited 16:235" (which limits the color range for some displays that can't properly display all colors) and "Full". Since kernel 3.9, the new default property "Automatic" tries to determine whenever the display supports the full color range, and if it doesn't/detection fails, color range falls back to "Limited 16:235". This results in weathered colors and grey blacks. On some displays/connectors, despite the full color range being supported properly, automatic detection fails and falls back to the limited color range (upstream bug report, kernels 4.18-4.20).
You can forcefully set the desired color range by running xrandr --output <OUT> --set "Broadcast RGB" "Full"
(replace <OUT>
with the appropriate output device, listed by running xrandr
). There is no way to persist this setting in xorg.conf
.
参照
- https://01.org/linuxgraphics/documentation (サポートされているハードウェア一覧など)
- Arch Linux フォーラム: Intel 945GM, Xorg, Kernel - performance