# Intel Graphics (日本語)

関連記事

- Intel GMA3600
- Poulsbo
- Xorg

Intel はオープンソースドライバの提供とサポートを行なっているので、今日 Intel のグラフィックカードは原則的にプラグアンドプレイです。

Intel の GPU モデル と関連するチップセット・CPU の一覧は Wikipedia の比較を見て下さい。

Note: PowerVR ベースのグラフィックカード (GMA 500 と GMA 3600 シリーズ) はオープンソースドライバではサポートされていません。

## インストール

前提: Xorg (日本語)

公式リポジトリから xf86-video-intel パッケージをインストールします。このパッケージには 2D アクセラレーションのための DDX ドライバが含まれています。また、intel-dri が依存パッケージとしてインストールされますが、これは 3D アクセラレーションのための DRI ドライバです。

64-bit 環境において、32-bit プログラムの 3D アクセラレーションをするには multilib リポジトリから lib32-intel-dri のインストールが必要です。

古い GPU でのビデオデコーディングは DDX ドライバーと一緒に入っている XvMC ドライバーによって提供されます。新しい GPU でのビデオデコーディング・エンコーディングのハードウェア・アクセラレーションを有効にするには、libva-intel-driver として提供されている VA-API ドライバをインストールしてください。

## 設定

X.org を走らせるのに特別な設定は必要ありません (`xorg.conf` は不要です、ただし、使うのなら正しく設定しなくてはなりません)。

設定の一覧を見るには、`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 の使用が必須になっています[1]。KMS は基本的にカーネルが起動してから初期化されますが、起動中に KMS を有効にして、全てのブートプロセスを最大解像度で実行することもできます。

Note: `vga` や `nomodeset` といった既に使用されていないパラメータはブート設定から必ず削除してください。

起動中に 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

そしてシステムを再起動してください。うまく機能するはずです。

## モジュールによる省電力設定

`i915` カーネルモジュールはモジュールオプションによって設定ができます。モジュールオプションの中には省電力機能に関係するものもあります。

現在有効になっているオプションを確認するには、次を実行して下さい:

    # for i in /sys/module/i915/parameters/*; do echo $i=$(cat $i); done

また、次のコマンドで全てのオプションのリストと、その簡単な説明・デフォルトの値を表示することができます:

    $ modinfo i915 | grep parm

安全に有効にすることができる一般的なオプションは以下のようになります:

    /etc/modprobe.d/i915.conf

    options i915 i915_enable_rc6=7 i915_enable_fbc=1 lvds_downclock=1

フレームバッファの圧縮は古い世代の Intel GPU では信頼性がありません。次のようなメッセージがないかシステムログをチェックしてください:

    kernel: drm: not enough stolen space for compressed buffer, disabling.

## Tips and tricks

### アクセラレーションメソッドの選択

- UXA - (Unified Acceleration Architecture) は GEM ドライバーモデルを導入した成熟しているバックエンドです。
- SNA - (Sandybridge's New Acceleration) は高速で先進的なハードウェアサポートを提供します。

デフォルトのメソッドは SNA (2013-08-05[2]) で、UXA よりも不安定ですが高速です。Phoronix によるベンチマーク [3] を見てください。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

また、OpenGL で 2D グラフィックを支援する新しい Glamor モードをテストすることもできます。このモードを使うには、以下の内容で `/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"  "glamor"
    EndSection

### 垂直同期 (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 モジュールを設定してください。詳しい情報は Kernel parameters (日本語) を見て下さい。

これが機能しない時は、SVIDEO-1 の代わりに TV1 か VGA1 を無効にするのを試してみて下さい。

### GMA 4500 での H.264 デコーディング

libva-intel-driver パッケージは GMA 4500 シリーズの GPU だけに MPEG-2 デコーディングを提供します。H.264 デコーディングのサポートは枝分かれした g45-h264 ブランチで維持されていて、AUR の libva-driver-intel-g45-h264 パッケージをインストールすることで使えます。しかしながらこのサポートは実験的なものであり現在活発には開発されていないことに注意して下さい。GMA 4500 シリーズ GPU のドライバと VA-API を使うことは CPU の負担を下げますが、アクセラレーションが効いていないのと同じで、スムーズに再生できるようにはならないかもしれません。mplayer を使ったテストでは H.264 でエンコードされた 1080p のビデオを vaapi を使って再生したところ (XV オーバーレイに比べて) CPU の負担は下がりましたが、途切れ途切れの再生になりました。一方 720p はうまく動きました [4]。他の報告も同じようなものでした [5]。

### ガンマ値と明るさの設定

ドライバのレベルでこれらを設定する方法はありませんが、幸運なことに `xgamma` や `xrandr` を使って設定することができます。

ガンマ値を設定するには:

    $ xgamma -gamma 1.0

もしくは:

    $ xrandr --output VGA1 --gamma 1.0:1.0:1.0

明るさを設定するには:

    $ xrandr --output VGA1 --brightness 1.0

## トラブルシューティング

### Glxgears のパフォーマンスがでない

Note: `glxgears` は複数のシステム間でのパフォーマンスを比較するためのベンチマークではありません。

グラフィックパフォーマンスを調べるために `glxgears` を動かした時、結果が 60 FPS を前後することに気づいたかもしれません。例えば:

    [...]
    311 frames in 5.0 seconds = 61.973 FPS
    311 frames in 5.0 seconds = 62.064 FPS
    311 frames in 5.0 seconds = 62.026 FPS
    [...]

