TV-box: Panfrostのインストール

Armbianのカーネルアップデートがあり、バージョンが5.4になりました。これによって今まで使えなかったPanfrostが使えるようになります。

dmesg | grep pan
 [   14.190262] panfrost 1800000.gpu: clock rate = 432000000
 [   14.190280] panfrost 1800000.gpu: bus_clock rate = 100000000
 [   14.190385] panfrost 1800000.gpu: mali-t720 id 0x720 major 0x1 minor 0x1 status 0x0
 [   14.190390] panfrost 1800000.gpu: features: 00000000,10309e40, issues: 00000000,21054400
 [   14.190396] panfrost 1800000.gpu: Features: L2:0x07110206 Shader:0x00000000 Tiler:0x00000809 Mem:0x1 MMU:0x00002821 AS:0xf JS:0x7
 [   14.190399] panfrost 1800000.gpu: shader_present=0x3 l2_present=0x1
 [   14.199852] [drm] Initialized panfrost 1.1.0 20180908 for 1800000.gpu on minor 1

このように今までのようにエラーもなく正しくモジュールがロードできています。当初、DRM、Panfrostライブラリーを/usr/local/libに入れていたのですが、やはり重複があるのでうまく動きません。そこで検索したサイトを参考にそのとおりインストールして、なんとか動くようになったのですが、まだ初期段階のためか今一つの状況です。

sudo apt build-dep mesa libdrm 

 Drm:
   git clone git clone https://gitlab.freedesktop.org/mesa/drm.git --depth=1
   cd drm
   mkdir builddir
   # meson -Dprefix=/usr builddir/
    meson builddir/
   ninja -C builddir/ install

 Mesa:
   git clone git clone https://gitlab.freedesktop.org/mesa/mesa.git --depth=1
   mkdir build
   meson build/ --libdir=lib/aarch64-linux-gnu \
   -Dgallium-drivers=panfrost,kmsro,swrast \
   -Dplatforms=x11,drm,surfaceless -Dvulkan-drivers= \
   -Dlibunwind=false -Ddri-drivers= -Dllvm=true

   ninja -C build/
   sudo ninja -C build/ install

quakeをやってみて動きがぎこちなくまだ使える状況にはありませんが今後を期待したいところです。

追記:

いろいろテストした結果、ユーザースペースのpanfrostドライバは正常に動いていないので旧方式のgl4es + mali blobに戻しました。

/etc/modprobe.d/blacklist.conf

install panfrost /bin/true
#install mali_midgard /bin/true

またカーネルのアップグレードでhdmi音声出力ができなくなりました。USBオーディオを使っているのであまり影響はありませんが。

Alsamixer:
    This sound device does not have any controls.

追記2

いろい調べた結果、コンパイル方法が間違っていました。次のサイトを参考に正確に作り直します。

sudo apt install flex bison python3-mako libwayland-egl-backend-dev \
   libxcb-dri3-dev libxcb-dri2-0-dev libxcb-glx0-dev libx11-xcb-dev  \
   libxcb-present-dev libxcb-sync-dev libxxf86vm-dev libxshmfence-dev \
   libxrandr-dev libwayland-dev libxdamage-dev libxext-dev libxfixes-dev \
   x11proto-dri2-dev x11proto-dri3-dev x11proto-present-dev x11proto-gl-dev \
   x11proto-xf86vidmode-dev libexpat1-dev libudev-dev gettext glmark2 \
   glmark2-es2 mesa-utils xutils-dev libpthread-stubs0-dev ninja-build \
   bc python-pip flex bison cmake git valgrind llvm llvm-8-dev python3-pip \
   pkg-config zlib1g-dev wayland-protocols
wget http://ftp.de.debian.org/debian/pool/main/m/meson/meson_0.52.0-2_all.deb
sudo dpkg -i meson_0.52.0-2_all.deb
git clone git://anongit.freedesktop.org/mesa/drm
cd drm
# meson build --prefix=/usr
meson build
ninja -C build
sudo -E ninja -C build install
cd ..
git clone git://anongit.freedesktop.org/mesa/mesa
cd mesa
#meson -Ddri-drivers= -Dvulkan-drivers= -Dgallium drivers=panfrost,kmsro -Dlibunwind=false -Dprefix=/usr build/
meson -Ddri-drivers= -Dvulkan-drivers= -Dgallium-drivers=panfrost,kmsro -Dlibunwind=false build/
ninja -C build/
sudo ninja -C build/ install

リブートした結果、みごとに立ち上がりませんでした。原因はpanfrostのsunxiドライバーにあるようです。そこで、一旦、そのモジュールだけを外しておきます。

cd /usr/lib/aarch64-linux-gnu/dri/
mv sun4i-drm_dri.so sun4i-drm_dri.so.orig

追記3

DTのGPUの再設定でPanfrostが動作しました。