HARDWARE

STM32MP157 Arm®-based dual Cortex®-A7 32 bits + Cortex®-M4 32 bits MPU in TFBGA361 package

  • 4” TFT 480×800 pixels with LED backlight, MIPI DSISM interface, and capacitive touch panel

FEEDBACK WELCOME

Here are work in progress notes, hints are welcome

Follow up to date work in progress:

Reach me at :

DEBIAN INSTALL

I am using debian as main os and can explain steps

TODO

Current debian's kernel is not supporting eMMC or USB so debian-installer can't be used , the workaround is we use iSCSI (network drive)

TFTP

Configure TFTP to use debian installer,

ramdisk_addr_r=0xc4400000

mkimage -A arm -O linux -T ramdisk \
  -C gzip -n "initrd" \
  -a ${ramdisk_addr_r} -e ${ramdisk_addr_r} \
  -d initrd.gz uImage.initrd

U-Boot

STM32MP> help
dhcp ; setenv serverip 192.168.1.12
tftp ${kernel_addr_r} ${serverip}:vmlinuz
tftp ${fdt_addr_r} ${serverip}:${board_name}.dtb
tftp ${ramdisk_addr_r} ${serverip}:uImage.initrd
bootz ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r}

EXTLINUX

sudo apt-get install u-boot-menu
sudo /usr/bin/dpkg -i /tmp/linux-*5.8.0*.deb

sudo update-initramfs -ck `uname -r`

sudo zile /boot/extlinux/extlinux.conf 


TIMEOUT 10
DEFAULT Linux
MENU TITLE Boot menu

label Linux 5.6.17-armv7-lpae-x14 sda
    kernel /boot/vmlinuz-5.6.17-armv7-lpae-x14
    append console=ttySTM0,115200 root=/dev/sda ro rootfstype=ext4 rootwait
    fdtdir /usr/lib/linux-image-5.6.17-armv7-lpae-x14/
    devicetree /usr/lib/linux-image-5.6.17-armv7-lpae-x14/stm32mp157c-dk2.dtb

label NFS
    kernel /boot/vmlinuz-5.6.17-armv7-lpae-x14
    append console=ttySTM0,115200 ro rootwait root=/dev/nfs rootfstype=nfs ip=dhcp ...
    fdtdir /boot/dtbs/label NFS
    kernel /boot/vmlinuz-5.6.17-armv7-lpae-x14
    devicetree /boot/dtbs/5.6.17-armv7-lpae-x14/stm32mp157c-dk2.dtb


kernel_version=5.6.0-2-armmp

sudo mkdir -p "${rootfs_dir}/boot/extlinux"
    cat<<EOF | sudo tee -a "${rootfs_dir}/boot/extlinux/extlinux.conf"
label Linux ${kernel_version}
    kernel /boot/vmlinuz-${kernel_version}
    append console=ttySTM0,115200 root=/dev/mmcblk0p4 ro rootfstype=ext4 rootwait 
    fdtdir /usr/lib/linux-image-${kernel_version}/
    devicetree /usr/lib/linux-image-${kernel_version}/stm32mp157c-dk2.dtb
EOF
Boot over mmc0!
switch to partitions #0, OK
mmc0 is current device
Scanning mmc 0:4...
Found /boot/extlinux/extlinux.conf
Retrieving file: /boot/extlinux/extlinux.conf
1528 bytes read in 36 ms (41 KiB/s)
Boot menu
1:      Linux 5.6.0-2-armmp-lpae
2:      Linux 5.7.0-rc5-armmp-lpae
3:      Linux 5.6.17-armv7-lpae-x14
4:      Linux 5.6.17-armv7-lpae-x14 sda
5:      NFS
Enter choice: 2

iSCSI

TODO: Document how to configure tgt (200MB)

Debian's installer once target disc is configured from shell

~ # cat /proc/version 
Linux version 5.6.0-2-armmp (debian-kernel@lists.debian.org) (gcc version 9.3.0 (Debian 9.3.0-13)) #1 SMP Debian 5.6.14-2 (2020-06-09)

~ # cat /proc/partitions 
major minor  #blocks  name

   8        0   10240000 sda

Questions:

  • linux-image-5.6.0-2-armmp-lpae
  • [!!] Configuring open-iscsi / Upgrade… / Yes

Reboot

RootFs

cat .../10GB.img/2/511705088/etc/os-release 

PRETTY_NAME="Debian GNU/Linux bullseye/sid"

# lib/modules/5.6.0-2-armmp-lpae/

cat $rootfs_dir/etc/fstab
UUID=036d3d8c-98d4-48ec-a18b-dce21dcf0bb5 /               ext4    errors=remount-ro 0       1
/swapfile                                 none            swap    sw              0       0

SD

5.6.0-2-armmp-lpae is not supporting SDcard

5.8.0-rc1-00138-g1198e58e1b0e is supporting it (maybe earlier)

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 5.6.0-2-armmp-lpae (debian-kernel@lists.debian.org) (gcc version 9.3.0 (Debian 9.3.0-13)) #1 SMP Debian 5.6.14-1 (2020-05-23)
(...)
[    0.000000] OF: fdt: Machine model: STMicroelectronics STM32MP157C-DK2 Discovery Board
(...)
[    4.223461] Waiting for root device /dev/mmcblk0p4...
 +CONFIG_MMC_ARMMMCI=y
 diff -u /srv/tftp/5.6.0-2-armmp/config-5.6.0-2-armmp-lpae  /srv/tftp/5.6.17-armv7-lpae-x14/config-5.6.17-armv7-lpae-x14  | grep -v '#' | grep '^+' | grep MMC
+CONFIG_MMC_ARMMMCI=y
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_PLTFM=y
+CONFIG_MMC_SDHCI_OF_ARASAN=y
+CONFIG_MMC_SDHCI_OF_ESDHC=y
+CONFIG_MMC_SDHCI_ESDHC_IMX=y
+CONFIG_MMC_OMAP_HS=y
+CONFIG_MMC_SPI=y
+CONFIG_MMC_DW=y
+CONFIG_MMC_DW_PLTFM=y
+CONFIG_MMC_DW_ROCKCHIP=y
+CONFIG_MMC_SUNXI=y
+CONFIG_MMC_CQHCI=y
+CONFIG_MMC_SDHCI_OMAP=y
+CONFIG_MMC35240=m
+CONFIG_PHY_ROCKCHIP_EMMC=y

-CONFIG_MMC_ARMMMCI=m
+CONFIG_MMC_ARMMMCI=y

CONFIG_MMC_STM32_SDMMC=y

UBOOT

STM32MP> help
dhcp ; setenv serverip 192.168.1.12
tftp ${kernel_addr_r} ${serverip}:vmlinuz
tftp ${fdt_addr_r} ${serverip}:${board_name}.dtb
tftp ${ramdisk_addr_r} ${serverip}:uImage.initrd
bootz ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r}
setenv bootargs "root=/dev/mmcblk0p4 ip=dhcp "
bootz ${kernel_addr_r} - ${fdt_addr_r}

CUSTOM KERNEL

DMESG

[    0.000000] Linux version 5.6.17-armv7-lpae-x14 (rzr@cis) (gcc version 9.2.1 20191025 (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10))) #1 SMP PREEMPT Sat Jun 13 08:05:25 CEST 2020
[    0.000000] CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=70c5387d
[    0.000000] CPU: div instructions available: patching division code
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000] OF: fdt: Machine model: STMicroelectronics STM32MP157C-DK2 Discovery Board
[    0.000000] Memory policy: Data cache writealloc
[    0.000000] efi: Getting EFI parameters from FDT:
[    0.000000] efi: UEFI not found.
[    0.000000] Reserved memory: created DMA memory pool at 0x0000000010000000, size 0 MiB
[    0.000000] OF: reserved mem: initialized node mcuram2@10000000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x0000000010040000, size 0 MiB
[    0.000000] OF: reserved mem: initialized node vdev0vring0@10040000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x0000000010041000, size 0 MiB
[    0.000000] OF: reserved mem: initialized node vdev0vring1@10041000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x0000000010042000, size 0 MiB
[    0.000000] OF: reserved mem: initialized node vdev0buffer@10042000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x0000000030000000, size 0 MiB
[    0.000000] OF: reserved mem: initialized node mcuram@30000000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x0000000038000000, size 0 MiB
[    0.000000] OF: reserved mem: initialized node retram@38000000, compatible id shared-dma-pool
[    0.000000] cma: Reserved 64 MiB at 0x00000000dc000000
[    0.000000] On node 0 totalpages: 114688
[    0.000000]   DMA zone: 1536 pages used for memmap
[    0.000000]   DMA zone: 0 pages reserved
[    0.000000]   DMA zone: 114688 pages, LIFO batch:31
[    0.000000] psci: probing for conduit method from DT.
[    0.000000] psci: PSCIv1.0 detected in firmware.
[    0.000000] psci: Using standard PSCI v0.2 function IDs
[    0.000000] psci: Trusted OS migration not required
[    0.000000] psci: SMC Calling Convention v1.0
[    0.000000] percpu: Embedded 20 pages/cpu s53132 r8192 d20596 u81920
[    0.000000] pcpu-alloc: s53132 r8192 d20596 u81920 alloc=20*4096
[    0.000000] pcpu-alloc: [0] 0 [0] 1 
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 113152
[    0.000000] Kernel command line: console=ttySTM0,115200 ro rootwait ip=dhcp root=/dev/mmcblk0p4 

