注意書き

本サイトでは、アフィリエイト広告およびGoogleアドセンスを利用しています。

RaspberryPiで新しいMesa3Dを使う

プログラミング

先日 Raspberry Pi にも VK_KHR_dynamic_rendering が使えるようになるというニュースがありました。みたところ、Mesa 24.1 に含まれる V3DV ドライバで対応とのことです。しかし、早く試してみたいと思ったので、その手順をここに共有します。この先も新しいバージョンを試したいと思った人に参考になれば幸いです。

スポンサーリンク

環境情報

今回使用しているのは Raspberry Pi 4です。おそらくラズパイ5でも同様だとは思いますが、未確認です。また、Raspberry Pi 定番の Raspberry Pi OS を使用しません。使うのは Ubuntu です。これはパッケージの都合でもあります。手元の環境では以下のバージョンを使って、本記事を記載しています。

  • Ubuntu 22.04.4 LTS (64bit)

セットアップ

上記記載のイメージを既に焼いてRaspberry Pi 上で起動させ、最低限の初期セットアップが終わった状態とします。そのうえで、以下のコマンドを入力してリポジトリを追加してきます。

sudo apt install software-properties-common python3-software-properties  python3-launchpadlib
sudo add-apt-repository ppa:kisak/kisak-mesa
sudo apt update

そして、Vulkan 用のセットアップを引き続き行います。

sudo apt install vulkan-tools vulkan-validationlayers mesa-vulkan-drivers

場合によっては、周辺ライブラリもいれておきます。

sudo apt install build-essential cmake libglfw3-wayland

確認

上記の内容を完了すると、vulkaninfo で VK_KHR_dynamic_rendering サポートの確認ができました。ここでは feature の確認にしていますが、他のものでも同様にチェックができるとおもいます。

vulkaninfo | grep dynamic_rendering

       VK_KHR_dynamic_rendering                  : extension revision 1
        VK_EXT_dynamic_rendering_unused_attachments   : extension revision 1
        VK_KHR_dynamic_rendering                      : extension revision 1
        VK_KHR_dynamic_rendering_local_read           : extension revision 1

よく見ると VK_KHR_dynamic_rendering が2回出ています。これは1つはV3DVのもの、もう1つがCPUエミュレーションのデバイスのものとなっています。

  • GPU id = 0 (V3D 4.2.14)
  • GPU id = 1 (llvmpipe (LLVM 15.0.7, 128 bits))

まとめ

これで、Mesa3Dで新しい機能が入ったときに kisak-mesa リポジトリにビルド済みパッケージが登録されたタイミングで素早く確認ができるようになります。Mesaの新しいバージョンをソースからビルドするというのも1つでしょうが、それは割と手間が掛かるので今回の方法が使えるならこちらがお勧めと考えています。

ただし手元で試した範囲では、Vulkanの描画はできるものの、ウィンドウ枠がうまく表示されないなどの課題がありました。 Raspberry PiでMesa3Dをソースコードからビルドする方法を整えてもいいのかもしれません。

余談: Wayland使用時にsshからアプリを起動する

Wayland が採用されるようになり、従来の DISPLAY 変数を設定して、sshターミナルからGUIを起動するという方法から卒業することになりました。wayland でも同様なことは可能で、実際のディスプレイが使える環境での以下の環境変数情報が知ることができれば、それを ssh側でも設定することで使用可能です。

  • XDG_RUNTIME_DIR
    • XDG_RUNTIME_DIR=/run/user/1000 など
  • WAYLAND_DISPLAY
    • WAYLAND_DISPLAY=wayland-0 など
  • DISPLAY
    • DISPLAY=:0 など

※ 描画画面をsshクライアントで繋いでいる側に映し出すという意味ではありません。あくまで物理的に繋がっている側に表示するものです。起動指示だけsshのターミナル内からできるよ、という話です

変数を設定した後、以下のように ssh ターミナル内でコマンドを打ち込み、デバイス上でアプリの画面が表示されます。

コメント

タイトルとURLをコピーしました