Raspberry Pi 4 で Vulkan API を用いた描画が出来るようになったと聞いたので早速試してみました。試すまでの手順を説明します。
Raspberry Pi の準備
Raspberry Pi OS (32bit)をダウンロードして書き込みます。これについては手順は各所で語られているので割愛します。
まずはパッケージリスト更新します。更新できたら再起動しておきます。
sudo apt-get update
sudo apt-get upgrade
以下のコマンドで必要なパッケージ群をインストールします。
sudo apt-get install libxcb-randr0-dev libxrandr-dev \ libxcb-xinerama0-dev libxinerama-dev libxcursor-dev \ libxcb-cursor-dev libxkbcommon-dev xutils-dev \ xutils-dev libpthread-stubs0-dev libpciaccess-dev \ libffi-dev x11proto-xext-dev libxcb1-dev libxcb-*dev \ bison flex libssl-dev libgnutls28-dev x11proto-dri2-dev \ x11proto-dri3-dev libx11-dev libxcb-glx0-dev \ libx11-xcb-dev libxext-dev libxdamage-dev libxfixes-dev \ libva-dev x11proto-randr-dev x11proto-present-dev \ libclc-dev libelf-dev git build-essential mesa-utils \ libvulkan-dev ninja-build libvulkan1 libdrm-dev libxshmfence-dev libxxf86vm-dev
Mesa が要求しているため meson, mako をインストールします。
pip3 install meson mako
自分の試した環境では meson インストール後、以下のコマンドを実行してパスを通してやらないとうまくいきませんでした。
$ PATH="${PATH}:$(python -c 'import site; print(site.USER_BASE);')/bin"
ドライバ (v3dv) の準備
以下のコマンドを実行して、ドライバの準備を行います。
$ git clone https://gitlab.freedesktop.org/apinheiro/mesa.git mesa $ cd mesa $ git checkout wip/igalia/v3dv $ meson --prefix /home/pi/local-install --libdir lib -Dplatforms=x11,drm -Dvulkan-drivers=broadcom -Ddri-drivers= -Dgallium-drivers=v3d,kmsro,vc4 -Dbuildtype=debug _build $ ninja -C _build $ ninja -C _build install
もし meson 実行時に足りないパッケージが表示されたら、それらをインストールして再度実行します。
デモを動かしてみる
ドライバのビルド・インストールが完了したら、早速 Vulkan のデモを動かしてみましょう。こkでは定番の SaschaWillems 氏によるサンプルプログラムを使います。
まずはドライバが先ほどビルドしたものを使うように設定します。
export VK_ICD_FILENAMES=/home/pi/local-install/share/vulkan/icd.d/broadcom_icd.armv7l.json
以下のコマンドを実行して、サンプルを取得してビルドします。
$ sudo apt-get install libassimp-dev cmake $ cd ~/ $ git clone --recursive https://github.com/SaschaWillems/Vulkan.git sascha-willems $ cd sascha-willems $ mkdir build; cd build $ cmake -DCMAKE_BUILD_TYPE=Debug .. $ make
正常にビルドが出来たら、以下のコマンドを打ち込んで実行してみます。
$ cd bin $ ./gears
実行した結果のスクリーンショットが以下です。デバッグビルドですが約180fps で動作しました。
他にも、 vulkanscene を実行してみると次のように動作しました。初期化にやや時間が掛かったような印象もありますが、意外と動作しますね!
他、一部のプログラムの実行には download_assets.py を実行してアセットの取得が必要になります。また Geometry Shader などは少なくとも今は使えていません。
まとめ
Raspberry Pi 4 で Vulkan が使えるようになったということで、試すための手順を解説してきました。手軽な Linux 環境で Vulkan を触ることが出来るのでこれは1つ魅力的なのかなと思います。パフォーマンスの観点からは本ドライバはこれから長い戦いが始まっていくのでしょうが、ユーザーとしてはとても楽しみであります。
今回の内容は以下のまとめを見ながら実行しました。ただ書かれているところを自分の環境で実行してみても、パッケージが足りずコンパイルできなかったり、実行そのものが出来なかったりしたり等が発生したため、上記の手順は変更したものになっています。