[    0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes, linear)
[    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes, linear)
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] software IO TLB: mapped [mem 0xd0000000-0xd4000000] (64MB)
[    0.000000] Memory: 300464K/458752K available (10240K kernel code, 1662K rwdata, 4208K rodata, 2048K init, 379K bss, 92752K reserved, 65536K cma-reserved, 0K highmem)
[    0.000000] random: get_random_u32 called from __kmem_cache_create+0x2d/0x3a8 with crng_init=0
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
[    0.000000] ftrace: allocating 48395 entries in 95 pages
[    0.000000] ------------[ cut here ]------------
[    0.000000] WARNING: CPU: 0 PID: 0 at arch/arm/kernel/insn.c:15 __arm_gen_branch+0x7f/0x84

X11 / XORG

(==) Using system config directory "/usr/share/X11/xorg.conf.d"
(EE) 
Fatal server error:
(EE) Cannot run in framebuffer mode. Please specify busIDs        for all framebuffer devices
(EE) 
(EE) 
Please consult the The X.Org Foundation support 
         at http://wiki.x.org
 for help. 
(EE) Please also check the log file at "/var/log/Xorg.0.log" for additional information.
(EE) 
(EE) Server terminated with error (1). Closing log file.


Xorg -version
#| X.Org X Server 1.20.8 # (2020-03-29)


Xorg -configure 
#| List of video drivers:
#|         amdgpu
#|         ati
#|         nouveau
#|         radeon
#|         modesetting
#|         fbdev
#|         vesa


# TODO rebuild armada

Xorg  -configure 2>&1 | grep armada
        armada

cp xf86-video-armada/conf/xorg-sample.conf /etc/X11/xorg.conf

Xorg -retro

DISPLAY=:0 xterm

apt-get install x11-xserver-utils x11-apps # TODO twm

Xorg -retro -noreset
DISPLAY=:0 xsetroot -solid purple

export DISPLAY=:0 ; xclock

startx

# alloc_contig_range: [dc400, dca5f) PFNs busy

X11 DRIVER

GPU

From reference image:

glmark2-es2-drm 
#| =======================================================
#|    glmark2 2017.07
#| =======================================================
#|    OpenGL Information
#|    GL_VENDOR:     Vivante Corporation
#|    GL_RENDERER:   Vivante GC7000Nano
#|    GL_VERSION:    OpenGL ES 2.0 V6.2.4.p3.174315

From wip:

