TL;DR
Ubuntu18.04, Coffee Lake iGPU で vulkan での実行を可能にするには
-
mesa-vulkan-drivers
パッケージインストール -
/etc/X11/xorg.conf.d/20-intel.conf
で DRI3 有効化
の2点が必要。
(おそらく実際には、実行に libvulkan1
、及び開発には加えて libvulkan-dev
も必要と思われるが、最初からインストールされていた)
はじめに
作業ログ
ソースのダウンロードと実行
amethyst-starter-2d をダウンロードして cargo run
してみたところ次のエラーとなりました。
thread 'main' panicked at 'Unable to create Vulkan instance: VkError(ERROR_INCOMPATIBLE_DRIVER)', src/libcore/result.rs:1084:5
リファレンスに書かれていた依存ライブラリのインストール
ガイドを読んでみると必要な依存関係が書かれていたので、この通りにインストールを行いました(ただし既に全てインストール済みのようでした)。
sudo apt install gcc pkg-config openssl libasound2-dev cmake build-essential python3 libfreetype6-dev libexpat1-dev libxcb-composite0-dev libssl-dev libx11-dev
この後再度 cargo run
するも当然ながら結果は変わらず。
vulkan-utils
パッケージの vulkaninfo
コマンドで情報を表示できるようなのでインストールして実行してみました。
sudo apt install vulkan-utils vulkaninfo
Vulkan Instance Version: 1.1.70
Cannot create Vulkan instance. /build/vulkan-UL09PJ/vulkan-1.1.70+dfsg1/demos/vulkaninfo.c:768: failed with VK_ERROR_INCOMPATIBLE_DRIVER
ということでやはり同じ(と思われる)エラーが出ました。
Mesaインストール
Wikipediaの VulkanのCompatibilityの項目を読むと、Mesaで対応しているようなので apt search "mesa vulkan"`コマンドを実行して見つかったパッケージ `mesa-vulkan-drivers
をインストールしてみました(ちなみに、参考文献のリンク先はもはや陳腐化した記述になっていましたのでその記述通りにはセットアップできません [1])。
sudo apt install mesa-vulkan-drivers
この後、再び amethyst-starter-2d
を cargo run
してみたところ、前回とは異なるエラーが出るようになっていました。
かなり長いメッセージが出ていますが、
vulkan: No DRI3 support detected - required for presentation Note: you can probably enable DRI3 in your Xorg config
がキモのようです。
前出の vulkaninfo
コマンドは正常終了するようになりました。
また、 vulkan-utils
パッケージには vulkan-smoketest
というコマンドも含まれているようなのでこれも実行してみます。結果:
vulkan: No DRI3 support detected - required for presentation
Note: you can probably enable DRI3 in your Xorg config
ということで、 DIR3 を有効にする、というのが解決策のように見えました。
DRI3 有効化
上記の説明を参考にし、
/etc/X11/xorg.conf.d/20-intel.conf
ファイルの該当箇所に次の記述を追加しました。
Option "DRI" "3"
元々の設定と合わせると、次のようなものになりました。
Section "Device"
Identifier "Intel Graphics"
Driver "intel"
Option "TripleBuffer" "true"
Option "TearFree" "true"
Option "DRI" "3"
EndSection
その後、再起動。
再起動後、 vulkan-smoketest
を実行すると正常に実行でき、また、 amethyst-starter-2d ディレクトリでの cargo run
も実行できるようになりました。