2019/05/17

MesaにIntelが開発する“Iris”Galliumドライバが入る

Mesa 19.1.0のリリース候補のソースの中にsrc/gallium/drivers/iris/というディレクトリがあるのを見つけた。各ソースファイル上部にはIntelのコピーライト表記(Copyright © 2017 Intel Corporation)があるため、Intel公式のGalliumアーキテクチャ準拠のドライバが新しく作られているものと思われ、詳しく調べてみた。

  1. Broadwell世代(第8世代・Gen8以降のIntel HD Graphics)のみに対応
  2. Gallium Nineが使用可能?
    1. その後の改善 (2019/9/20追記)
  3. 試す方法

Broadwell世代(第8世代・Gen8以降のIntel HD Graphics)のみに対応

このドライバは古いハードウェアには対応させずに新しめのIntel HD Graphicsにのみ対応したものとなっている。これにより従来の “i965” ドライバよりも高い性能を出すことを可能にしている。ドライバの名前は “Iris” となっているが、Intel GPUの製品ブランド名としての “Iris” とは関係がなく、Intel HD Graphicsの下位製品を搭載したCPUでも動作する。

大きな特長として、ドライバ部分におけるCPU使用率が従来のドライバよりも低くなっているというものがある。これにより、対応CPUの世代の制約はあるが、あまり性能の高くないIntel CPUを使用してゲームなどを動かす場合にはCPU資源に余裕ができてある程度動作が快適になることが期待される。

開発者によると、多くのプログラムで従来ドライバより1-1.5割高速になるが、1割程度低速化するものもあるとのことで、そのような場合にはバグ報告をするよう呼びかけている。

恩恵を受けるのはOpenGL(OpenGL ES含む)アプリケーションで、Webブラウザ上のWebGLなどのパフォーマンスにも影響する。Vulkanアプリケーションについてはこのドライバの階層で処理されるものではない(ソフトウェアのアーキテクチャとしては、VulkanはGalliumドライバの上に実装されているわけではない)ため、Vulkanアプリケーションの動作には影響しない。

Gallium Nineが使用可能?

Galliumアーキテクチャに基づいたドライバのため、Irisドライバでは、従来のドライバでは使用できなかったGallium Nineを用いてDirect3D 9のゲームなどを高速に動かすことができるようになる。より厳密には、Mesa内部の中間表現の形式の対応に関する変更が入ったことも関係しているようだが、ドライバを使用するユーザの側が意識するものではない。

2019年春時点では既にGallium Nine自体が動いていることが確認されているが、Irisドライバ使用時における描画の問題が報告されている。

過去にRadeon HD 4200でGallium Nineを用いて正しく描画できていたことを確認済みのソフトウェアを手元の環境(Intel HD Graphics 510・Skylake世代)で試してみたが

  • WOLF RPGエディターのサンプルゲーム(Direct3DをGDI描画にする設定を別途行わないと画面が真っ黒になる): 何かの模様が表示されてはいるが、具体的に何が表示されているのかは分からずゲームがプレイできない状態(色だけは本来表示される色に近いような印象)
  • 3DMark05(作業ディレクトリを移動した上で-nosysteminfoオプションを付ける): 下部の情報表示部分以外が真っ黒

と使い物にならない状況だった。

開発が初期なので描画不具合はOpenGLアプリケーションにもある程度存在するが、Irisドライバ上のGallium Nineの描画はそれと比べてまだ厳しいという印象となった。

その後の改善 (2019/9/20追記)

以下のように動作が改善していることを追記する。

  • ウディタ作品: Mesa 19.2.0-rc1の時点では描画がかなり改善されていたが、明らかに色のおかしな部分があったため、バグ報告を行った
    • 19.2.0-rc4で修正が入って正常に描画できるようになった
    • Irisドライバで用いられている中間表現の変換処理の一部に問題があったらしく、パッチ自体はIrisドライバだけに固有な部分に影響するものではなく、幾つかの他ドライバでも使われる(Iris以外のドライバでも問題が発生していた)可能性がある
  • 3DMark05: 19.2.0-rc4時点で正常動作していることを確認済み

試す方法

ソフトウェア環境の前提として、バージョン19.1(rc系含む)以上のMesaがインストールされている必要がある。

その環境で、環境変数MESA_LOADER_DRIVER_OVERRIDEiris(全て小文字)という文字列を指定してゲームなどを実行する。従来のドライバとの区別の方法としては、glxinfoコマンドの実行時に “OpenGL vendor string” の値が “Intel” とだけ表示されればIrisドライバが使用されている。

GUIアプリケーションでGPU関係の情報を確認するには

  • Firefox系ブラウザのabout:support
  • Chrome/Chromium系ブラウザのchrome://gpu/

のようなWebブラウザ上のページを参照するなどの方法がある。

使用したバージョン:
  • Mesa 19.1.0-rc2, 19.2.0-rc1, 19.2.0-rc4
  • gallium-nine-standalone 0.4