dmesg | grep etna
[    3.353529] etnaviv etnaviv: bound 59000000.gpu (ops 0xc0cd894c)
[    3.358261] etnaviv-gpu 59000000.gpu: model: GC400, revision: 4652
[    3.364904] etnaviv-gpu 59000000.gpu: Need to move linear window on MC1.0, disabling TS
[    3.373209] [drm] Initialized etnaviv 1.3.0 20151214 for etnaviv on minor 0


 /* gc7000nano_0x4652 */
    {
        0x400, /* ChipID */
        0x4652, /* ChipRevision */
        0x70001, /* ProductID */

linux/drivers/gpu/drm/etnaviv/etnaviv_gpu.c

Vivante “GC7000”

“gc7000nano_0x4652”

apt remove libetnaviv-headers-1.0

/usr/include/libetnaviv/src/etnaviv/common.xml.h

VIVANTE

GC NANO

DEBIAN

DT

KERNEL DRM

dmesg | egrep -i "drm|etnaviv"
(...)
[    3.349884] etnaviv etnaviv: bound 59000000.gpu (ops 0xc0cd894c)
[    3.354618] etnaviv-gpu 59000000.gpu: model: GC400, revision: 4652
[    3.361254] etnaviv-gpu 59000000.gpu: Need to move linear window on MC1.0, disabling TS
(...)
[    3.369556] [drm] Initialized etnaviv 1.3.0 20151214 for etnaviv on minor 0
(...)
[    4.029518] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[    4.036018] [drm] Driver supports precise vblank timestamp query.
[    4.044342] [drm] Initialized stm 1.0.0 20170330 for 5a001000.display-controller on minor 1
(...)
[    4.472216] Console: switching to colour frame buffer device 60x50
[    4.510123] stm32-display 5a001000.display-controller: fb0: stmdrmfb frame buffer device
(...)
[   21.103286] systemd[1]: Condition check resulted in Load Kernel Module drm being skipped.
udevadm info -a -p /sys/class/drm/card1
#| DRIVERS=="stm32-display"
udevadm info -a -p /sys/class/drm/card0
#| DRIVERS=="etnaviv"

ETNAVIV

ETNAVIV has been upstreamed in Mesa, only headers are useful for armdena

# sudo dpkg --add-architecture armhf
sudo apt-get remove libetnaviv
# sudo apt-get update ; sudo apt-get install multiarch-support -y
# wget http://repo.novena.io/repo/pool/main/libe/libetnaviv/libetnaviv-dev_1.1-r1_armhf.deb
# wget http://repo.novena.io/repo/pool/main/libe/libetnaviv/libetnaviv_1.1-r1_armhf.deb
# sudo dpkg -i --force=all libetnaviv_*.deb && sudo dpkg -i libetnaviv-dev_*.deb

sudo apt-get install devscripts
git clone https://github.com/xobs/libetnaviv ; cd libetnaviv
fakeroot ./debian/rules binary #

sudo apt-get remove libetnaviv
rm -rf /usr/include/libetnaviv

grep platform ./etna_viv/tools/data/gpus.json
        "platform": "Rockchip 2918",
        "platform": "Marvell Armada 510 (88AP510)",
        "platform": "Marvell 88SV331x",
        "platform": "Marvell Armada 610",
        "platform": "Marvell Armada 1500",
        "platform": "Marvell PXA2128",
        "platform": "Ingenic JZ4770 MIPS",
        "platform": "Freescale i.MX 6 Quad",
        "platform": "Freescale i.MX 6 DualLite",
        "platform": "Freescale i.MX 6 QuadPlus",

ETNAVIV KERNEL

export ARCH=arm ;  export CROSS_COMPILE=/usr/bin/arm-linux-gnueabihf-
make multi_v7_defconfig # # make stm32_defconfig # not this one
[    3.346512] etnaviv etnaviv: bound 59000000.gpu (ops 0xc0cd894c)
[    3.351247] etnaviv-gpu 59000000.gpu: model: GC400, revision: 4652
[    3.357875] etnaviv-gpu 59000000.gpu: Need to move linear window on MC1.0, disabling TS
[    3.366180] [drm] Initialized etnaviv 1.3.0 20151214 for etnaviv on minor 0

/usr/sbin/modinfo etnaviv
name:           etnaviv
filename:       (builtin)
alias:          platform:etnaviv
license:        GPL v2
file:           drivers/gpu/drm/etnaviv/etnaviv
description:    etnaviv DRM Driver
author:         Lucas Stach <l.stach@pengutronix.de>
author:         Russell King <rmk+kernel@arm.linux.org.uk>
author:         Christian Gmeiner <christian.gmeiner@gmail.com>
parm:           job_hang_limit:int
parm:           hw_job_limit:int
parm:           dump_core:bool

DRM etnaviv1

Userspace interface to kernel DRM services

sudo apt remove libdrm-etnaviv1
sudo apt reinstall -t unstable libdrm-dev libdrm-etnaviv1 # 2.4.101-2
sudo apt reinstall libdrm-tests

sudo apt reinstall -t testing linux-libc-dev

#| libdrm-dev:armhf: /usr/include/libdrm/etnaviv_drmif.h
#| linux-libc-dev:armhf: /usr/include/drm/etnaviv_drm.h # TODO

#| [  4984.847] (II) no primary bus or device found
#| [  4984.847]    falling back to /sys/devices/platform/etnaviv/drm/card0
#| (WW) VGA arbiter: cannot open kernel arbiter, no multi-card support

dmesg | grep etnaviv
#| [    3.345596] etnaviv etnaviv: bound 59000000.gpu (ops 0xc0cd894c)
#| [    3.350329] etnaviv-gpu 59000000.gpu: model: GC400, revision: 4652
#| [    3.356962] etnaviv-gpu 59000000.gpu: Need to move linear window on MC1.0, disabling TS
#| [    3.365260] [drm] Initialized etnaviv 1.3.0 20151214 for etnaviv on minor 0

dpkg -S /usr/lib/arm-linux-gnueabihf/libdrm_etnaviv.so.1
#| libdrm-etnaviv1:armhf: /usr/lib/arm-linux-gnueabihf/libdrm_etnaviv.so.1

sudo apt reinstall libdrm-tests /usr/bin/modetest #| trying to open device 'stm'…done modetest -c

MESA3D / ETNAVIV

ETNAVIV/ DRI

ETNAVIV/ Gallium

ETNAVIV debian

Debian-10's mesa lack stm_dri.so:

dpkg -L kmscube || sudo apt install kmscube
sudo kmscube -D /dev/dri/card1 
gbm: Last dlopen error: /usr/lib/dri/stm_dri.so: cannot open shared object file: No such file or directory

So we update it from sid:

dpkg -L libgl1-mesa-glx

channel=unstable
echo "deb http://deb.debian.org/debian $channel main contrib non-free" \
 | sudo tee /etc/apt/sources.list.d/$channel.list

sudo apt-get update 
dpkg -L libgl1-mesa-dri | grep stm_dri.so || sudo apt-get install -t $channel libgl1-mesa-dri
# libgl1-mesa-dri:armhf: /usr/lib/arm-linux-gnueabihf/dri/stm_dri.so # 20.0.7-1_armhf.deb
dpkg -S /usr/lib/arm-linux-gnueabihf/dri/stm_dri.so # libgl1-mesa-dri:armhf
strings  /usr/lib/arm-linux-gnueabihf/dri/stm_dri.so | grep '_DEBUG'

armada

LIB DRM

Userspace interface to kernel DRM services, etnaviv support has been upstreamed into Mesa:

And shipped in debian:

dpkg -L libdrm-dev | grep etnaviv
#| /usr/include/libdrm/etnaviv_drmif.h
#| /usr/lib/arm-linux-gnueabihf/pkgconfig/libdrm_etnaviv.pc
#| /usr/lib/arm-linux-gnueabihf/libdrm_etnaviv.so

But some headers could lack:

sudo apt-get install libetnaviv-headers
dpkg -L libetnaviv-headers
#| libetnaviv-headers: /usr/include/libetnaviv/attic/etnaviv/viv.h
#| libetnaviv-headers: /usr/include/libetnaviv/src/etnaviv/common.xml.h
#| /usr/include/libetnaviv/attic/etnaviv/viv.h
#| /usr/include/libetnaviv/attic/etnaviv/etna.h
#| /usr/include/libetnaviv/src/etnaviv/common.xml.h
apt-file search common.xml.h # TODO

* https://codesearch.debian.net/search?q=common.xml.h
* https://gitlab.freedesktop.org/mesa/mesa/-/blob/master/src/gallium/drivers/etnaviv/hw/common.xml.h
* https://cgit.freedesktop.org/mesa/mesa/tree/src/gallium/drivers/etnaviv/hw/common.xml.h
# TODO: look for etnaviv/viv.h
# ln -fs /usr/include/libetnaviv/attic/etnaviv/*.h /usr/include/etnaviv/ # TODO
# https://codesearch.debian.net/search?q=viv.h&literal=1

LIB DRM ARMADA

XORG ARMADA

apt-cache search armada
sudo apt reinstall libdrm-armada2 libdrm-armada-dev
sudo apt reinstall xserver-xorg-video-armada-etnadrm  xserver-xorg-video-armada  xserver-xorg-video-armada-dbg 

#| xserver-xorg-video-armada: /usr/lib/xorg/modules/drivers/armada_drv.so

# wget http://repo.novena.io/repo/pool/main/x/xf86-video-armada/xserver-xorg-video-armada-etnaviv_0.0.1-r13_armhf.deb
# dpkg -i xserver-xorg-video-armada-etnaviv_0.0.1-r13_armhf.deb

git clone http://git.arm.linux.org.uk/cgit/xf86-video-armada.git
apt-get install autoconf xutils-dev xserver-xorg-dev libtool pkg-config
mv ./build-aux/config.sub ./build-aux/config.sub.orig
mv ./build-aux/config.guess ./build-aux/config.guess.orig
fakeroot ./debian/rules binary #

# TODO: look for etnaviv/viv.h
ln -fs /usr/include/libetnaviv/attic/etnaviv/*.h /usr/include/etnaviv/ # TODO
# ln -fs /usr/include/libetnaviv/attic/etnaviv /usr/include/etnaviv
# https://codesearch.debian.net/search?q=viv.h&literal=1

git clone https://github.com/novena-next/libdrm-armada ; cd libdrm-armada
fakeroot ./debian/rules binary # 
dpkg -i ../libdrm-armada*.deb # 2.0.4-1_armhf

git clone https://github.com/novena-next/xf86-video-armada ; cd xf86-video-armada
export DEB_DH_MAKESHLIBS_ARG=--ignore-missing-info # --dpkg-shlibdeps-params=--ignore-missing-info
fakeroot ./debian/rules binary
sudo dpkg -i ../xserver-xorg-video-armada*.deb

Xorg  -configure 2>&1 | grep armada # 
cp -av xf86-video-armada/conf/xorg-sample.conf /etc/X11/xorg.conf


# gdb : etnadrm_open_render, etnaviv_accel_init @ viv_open failed
# 
# "etnaviv DRM kernel driver 1.3.0, date 2"
# (gdb) p version->date # $13 = 0x5b7c58 "20151214"
# b chip_specs
# gdb -tui /usr/lib/xorg/Xorg # b viv_open # 
# ret = viv_open(VIV_HW_2D, &etnaviv->conn); = -1

(gdb) p/x conn->chip               
$17 = {chip_model = 0x400, chip_revision = 0x4652, chip_features = {0xa0e9e004, 0xe1299fff, 0xbe13b219, 0xce110010, 0x8000001}, stream_count = 0x4, register_max = 0x20, thread_count = 0x40, shader_core_count = 0x1, vertex_cache_size = 0x8,
  vertex_output_buffer_size = 0x80, pixel_pipes = 0x1, instruction_count = 0x100, num_constants = 0x0, buffer_size = 0x0, varyings_count = 0x0}

#define chipFeatures_PIPE_2D					0x00000200

p/x conn->chip->chip_features[ETNA_PIPE_2D] & 0x00000200

Xorg DRM

grep EE /var/log/Xorg.0.log
# [   145.367] (EE) armada(0): etnaviv: unable to open: Invalid argument
# [   145.367] (WW) armada(0): [drm] Vivante initialization failed, running unaccelerated

grep etnaviv_accel_init  ../xf86-video-armada/etnaviv/etnaviv_accel.c
#| ./etnaviv/etnadrm.c:145:int viv_open(enum viv_hw_type hw_type, struct viv_conn **out)

#| /viv.h:int viv_open
apt-file update ; apt-file search viv.h
#| libetnaviv-headers: /usr/include/libetnaviv/attic/etnaviv/viv.h

MESA3D

dpkg -L libgl1-mesa-dri:armhf # /usr/lib/arm-linux-gnueabihf/dri/armada-drm_dri.so

sudo apt-get install -t $channel libglapi-mesa # 20.1.1-1 : libglx-mesa0 # 
dpkg -L libglapi-mesa
dpkg -L libgl1-mesa-dri
dpkg -L libgbm1:armhf

apt-cache search libgl
sudo apt reinstall mesa-common-dev libopengl-dev libglapi-mesa

dpkg -L mesa-common-dev
sudo apt upgrade

rgrep -i -o "getenv(\".*\")" . | sed -e "s|.*\"\(.*\)\".*|\1|g" | sort | uniq | grep -i DEBUG

#| LIBGL_DEBUG
#| MESA_DEBUG
#| MESA_INFO
#| MESA_VERBOSE

export LIBGL_DEBUG=verbose
export LIBGL_SHOW_FPS=1
export LIBGL_DRI3_DISABLE=true
export LIBGL_ALWAYS_SOFTWARE=false
export MESA_DEBUG=true

Etnaviv MESA driver

GLAMOR

GLAMOR to accelerate 2D graphical over Mesa

xserver-xorg-core: /usr/lib/xorg/modules/libglamoregl.so

cat<<EOF | tee /etc/X11/xorg.conf && X


Section "Module"
Load "dri2"
Load "glamoregl"
EndSection 

Section "ServerFlags"
Option "AutoAddGPU" "false"
Option  "DRI2" "true"
EndSection


Section "Device"
  Identifier "etnaviv"
  Driver "modesetting"
  Option "kmsdev" "/dev/dri/card1"
  Option "AccelMethod" "none"
#  Option "AccelMethod" "glamor"
EndSection


#Section "Screen"
#       Identifier      "Default Screen"
#       Device          "etnaviv"
#EndSection
EOF

WAYLAND

Etnaviv Supported on debian, so SDL2 games are working too

dpkg -L weston || sudo apt-get install kbd weston

export XDG_RUNTIME_DIR=/var/run/user/$(id -u)/
mkdir -p ${XDG_RUNTIME_DIR}/tmp
/bin/openvt -c 1 /usr/bin/weston-launch -f

unset GALLIUM_HUD
/usr/bin/es2gears_wayland  -info # 100 fps
#| EGL_VERSION = 1.4
#| EGL_VENDOR = Mesa Project
#| EGL_CLIENT_APIS = OpenGL OpenGL_ES 

export GALLIUM_HUD=fps,cpu,draw-calls # 100 fps

SDL2 WAYLAND

export SDL_AUDIODRIVER=dummy
unset GALLIUM_HUD

# OpenGL 1.3 is supported

/usr/games/neverball

#| GL vendor: etnaviv
#| GL renderer: Vivante GC400 rev 4652
#| GL version: 1.3 Mesa 20.1.2

#| etna_link_shader:2647: Semantic 19 value 2 not found in vertex shader outputs

cat ~/.neverball/neverballrc 
#| textures                  1
#| reflection                0
#| multisample               0
#| width                     480
#| height                    800
#| fullscreen                1

top # cpu=20% and 5% for weston ?

apt-cache rdepends libsdl2-2.0  | grep -v '^lib' | xargs -n1 apt-cache show
apt-cache rdepends libsdl2-2.0  | grep -v '^lib' | xargs -n1 sudo apt-get install -y

ls /usr/games/* | while read file ; do ldd $file | grep -q libGL.so 2>&1 && \dpkg -S $file ; done

apt-get install chromium-bsu dreamchess trackballs teeworlds # supertux spring s3d redeclipse rbdoom3bfg

/usr/games/neverball

SDL2

Debian ship SDL2 with some backends

apt-cache rdepends libsdl2-2.0

# SDL_VIDEODRIVER available: x11 wayland dummy
export SDL_AUDIODRIVER=dummy

KMS

modetest -M stm -c || sudo apt install libdrm-tests
#| 32      0       disconnected    HDMI-A-1        0x0             0       31
#| 34      33      connected       DSI-1           52x86           1       33
#|   #0 480x800 50.00 480 578 610 708 800 815 825 839 29700 flags: ; type: preferred, driver

modetest -M stm -c | grep -i HDMI
32      0       disconnected    HDMI-A-1        0x0             0       31

EGL

sudo apt reinstall libgl1

dpkg -S /usr/lib/arm-linux-gnueabihf/libGL.so.1 # 
dpkg -S /usr/bin/eglinfo # mesa-utils-extra

From console

root@stm32mp1:~# /usr/bin/eglinfo

EGL client extensions string:
    EGL_EXT_device_base EGL_EXT_device_enumeration EGL_EXT_device_query
    EGL_EXT_platform_base EGL_KHR_client_get_all_proc_addresses
    EGL_EXT_client_extensions EGL_KHR_debug EGL_EXT_platform_device
    EGL_EXT_platform_wayland EGL_KHR_platform_wayland
    EGL_EXT_platform_x11 EGL_KHR_platform_x11 EGL_MESA_platform_gbm
    EGL_KHR_platform_gbm EGL_MESA_platform_surfaceless

GBM platform:
EGL API version: 1.4
EGL vendor string: Mesa Project
EGL version string: 1.4
EGL client APIs: OpenGL OpenGL_ES
EGL extensions string:
    EGL_ANDROID_blob_cache EGL_ANDROID_native_fence_sync
    EGL_EXT_buffer_age EGL_EXT_image_dma_buf_import
    EGL_EXT_image_dma_buf_import_modifiers EGL_KHR_cl_event2
    EGL_KHR_config_attribs EGL_KHR_create_context
    EGL_KHR_create_context_no_error EGL_KHR_fence_sync
    EGL_KHR_get_all_proc_addresses EGL_KHR_gl_renderbuffer_image
    EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_image
    EGL_KHR_gl_texture_cubemap_image EGL_KHR_image EGL_KHR_image_base
    EGL_KHR_image_pixmap EGL_KHR_no_config_context EGL_KHR_reusable_sync
    EGL_KHR_surfaceless_context EGL_EXT_pixel_format_float
    EGL_KHR_wait_sync EGL_MESA_configless_context EGL_MESA_drm_image
    EGL_MESA_image_dma_buf_export EGL_MESA_query_driver
    EGL_WL_bind_wayland_display
Configurations:
     bf lv colorbuffer dp st  ms    vis   cav bi  renderable  supported
  id sz  l  r  g  b  a th cl ns b    id   eat nd gl es es2 vg surfaces
---------------------------------------------------------------------
0x01 32  0  8  8  8  8  0  0  0 0 0x34325241--         y  y  y     win
0x02 32  0  8  8  8  8 16  0  0 0 0x34325241--         y  y  y     win
0x03 32  0  8  8  8  8 24  0  0 0 0x34325241--         y  y  y     win
0x04 32  0  8  8  8  8 24  8  0 0 0x34325241--         y  y  y     win
0x05 24  0  8  8  8  0  0  0  0 0 0x34325258--         y  y  y     win
0x06 24  0  8  8  8  0 16  0  0 0 0x34325258--         y  y  y     win
0x07 24  0  8  8  8  0 24  0  0 0 0x34325258--         y  y  y     win
0x08 24  0  8  8  8  0 24  8  0 0 0x34325258--         y  y  y     win
0x09 16  0  5  6  5  0  0  0  0 0 0x36314752--         y  y  y     win
0x0a 16  0  5  6  5  0 16  0  0 0 0x36314752--         y  y  y     win
0x0b 16  0  5  6  5  0 24  0  0 0 0x36314752--         y  y  y     win
0x0c 16  0  5  6  5  0 24  8  0 0 0x36314752--         y  y  y     win

Wayland platform:
error: XDG_RUNTIME_DIR not set in the environment.
error: XDG_RUNTIME_DIR not set in the environment.
error: XDG_RUNTIME_DIR not set in the environment.
eglinfo: eglInitialize failed

X11 platform:
eglinfo: eglInitialize failed

Device platform:
eglinfo: eglInitialize failed

* https://gitlab.freedesktop.org/mesa/demos/-/blob/master/src/egl/opengl/eglinfo.c

KMS / EGL

EGL context seems to work without X11

ldd /usr/bin/kmscube | grep GL
        libEGL.so.1 => /usr/lib/arm-linux-gnueabihf/libEGL.so.1 (0xb6df4000)
        libGLESv2.so.2 => /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2 (0xb6dce000)
        libGLdispatch.so.0 => /usr/lib/arm-linux-gnueabihf/libGLdispatch.so.0 (0xb6777000)

sudo kmscube -D /dev/dri/card1 || sudo apt install kmscube

Using display 0x21d8358 with EGL version 1.4
===================================
EGL information:
  version: "1.4"
  vendor: "Mesa Project"
  client extensions: "EGL_EXT_device_base EGL_EXT_device_enumeration EGL_EXT_device_query EGL_EXT_platform_base EGL_KHR_client_get_all_proc_addresses EGL_EXT_client_extensions EGL_KHR_debug EGL_EXT_platform_device EGL_EXT_platform_wayland EGL_KHR_platform_wayland EGL_EXT_platform_x11 EGL_KHR_platform_x11 EGL_MESA_platform_gbm EGL_KHR_platform_gbm EGL_MESA_platform_surfaceless"
  display extensions: "EGL_ANDROID_blob_cache EGL_ANDROID_native_fence_sync EGL_EXT_buffer_age EGL_EXT_image_dma_buf_import EGL_EXT_image_dma_buf_import_modifiers EGL_KHR_cl_event2 EGL_KHR_config_attribs EGL_KHR_create_context EGL_KHR_create_context_no_error EGL_KHR_fence_sync EGL_KHR_get_all_proc_addresses EGL_KHR_gl_renderbuffer_image EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_image EGL_KHR_image_base EGL_KHR_image_pixmap EGL_KHR_no_config_context EGL_KHR_reusable_sync EGL_KHR_surfaceless_context EGL_EXT_pixel_format_float EGL_KHR_wait_sync EGL_MESA_configless_context EGL_MESA_drm_image EGL_MESA_image_dma_buf_export EGL_MESA_query_driver EGL_WL_bind_wayland_display "
===================================
OpenGL ES 2.x information:
  version: "OpenGL ES 2.0 Mesa 20.1.1"
  shading language version: "OpenGL ES GLSL ES 1.0.16"
  vendor: "etnaviv"
  renderer: "Vivante GC400 rev 4652"
  extensions: "GL_EXT_blend_minmax GL_EXT_multi_draw_arrays GL_EXT_texture_format_BGRA8888 GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth24 GL_OES_element_index_uint GL_OES_fbo_render_mipmap GL_OES_mapbuffer GL_OES_rgb8_rgba8 GL_OES_standard_derivatives GL_OES_stencil8 GL_OES_texture_3D GL_OES_texture_npot GL_OES_vertex_half_float GL_OES_EGL_image GL_OES_depth_texture GL_AMD_performance_monitor GL_OES_packed_depth_stencil GL_OES_get_program_binary GL_APPLE_texture_max_level GL_EXT_discard_framebuffer GL_EXT_read_format_bgra GL_EXT_frag_depth GL_NV_fbo_color_attachments GL_OES_EGL_image_external GL_OES_EGL_sync GL_OES_vertex_array_object GL_EXT_unpack_subimage GL_NV_draw_buffers GL_NV_read_buffer GL_NV_read_depth GL_NV_read_depth_stencil GL_NV_read_stencil GL_EXT_draw_buffers GL_EXT_map_buffer_range GL_KHR_debug GL_NV_pixel_buffer_object GL_OES_required_internalformat GL_OES_surfaceless_context GL_EXT_separate_shader_objects GL_EXT_compressed_ETC1_RGB8_sub_texture GL_EXT_draw_elements_base_vertex GL_EXT_texture_border_clamp GL_KHR_context_flush_control GL_OES_draw_elements_base_vertex GL_OES_texture_border_clamp GL_KHR_no_error GL_EXT_disjoint_timer_query GL_KHR_parallel_shader_compile "
===================================

If you dont have latest mesa it will fail:

gbm: failed to open any driver (search paths /usr/lib/arm-linux-gnueabihf/dri:\$${ORIGIN}/dri:/usr/lib/dri)
gbm: Last dlopen error: /usr/lib/dri/stm_dri.so: cannot open shared object file: No such file or directory
failed to load driver: stm
sudo apt install  mesa-utils-extra ; dpkg -L mesa-utils-extra
/usr/bin/es2gears_x11 -info # 50fps
/usr/bin/es2gears_wayland  -info # 100 fps
/usr/bin/es2gears -info # 50 fps

GALLIUM

DISPLAY=:0  LIBGL_DEBUG=verbose  glxinfo  | grep render
libGL: screen 0 does not appear to be DRI2 capable
libGL: MESA-LOADER: dlopen(/usr/lib/arm-linux-gnueabihf/dri/swrast_dri.so)
DISPLAY=:0 GALLIUM_HUD=draw-calls   GALLIUM_DRIVER=llvmpipe glxgears -info
GALLIUM_DRIVER=softpipe DISPLAY=:0 glxgears -info
DISPLAY=:0 GALLIUM_HUD=draw-calls  glxgears -info

glxinfo -l

installing /<<PKGBUILDDIR>>/build/src/gallium/targets/dri/libgallium_dri.so to /<<PKGBUILDDIR>>/debian/tmp/usr/lib/arm-linux-gnueabihf/dri/armada-drm_dri.so
libgl1-mesa-dri:armhf: /usr/lib/arm-linux-gnueabihf/dri/armada-drm_dri.so

md5sum /usr/lib/arm-linux-gnueabihf/dri/swrast_dri.so  /usr/lib/arm-linux-gnueabihf/dri/armada-drm_dri.so

6be527e80840f2744df998cb90574e3d /usr/lib/arm-linux-gnueabihf/dri/swrast_dri.so 6be527e80840f2744df998cb90574e3d /usr/lib/arm-linux-gnueabihf/dri/armada-drm_dri.so

OPENGL

DISPLAY=:0 glxinfo 2>&1 | less
name of display: :0
display: :0  screen: 0
direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.4
(...)
client glx vendor string: Mesa Project and SGI
client glx version string: 1.4

DISPLAY=:0 glxgears 2>&1 | less
# 167 frames in 5.0 seconds = 33.384 FPS

DISPLAY=:0 MESA_GL_VERSION_OVERRIDE="2.0" glxgears -info
GL_RENDERER   = llvmpipe (LLVM 10.0.0, 128 bits)
GL_VERSION    = 2.0 Mesa 20.1.1
GL_VENDOR     = VMware, Inc.

# This should be "GL_VENDOR = etnaviv" instead

SDL

SDL2 KMSDRM

ldd /usr/games/pinball | grep GL
        libGL.so.1 => /usr/lib/arm-linux-gnueabihf/libGL.so.1 (0xb6e59000)
        libGLU.so.1 => /usr/lib/arm-linux-gnueabihf/libGLU.so.1 (0xb6e09000)
        libGLdispatch.so.0 => /usr/lib/arm-linux-gnueabihf/libGLdispatch.so.0 (0xb687c000)
        libGLX.so.0 => /usr/lib/arm-linux-gnueabihf/libGLX.so.0 (0xb6819000)


# Using SDL2 from console
export SDL_VIDEODRIVER=kmsdrm
#| Vendor     : etnaviv
#| Renderer   : Vivante GC400 rev 4652
#| Version    : 1.3 Mesa 20.1.2

grep KMS /usr/include/SDL2/SDL_config.h 
#define SDL_VIDEO_DRIVER_KMSDRM 1
#define SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC "libdrm.so.2"
#define SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC_GBM "libgbm.so.1"

cat <<EOF> ~/.emilia/pinball
size: 480 800
sound: 0
music: 0
view: 0
bpp: 24
fullscreen: 1
lights: 0
brightness: 0.5
texture_filter: -1
showfps: 1
fire: 0
keyboard: bottomnudge 32
keyboard: launch 13
keyboard: leftflip 1073742049
keyboard: leftnudge 1073742048
keyboard: reset 114
keyboard: rightflip 1073742053
keyboard: rightnudge 1073742052
EOF

kill -9 $(pidof pinball) ; /usr/games/pinball
#|	Vendor     : etnaviv

export LD_LIBRARY_PATH=/usr/lib/gl4es
ldd /usr/games/pinball | grep GL
#| libGL.so.1 => /usr/lib/gl4es/libGL.so.1 (0xb6da5000)
#| libGLU.so.1 => /usr/lib/arm-linux-gnueabihf/libGLU.so.1 (0xb6d55000)

export LD_LIBRARY_PATH=/usr/lib/gl4es
export DISPLAY=:0
export XDG_RUNTIME_DIR=/var/run/user/$(id -u)/
export LIBGL_ES=2
export LIBGL_FB=3
export LIBGL_FPS=1
export LIBGL_GL=21
export LIBGL_DEFAULTWRAP=2
export LIBGL_FBOFORCETEX=1

export SDL_AUDIODRIVER=dummy
export SDL_NOMOUSE=1 

kill -9 $(pidof pinball) ; /usr/games/pinball

file /usr/lib/arm-linux-gnueabihf/libGL.so.1
mv -v /usr/lib/arm-linux-gnueabihf/libGL.so.1 /usr/lib/arm-linux-gnueabihf/libGL.so.1.$(date +%s).bak
ln -fs /usr/lib/gl4es/libGL.so.1 /usr/lib/arm-linux-gnueabihf/libGL.so.1

xinit

#| X.Org X Server 1.20.8
#| X Protocol Version 11, Revision 0
#| Build Operating System: Linux 4.19.0-8-armmp-lpae armv7l Debian
#| Current Operating System: Linux stm32mp1 5.8.0-rc1-00138-g1198e58e1b0e #1 SMP Fri Jun 19 03:38:59 CEST 2020 armv7l
#| Kernel command line: root=/dev/sdb5 # ro quiet
#| Build Date: 31 March 2020  10:14:40AM
#| xorg-server 2:1.20.8-2 (https://www.debian.org/support) 
#| Current version of pixman: 0.36.0
#|         Before reporting problems, check http://wiki.x.org
#|         to make sure that you have the latest version.
#| Markers: (--) probed, (**) from config file, (==) default setting,
#|         (++) from command line, (!!) notice, (II) informational,
#|         (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
#| (==) Log file: "/var/log/Xorg.0.log", Time: Tue Jun 30 14:09:49 2020
#| (==) Using config file: "/etc/X11/xorg.conf"
#| (==) Using system config directory "/usr/share/X11/xorg.conf.d"
LIBGL: Initialising gl4es
LIBGL: v1.1.3 built on Jun 19 2020 11:31:56
LIBGL: Using GLES 2.0 backend
LIBGL: loaded: libGLESv2.so
LIBGL: loaded: libEGL.so
LIBGL: Using GLES 2.0 backend
LIBGL: Error while gathering supported extension (eglInitialize: EGL_NOT_INITIALIZED), default to none
LIBGL: Targeting OpenGL 2.1
LIBGL: WARNING, No Limited or Full NPOT support in hardware, Forcing NPOT have no effect!
LIBGL: Not trying to batch small subsequent glDrawXXXX
LIBGL: try to use VBO
LIBGL: glX Will try to recycle EGL Surface
LIBGL: Current folder is:/root
(II) modeset(0): Initializing kms color map for depth 24, 8 bpc.

eglinfo

Wayland platform:
eglinfo: eglInitialize failed

X11 platform:
eglinfo: eglInitialize failed

Device platform:
eglinfo: eglInitialize failed

LIBGL: Shuting down

export LD_LIBRARY_PATH=/usr/lib/gl4e
export LIBGL_FPS=1
unset SDL_VIDEODRIVER
export SDL_VIDEODRIVER=kmsdrm
unset SDL_RENDER_DRIVER
export SDL_RENDER_DRIVER=software
export SDL_RENDER_DRIVER=opengl
export SDL_RENDER_DRIVER=opengles2
export LIBGL_FB=4 # GBM
unset LIBGL_FB
unset  LIBGL_DRMCARD
export LIBGL_DRMCARD=/dev/dri/card1

export LIBL_FBOUNBIND=1
unset LIBL_FBOUNBIND
unset LIBGL_ES

export SDL_AUDIODRIVER=dummy
export SDL_NOMOUSE=1

file /dev/dri/card0
mv /dev/dri/card0  /dev/dri/card0.orig
ln -fs card1 /dev/dri/card0
mv /dev/dri/card0.orig /dev/dri/card0
mv /dev/dri/card1  /dev/dri/card1.orig

kill -9 $(pidof pinball) ; /usr/games/pinball
kill -9 $(pidof pinball) ;

sudo apt-get update ;
sudo aptitude install libsdl2-snapshot libsdl2-dev=0.2.0.12+330+gc59ab0c02-333

export SDL_AUDIODRIVER=vivante # TODO

GL4ES

dpkg -L gl4es0  | grep '/usr/lib/gl4es/libGL.so.1' || apt reinstall -y --allow-unauthenticated gl4es0


export LIBGL_GL=13
LIBGL: Targeting OpenGL 1.3

GL4ES X11

sudo kill -9 $(pidof Xorg) ; sudo xinit

glxinfo || apt-get install -y mesa-utils
DISPLAY=:0  LD_LIBRARY_PATH=/usr/lib/gl4es glxinfo
#| (...)
#| LIBGL: Hardware vendor is VMware, Inc.
#| (...)
#| libEGL warning: DRI2: failed to authenticate
#| (...)
DISPLAY=:0 LD_LIBRARY_PATH=/usr/lib/gl4es glxgears -info
# 247 frames in 5.0 seconds = 49.283 FPS
DISPLAY=:0 LD_LIBRARY_PATH=/usr/lib/gl4es LIBGL_BATCH=1000 glxgears
# 247 frames in 5.0 seconds = 49.333 FPS
LIBGL_FPS=1  LIBGL_FB=1 LD_LIBRARY_PATH=/usr/lib/gl4es  SDL_AUDIODRIVER=dummy  DISPLAY=:0 SDL_NOMOUSE=1 /usr/games/pinball
# libegl-dev:armhf: /usr/lib/arm-linux-gnueabihf/libEGL.so
export DISPLAY=:0
export LD_LIBRARY_PATH=/usr/lib/gl4es 

GL4ES WAYLAND

export LD_LIBRARY_PATH=/usr/lib/gl4es
ldd /usr/bin/eglinfo | grep GL
  export LIBGL_FPS=1
  export LIBGL_NOTEST=1
eglinfo
#| LIBGL: Targeting OpenGL 2.1                      
#| LIBGL: Initialising gl4es
#| LIBGL: v1.1.3 built on Jun 19 2020 11:31:56
#| LIBGL: fps counter enabled
#| LIBGL: Using GLES 2.0 backend
#| 
#| X11 platform:
#| eglinfo: eglInitialize failed
#| 
#| Device platform:
#| eglinfo: eglInitialize failed
#| 
#| LIBGL: Shuting down


# Now let's try SDL app:
export SDL_VIDEODRIVER=wayland
export XDG_RUNTIME_DIR=/var/run/user/$(id -u)/
export SDL_AUDIODRIVER=dummy
export SDL_NOMOUSE=1 

export LIBGL_FPS=1
export LIBGL_FB=1
export LD_LIBRARY_PATH=/usr/lib/gl4es

unset LIBGL_FB

mkdir -p ${XDG_RUNTIME_DIR}/tmp
/usr/games/pinball
#| Couldn't set video mode: OpenGL not available

# I suspect a glx issue

sudo apt-get install xwayland
"Xwayland" "Failed to initialize glamor"

kill -9 $(pidof weston)

SDL2+GL4ES FB

  export LIBGL_FPS=1
  export LIBGL_NOTEST=1

  kill -9 $(pidof pinball) ; /usr/games/pinball

Fonts are not displayed and it's super slow

  export LIBGL_GL=11

SDL KMS

unset  LIBGL_DRMCARD
export LIBGL_DRMCARD=/dev/dri/card1

unset SDL_RENDER_DRIVER
export SDL_RENDER_DRIVER=opengles2 # or opengl
# export SDL_RENDER_DRIVER=opengl # or opengl

    SDL_Window* window = SDL_CreateWindow
        ("SDL2",
        0, 0,
        480, 800,
	SDL_WINDOW_FULLSCREEN
        );
        );
	
./sdl-test

Dont use software renderer it will fail

SDL_VIDEODRIVER available: x11 wayland KMSDRM dummy
SDL_VIDEODRIVER usable   : KMSDRM
SDL_VIDEODRIVER selected : KMSDRM
SDL_RENDER_DRIVER available: opengl opengles2 software
SDL_RENDER_DRIVER selected : software
[ 2661.572776] etnaviv-gpu 59000000.gpu: MMU fault status 0x00000002
[ 2661.577570] etnaviv-gpu 59000000.gpu: MMU 0 fault addr 0xff8bc00017 01-Jul-20
[ 2662.630775] etnaviv-gpu 59000000.gpu: recover hung GPU!

GBM

GBM is intended to be used as a native platform for EGL

GLES

unset LIBGL_NOTEST
unset SDL_VIDEODRIVER
export SDL_VIDEODRIVER=kmsdrm #  x11 wayland KMSDRM RPI dummy
export SDL_RENDER_DRIVER=opengl # opengl opengles2 opengles software

export DISPLAY=:0

unset LIBGL_DRMCARD
export LIBGL_DRMCARD=/dev/dri/card1
export LIBGL_FB=4 # GBM
export LIBGL_FPS=1
# export LIBGL_FBONOALPHA=1

kill -9 $(pidof pinball) ; /usr/games/pinball --debug

  #| LIBGL: Using GLES 2.0 backend
  #| LIBGL: GBM on card /dev/dri/card1 is Available
  #| LIBGL: GBM Surfaces supported and used
  #| LIBGL: Error while gathering supported extension (eglChooseConfig: EGL_SUCCESS), default to none


  dpkg -L libgles2 || 
  # /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2.1.0
  
  dpkg -S /usr/lib/arm-linux-gnueabihf/libGLESv2.so
  # libgles-dev:armhf: /usr/lib/arm-linux-gnueabihf/libGLESv2.so

  dpkg -L libgles2-mesa || apt-get install libgles2-mesa


   kill -9 $(pidof pinball) ; LIBGL_NOTEST=1  /usr/games/pinball
LIBGL: Initialising gl4es
LIBGL: v1.1.4 built on Jul  1 2020 11:38:17
LIBGL: framebuffer output enabled
LIBGL: Using GLES 2.0 backend
LIBGL: loaded: libGLESv2.so
LIBGL: loaded: libEGL.so
LIBGL: loaded: libgbm.so
LIBGL: loaded: libdrm.so
LIBGL: Hardware test disabled, nothing activated...
LIBGL: Targeting OpenGL 2.1
LIBGL: Forcing NPOT support by disabling MIPMAP support for NPOT textures 
LIBGL: Not trying to batch small subsequent glDrawXXXX
LIBGL: try to use VBO
LIBGL: glXMakeCurrent FBO workaround enabled
LIBGL: Current folder is:/root
Initing SDL

TODO

sudo sync
sudo apt-get update -y
sudo apt-get install -y base-files gnupg curl sudo

unset VERSION_ID
cat /etc/os-release && . /etc/os-release
[ "" != "${VERSION_ID}" ] || VERSION_ID=10
distro="${ID}_${VERSION_ID}"
[ "debian" != "${ID}" ] || distro="${distro}.0"
[ "debian_10.0" != "$distro" ] || distro="${ID}_${VERSION_ID}"
distro=$(echo "${distro}" | sed 's/.*/\u&/')
[ "ubuntu" != "${ID}" ] || distro="x${distro}"
url="http://download.opensuse.org/repositories/home:/rzrfreefr/${distro}"
file="/etc/apt/sources.list.d/home:rzrfreefr.list"
echo "deb [allow-insecure=yes] $url /" | sudo tee "${file}"
#
curl -s ${url}/Release.key | gpg --with-fingerprint
curl ${url}/Release.key | sudo apt-key add -v -
curl "$url/Release.key" | sudo apt-key add -
sudo apt-get update -y
apt-cache search armada | cut -d' ' -f1 \
  | xargs sudo apt-get install -y --allow-downgrades --allow-unauthenticated
#
sudo apt reinstall libetnaviv-headers  libdrm-etnaviv1 
dpkg -L libetnaviv-headers # libetnaviv-headers: /usr/include/libetnaviv/attic/etnaviv/viv.h
dpkg -L libdrm-armada2 # /usr/lib/arm-linux-gnueabihf/libdrm_armada.so.0.2.0
# sudo apt-get install -y arm-trusted-firmware
sudo apt-get install apt-file ; sudo apt-file update
sudo apt-file search etnaviv

sudo apt-get install -y libgl1-mesa-dri linux-libc-dev-armhf-cross
sudo apt-get install -y libdrm-tests libdrm-etnaviv1 libgl1-mesa-dri linux-libc-dev-armhf-cross
dpkg -L libdrm-tests

export DISPLAY=:0

GALLIUM_HUD=help glxinfo

GALLIUM_HUD=fps,cpu glxgears # 12fps / cpu=80%

glxgears -info
154 frames in 5.0 seconds = 30.725 FPS

GALLIUM_HUD=fps,cpu,draw-calls glxgears 



# strace xinit > strace.log 2>&1 



GALLIUM_HUD=fps,cpu,draw-calls  /usr/bin/glxgears 


dmesg  | grep drm
[    3.365868] [drm] Initialized etnaviv 1.3.0 20151214 for etnaviv on minor 0
[    4.026043] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[    4.032479] [drm] Driver supports precise vblank timestamp query.
[    4.040793] [drm] Initialized stm 1.0.0 20170330 for 5a001000.display-controller on minor 1
[    4.506432] stm32-display 5a001000.display-controller: fb0: stmdrmfb frame buffer device
[   18.666518] systemd[1]: Condition check resulted in Load Kernel Module drm being skipped.


find /dev/dri/
/dev/dri/
/dev/dri/by-path
/dev/dri/by-path/platform-5a001000.display-controller-card
/dev/dri/by-path/platform-etnaviv-card
/dev/dri/by-path/platform-etnaviv-render
/dev/dri/card1
/dev/dri/card0
/dev/dri/renderD128

# https://github.com/grate-driver/libdrm/blob/master/xf86drm.c#L2655 drmCommandWriteRead


etnadrm_open_render version=etnaviv @ /dev/dri/card0

[   94.414750] etnaviv-gpu 59000000.gpu: recover hung GPU!


DISPLAY=:0 xrandr 
Screen 0: minimum 320 x 200, current 480 x 800, maximum 2048 x 2048
HDMI-1 disconnected primary (normal left inverted right x axis y axis)
DSI-1 connected 480x800+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
   480x800       50.00*+

SDL2 tests

export LIBGL_NOTEST=1
unset LIBGL_NOTEST
unset SDL_VIDEODRIVER
export SDL_VIDEODRIVER=kmsdrm #  x11 wayland KMSDRM RPI dummy
unset SDL_RENDER_DRIVER
export SDL_RENDER_DRIVER=opengl # opengl opengles2 opengles software
#export SDL_RENDER_DRIVER=opengles2
export SDL_AUDIODRIVER=dummy
export SDL_NOMOUSE=1
export XDG_RUNTIME_DIR=/var/run/user/$(id -u)/

unset LIBGL_DRMCARD
export LIBGL_DRMCARD=/dev/dri/card1
export LIBGL_FB=4 # GBM
export LIBGL_FPS=1

SDL GLES2

cd ~/SDL/test/

make testgles2 && ./testgles2
#| INFO: Vendor     : etnaviv
#| INFO: Renderer   : Vivante GC400 rev 4652
#| INFO: Version    : OpenGL ES 2.0 Mesa 20.1.2
#| INFO: 50.07 frames per second

./testgles2 --help

# On wayland:

GALLIUM_HUD=fps,cpu,draw-calls ./testgles2
# CPU=30%, FPS=100

SDL gl2

export LIBGL_FPS=1
unset LIBGL_NOTEST
#| export LIBGL_NOTEST=1

set | grep GL
cd ~/SDL/test/ && make testgl2 && ./testgl2 # A very simple example of using OpenGL with SDL

./testgl2  --info all

#| LIBGL: Hardware vendor is etnaviv
#| (...)
#| INFO: 49.85 frames per second
#| LIBGL: Shuting down


#| LIBGL: Hardware vendor is VMware, Inc.
#| ...
#| drmGetBusid returned 'NULL'
#| LIBGL: GBM on card /dev/dri/card1 is Available
#| LIBGL: Targeting OpenGL 2.1
#| LIBGL: Forcing NPOT support by disabling MIPMAP support for NPOT textures 
#| LIBGL: Not trying to batch small subsequent glDrawXXXX
#| LIBGL: try to use VBO
#| LIBGL: glX Will try to recycle EGL Surface
#| LIBGL: Current folder is:/root/SDL/test
#| INFO: Screen BPP    : 32
#| INFO: Swap Interval : 0
#| INFO: Window Size   : 480,800
#| INFO: Draw Size     : 480,800

GALLIUM_HUD=fps,cpu,draw-calls ./testgl2
# CPU=30%, FPS=100

PINBALL

PINBALL X11

# export SDL_NOMOUSE=1
export DISPLAY=:0
export SDL_AUDIODRIVER=dummy

SDL1's version about 6fps without texture (texture_filter: -1) or 5fps with

Vendor     : VMware, Inc.
Renderer   : llvmpipe (LLVM 10.0.0, 128 bits)
Version    : 3.1 Mesa 20.1.2

aptitude  install pinball-snapshot


killall pinball -9 ; /usr/games/pinball || gdb /usr/games/pinball
#| Vendor     : VMware, Inc.
#| Renderer   : llvmpipe (LLVM 10.0.0, 128 bits)
#| Version    : 3.1 Mesa 20.1.2

export SDL_AUDIODRIVER=dummy
export SDL_NOMOUSE=1
export DISPLAY=:0
export PINBALL_WINDOW_FULLSCREEN_DESKTOP=1

killall pinball -9 ; /usr/games/pinball || gdb /usr/games/pinball

Unknown remote command: grep Unknown remote command: find Unknown remote command: find

PINBALL X11 SDL2

export DISPLAY=:0 ; /usr/games/pinball

Vendor     : VMware, Inc.
Renderer   : llvmpipe (LLVM 10.0.0, 128 bits)
Version    : 3.1 Mesa 20.1.2

Function null      0
Function align     0.0699926
Function beh       0.874908
Function collision 2.72193
Function draw      0
Function glight    0.0311078
Function plight    0
Function pnormal   0
Function render    18.793
Function sound     0
Function signal    0.00777696
Function trans     66.1508
Function swap      11.1522
Function keyboard  0.198312
Function render    0
Function swap out  0
Function tick out  0
Function waiting   0
Unprofiled time    99.9994 %
4294965518 25717

PINBALL WAYLAND

Needs SDL2 port

cat <<EOF | sudo tee /etc/apt/sources.list.d/home:rzrfreefr.list
deb [allow-insecure=yes] http://download.opensuse.org/repositories/home:rzrfreefr/Debian_10 /
EOF
sudo apt-get update
sudo apt-cache show pinball-snapshot
sudo aptitude install pinball # =0.0.0.0+214+g4a4ec39-217
     sudo aptitude install pinball-snapshot # =0.0.0.0+214+g4a4ec39-217
dpkg -L weston || sudo apt-get install kbd weston

export XDG_RUNTIME_DIR=/var/run/user/$(id -u)/
mkdir -p ${XDG_RUNTIME_DIR}/tmp
/bin/openvt -c 1 /usr/bin/weston-launch -f

unset DISPLAY
kill -9 $(pidof pinball) ; /usr/games/pinball

Simple profile output *****************
Function null      0
Function align     0.152718
Function beh       0.999215
Function collision 3.11982
Function draw      0
Function glight    0.0785409
Function plight    0
Function pnormal   0
Function render    11.2444
Function sound     0
Function signal    0.0174535
Function trans     84.0649
Function swap      0.165809
Function keyboard  0.157082
Function render    0
Function swap out  0
Function tick out  0
Function waiting   0
Unprofiled time    99.9995 %

unset DISPLAY ; strace /usr/games/pinball > log.txt 2>&1


socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC, 0) = 3
connect(3, {sa_family=AF_UNIX, sun_path="/run/user/0/wayland-0"}, 24) = 0