これはパフォーマンスの欠落によるものではありません。ディスプレイのリフレッシュレートにあわせて、垂直同期を行なっているためです。

環境変数 `vblank_mode=0` を付けることで垂直同期を無効にして `glxgears` を実行できます:

    $ vblank_mode=0 glxgears

### 起動中 "Loading modules" するときに画面がブラックアウトする

KMS の"遅いスタート"を使っているとき "Loading modules" で画面がブラックアウトする場合、initramfs に `i915` と `intel_agp` を加えると解決するかもしれません。上記の KMS セクションを見て下さい。

または、次のカーネルパラメータを加えるとうまく動くかもしれません:

    video=SVIDEO-1:d

VGA に出力する必要があるときは次を使ってみて下さい:

    video=VGA-1:1280x800

### ティアリングの解消

Tip: GNOME デスクトップ環境を使っている場合、GNOME#Tear-free_video_with_Intel_HD_Graphics によりシンプルでパフォーマンスへの影響が少ない修正方法が載っています。

SNA アクセラレーションメソッドを使っている場合、ティアリングが発生することがあります。これを解消するには、ドライバーの `"Tearfree"` オプションを有効にしてください:

    /etc/X11/xorg.conf.d/20-intel.conf

    Section "Device"
       Identifier  "Intel Graphics"
       Driver      "intel"
       Option      "TearFree"    "true"
    EndSection

詳しくはオリジナルのバグレポートを見て下さい。

Note:

- `SwapbuffersWait` が `false` のときはこのオプションは機能しません。
- このオプションを使うと vsync タイミングがピーキーなアプリケーション (Super Meat Boy など) で問題が発生します。
- このオプションは UXA アクセラレーションメソッドでは動作しません、SNA でしか使えません。

### 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

### 認識されない解像度を追加する

この問題については Xrandr のページを参照してください。

### libGL 9 と Intel-DRI 9 にアップグレードすると遅くなる

Intel-DRI 8 と libGL 8 にダウングレードしてください。

### ビデオゲームでテクスチャが真っ黒

ビデオゲームでテクスチャが黒くなる場合、S3TC テクスチャコンプレッションのサポートを有効にすることで解決できます。driconf を使って有効にするか、 libtxc_dxtn をインストールしてください。

この"問題"は新しいドライバで修正される予定です。

S3TC についての詳しい情報は: http://dri.freedesktop.org/wiki/S3TC http://ja.wikipedia.org/wiki/DXTC

この問題が起こるゲームのひとつは Oil Rushです。

### 色が風化する (色空間の問題)

Note: この問題はカーネル 3.9 の変更に起因しています。カーネル 3.10 でもこの問題は存在します。

カーネル 3.9 には Intel ドライバーで簡単に RGB リミテッドレンジの設定ができる変更が含まれており、場合によってはこの変更によって色がおかしくなることがあります。"Broadcast RGB" プロパティの新しい "Automatic" モードに関係しています。 `xrandr --output <HDMI> --set "Broadcast RGB" "Full"` (`<HDMI>` は適切な出力デバイスに置き換えてください、`xrandr` を実行することで確認できます) のようにしてモードを強制することが可能です。これを `.xprofile` に追加して、グラフィカルモードが始まる前にコマンドが実行できるように実行可能属性を付けて下さい。

Note: TV によっては 16-255 の色しか表示できないため Full に設定すると 0-15 の領域の色が失われます。従って、カラースペースを TV に合わせて圧縮する必要があるかどうか自動的に検知する Automatic のままにしてください。

また、GPU のレジスタを編集することで修正できる他の関連する問題も存在します。詳しくは [6] や [7] を見て下さい。

### 復帰後、バックライトが一部調整できない、もしくは全く調整できない

Intel graphics を使っていて製造者によるホットキーで画面の明るさを変えられない場合、次のカーネルパラメータを使って起動してみて下さい:

    acpi_backlight=vendor

これで問題が解決されない場合、上のパラメータに加えて:

    acpi_osi=Linux

か

    acpi_osi="!Windows 2012"

を使うことで解決できるかもしれません。

また、カーネルバージョン 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

### フレームバッファ圧縮の無効化

Intel Corporation Mobile 4 シリーズのチップセットなど、カードによってはフレームバッファ圧縮を有効にするとエラーメッセージが延々と表示されます:

    $ dmesg | tail
    [ 2360.475430] [drm] not enough stolen space for compressed buffer (need 4325376 bytes), disabling
    [ 2360.475437] [drm] hint: you may be able to increase stolen memory size in the BIOS to avoid this

解決方法はフレームバッファ圧縮を無効化することで、これによって少しだけ電力消費が増えます。無効化するには `i915.i915_enable_fbc=0` をカーネルラインパラメータに追加してください。圧縮の無効化による効果については ここ に詳しい情報が載っています。

### Chromium や Firefox が壊れる、応答しない

Chromium や Firefox の表示がおかしくなったり、反応しなくなる場合はアクセラレーションメソッドを "uxa" に設定してみてください。

## 参照

- https://01.org/linuxgraphics/documentation (サポートされているハードウェア一覧など)
- KMS — Kernel Mode Setting に関する記事
- Xrandr — 解像度に関する問題についてはこちらを参照
- Arch Linux フォーラム: Intel 945GM, Xorg, Kernel - performance

Categories:

- Graphics (日本語)
- X Server (日本語)