access("/run/udev/control", F_OK)       = 0
socket(AF_NETLINK, SOCK_RAW|SOCK_CLOEXEC|SOCK_NONBLOCK, NETLINK_KOBJECT_UEVENT) = 5


lsof -p $(pidof pinball) | grep -v 'lib'  
COMMAND PID USER   FD      TYPE     DEVICE SIZE/OFF  NODE NAME
pinball 643 root  cwd       DIR       8,21     4096  2129 /root
pinball 643 root  rtd       DIR       8,21     4096     2 /
pinball 643 root  txt       REG       8,21   239216 12454 /usr/games/pinball
pinball 643 root  mem       CHR    226,128          18724 /dev/dri/renderD128
pinball 643 root  DEL       REG        0,1          22797 /memfd:wayland-cursor
pinball 643 root    0u      CHR      136,1      0t0     4 /dev/pts/1
pinball 643 root    1w      REG       8,21 12532086    72 /root/log.txt
pinball 643 root    2w      REG       8,21 12532086    72 /root/log.txt
pinball 643 root    3u     unix 0x6537015a      0t0 22796 type=STREAM
pinball 643 root    4u      REG        0,1  2093056 22797 /memfd:wayland-cursor (deleted)
pinball 643 root    5u  netlink                 0t0 22800 KOBJECT_UEVENT
pinball 643 root    7u      CHR      226,1      0t0 20485 /dev/dri/card1
pinball 643 root    8u      CHR      226,1      0t0 20485 /dev/dri/card1
pinball 643 root    9u      CHR    226,128      0t0 18724 /dev/dri/renderD128
pinball 643 root   10u      CHR    226,128      0t0 18724 /dev/dri/renderD128


ls -l /proc/$(pidof pinball)/fd

lsof | grep  22800
pinball   643                           root    5u  netlink                 0t0      22800 KOBJECT_UEVENT
pinball   643 644 SDLTimer              root    5u  netlink                 0t0      22800 KOBJECT_UEVENT
pinball   643                           root    3u     unix 0x6537015a      0t0      22796 type=STREAM
pinball   643 644 SDLTimer              root    3u     unix 0x6537015a      0t0      22796 type=STREAM

root@stm32mp1:~# iotop
Could not run iotop as some of the requirements are not met:
- Linux >= 2.6.20 with
  - I/O accounting support (CONFIG_TASKSTATS, CONFIG_TASK_DELAY_ACCT, CONFIG_TASK_IO_ACCOUNTING)

export XDG_RUNTIME_DIR=/var/run/user/$(id -u)/
export SDL_AUDIODRIVER=dummy
export SDL_NOMOUSE=1
unset GALLIUM_HUD

#| Vendor     : etnaviv
#| Renderer   : Vivante GC400 rev 4652
#| Version    : 1.3 Mesa 20.1.2

export GALLIUM_HUD=fps,cpu,draw-calls # for using etnaviv

kill -9 $(pidof pinball) ; /usr/games/pinball

#| FPS=0.1 cpu=50 dc=25

export SDL_NOMOUSE=1

export PINBALL_BITPERPIXEL=24
export PINBALL_BITPERPIXEL=16
export PINBALL_BITPERPIXEL=8
unset PINBALL_BITPERPIXEL

unset PINBALL_WINDOW_FULLSCREEN_DESKTOP
export PINBALL_WINDOW_FULLSCREEN_DESKTOP=1

export LIBGL_DEBUG=verbose
export LIBGL_SHOW_FPS=1
export LIBGL_ALWAYS_SOFTWARE=false
export MESA_DEBUG=true

set | grep LIBGL
LIBGL_DEBUG=verbose
LIBGL_SHOW_FPS=1
export LIBGL_GL=13
unset GALLIUM_HUD
export GALLIUM_HUD=fps,cpu,draw-calls # 100 fps

kill -9 $(pidof pinball) ; /usr/games/pinball

dpkg -L sysstat | grep bin

mpstat -P ALL
Linux 5.8.0-rc1-00138-g1198e58e1b0e (stm32mp1)  07/02/20        _armv7l_        (2 CPU)

15:43:07     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
15:43:07     all   18.16    0.00    2.59    8.01    0.00    0.20    0.00    0.00    0.00   71.04
15:43:07       0   16.76    0.00    2.45    8.12    0.00    0.36    0.00    0.00    0.00   72.30
15:43:07       1   19.55    0.00    2.74    7.90    0.00    0.04    0.00    0.00    0.00   69.77

/usr/bin/pidstat | grep pinball
15:42:00        0      3646    1.22    0.01    0.00    0.00    1.23     0  pinball
 less /proc/interrupts

PINBALL on KMS

From console:

dpkg -s libgl1-mesa-dri:armhf  | grep Version # Version: 20.1.2-1 # 2020-06-24
export GALLIUM_HUD=fps,cpu,draw-calls # for using etnaviv
file /usr/lib/arm-linux-gnueabihf/libGL.so.1
killall pinball -9 ; /usr/games/pinball --help || gdb /usr/games/pinball

#| Vendor     : etnaviv
#| Renderer   : Vivante GC400 rev 4652
#| Version    : 1.3 Mesa 20.1.2
# FPS=0.05 cpu=50 draw-calls=50

export LIBGL_DEBUG=verbose
#| drmOpenDevice: node name is /dev/dri/renderD128
#| drmOpenDevice: open result is 5, (OK)
#| drmGetBusid returned 'NULL'
export MESA_DEBUG=true
#| Mesa: User error: GL_INVALID_ENUM in glGetIntegerv(pname=GL_MAJOR_VERSION)
export DISPLAY=:0
unset DISPLAY
export SDL_AUDIODRIVER=dummy
export SDL_NOMOUSE=1
unset LIBGL_DEBUG
export LIBGL_DEBUG=verbose
unset LIBGL_DRMCARD
# export LIBGL_DRMCARD=/dev/dri/card1
# export LIBGL_USEVBO=0
export SDL_VIDEODRIVER=kmsdrm # x11 wayland KMSDRM RPI dummy
# export SDL_RENDER_DRIVER=opengles2
# export SDL_RENDER_DRIVER=opengl # opengl opengles2 opengles software

export GALLIUM_HUD=fps,cpu,draw-calls # for using etnaviv

unset LIBGL_NOTEST
# export LIBGL_NOTEST=1
set | grep LIBGL
export LIBGL_FB=4 # GBM
# export LIBGL_FB=1 # GBM

killall pinball -9 ; /usr/games/pinball --help || gdb /usr/games/pinball
# CPU=50% FPS=0.7 draw-calls=20 # on wayland

file /usr/lib/arm-linux-gnueabihf/libGL.so.1 # symbolic link to /usr/lib/gl4es/libGL.so.1
set | grep GL


drmOpenDevice: open result is 9, (OK)
drmGetBusid returned 'NULL'
0 joysticks were found.
Vendor     : ptitSeb
Renderer   : GL4ES wrapper
Version    : 2.1 gl4es wrapper 1.1.4
Extensions : GL_EXT_abgr GL_EXT_packed_pixels GL_EXT_compiled_vertex_array GL_EXT_compiled_vertex_arrays GL_ARB_vertex_buffer_object GL_ARB_vertex_array_object GL_ARB_vertex_buffer GL_EXT_vertex_array GL_EXT_secondary_color GL_ARB_multitexture GL_ARB_texture_border_clamp GL_ARB_texture_env_add GL_EXT_texture_env_add GL_ARB_texture_env_combine GL_EXT_texture_env_combine GL_ARB_texture_env_crossbar GL_EXT_texture_env_crossbar GL_ARB_texture_env_dot3 GL_EXT_texture_env_dot3 GL_SGIS_generate_mipmap GL_EXT_draw_range_elements GL_EXT_bgra GL_ARB_texture_compression GL_EXT_texture_compression_s3tc GL_OES_texture_compression_S3TC GL_EXT_texture_compression_dxt1 GL_EXT_texture_compression_dxt3 GL_EXT_texture_compression_dxt5 GL_ARB_point_parameters GL_EXT_point_parameters GL_EXT_stencil_wrap GL_SGIS_texture_edge_clamp GL_EXT_texture_edge_clamp GL_EXT_direct_state_access GL_EXT_multi_draw_arrays GL_SUN_multi_draw_arrays GL_ARB_multisample GL_EXT_texture_object GL_EXT_polygon_offset GL_GL4ES_hint GL_ARB_draw_elements_base_vertex GL_EXT_draw_elements_base_vertex GL_ARB_map_buffer_range GL_NV_blend_square GL_ARB_texture_rectangle GL_APPLE_texture_2D_limited_npot GL_EXT_blend_color GL_EXT_blend_equation_separate GL_EXT_blend_func_separate GL_EXT_blend_subtract GL_ARB_texture_mirrored_repeat GL_ARB_framebuffer_object GL_EXT_framebuffer_object GL_EXT_packed_depth_stencil GL_EXT_framebuffer_blit GL_ARB_draw_buffers GL_ARB_point_sprite GL_ARB_texture_cube_map GL_EXT_texture_cube_map GL_EXT_fog_coord GL_EXT_separate_specular_color GL_EXT_rescale_normal GL_ARB_ES2_compatibility GL_ARB_fragment_shader GL_ARB_vertex_shader GL_ARB_shader_objects GL_ARB_shading_language_100 GL_ATI_texture_env_combine3 GL_ATIX_texture_env_route GL_NV_texture_env_combine4 GL_NV_fog_distance GL_ARB_draw_instanced GL_ARB_instanced_arrays GL_ARB_vertex_program GL_ARB_fragment_program GL_EXT_program_parameters 

SDL_GL_RED_SIZE: 8
SDL_GL_GREEN_SIZE: 8
SDL_GL_BLUE_SIZE: 8
SDL_GL_DEPTH_SIZE: 16
SDL_GL_DOUBLEBUFFER: 1


export LIBGL_FB=4 # GBM
export LIBGL_DRMCARD=/dev/dri/card1
unset LIBGL_DRMCARD
export SDL_VIDEODRIVER=kmsdrm #  x11 wayland KMSDRM RPI dummy
unset LIBGL_NOTEST

export LIBGL_FPS=1
export SDL_VIDEODRIVER=kmsdrm #  x11 wayland KMSDRM RPI dummy
export LIBGL_FB=4 # GBM
export LIBGL_DRMCARD=/dev/dri/card1

export LD_LIBRARY_PATH=/usr/lib/gl4es
export LIBGL_POTFRAMEBUFFER=0
unset  LIBGL_POTFRAMEBUFFER
export LIBGL_FORCENPOT=1
unset LIBGL_FORCENPOT

PINBALL GLES

readelf -s /usr/games/pinball  | awk '{ print $8 }' | sort | uniq | grep '^gl'

glBegin # GL1.3 GL2.1
glBindTexture # GL1.3 ES 2.0
glBlendFunc # GL1.3
glClear
glClearColor
glClearDepth
glColor3f
glColor4f
glCullFace # GL1.3
glDeleteTextures
glDepthFunc
glDepthMask
glDisable
glEnable
glEnd
glFrontFace
glFrustum # GL1.3
glGenTextures
glGetString
glLoadIdentity
glMatrixMode
glPolygonOffset
glShadeModel # GL1.3
glTexCoord2f
glTexEnvf
glTexImage2D
glTexParameteri
glVertex3f
glViewport

readelf -s /usr/lib/gl4es/libGL.so | awk '{ print $8 }' | sort | uniq | grep '^gl' 

export LIBGL_VSYNC=1
export LIBGL_SHRINK=1
export LIBGL_BATCH=100
export LIBGL_FASTMATH=1
export LIBL_FBOUNBIND=1
export LIBGL_FLOAT=2

OS

Community

Jessie

# wget http://repo.novena.io/debian/pool/main/k/kosagi-repo/kosagi-repo_1.2-r1_all.deb
# sudo dpkg -i kosagi-repo_1.2-r1_all.deb

# echo 'deb http://repo.novena.io/repo main contrib non-free' | sudo tee -a /etc/apt/source.list.d/jookia.lst

debian:10+ Buster

apt-cache search armada
# xserver-xorg-video-armada-etnadrm - Xorg X server -- Armada DRM Etnaviv-based GPU acceleration
sudo apt-get install xserver-xorg-video-armada-etnadrm # from rzr TODO
url='http://git.arm.linux.org.uk/cgit/xf86-video-armada.git/plain/conf/xorg-sample.conf?h=unstable-devel'
curl $url | sudo tee /etc/X11/xorg.conf

STM32MP157AAC

MISC

@TaG: SbC

stm32mp1.txt · Last modified: 2022/04/16 12:24 (external edit)
 
Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki