GPU acceleration with SPI displays (TinyDRM)
Josef Luštický
josef.lusticky at braiins.cz
Mon Aug 4 07:54:28 UTC 2025
Hello,
is it possible to use GPU acceleration with TinyDRM drivers?
I am testing on STM32MP157c SoC with Vivante GC400 GPU and I use
Mesa3D 24.0.9 (rootfs generated with Buildroot 2025.02.3) and kernel
5.10.176.
To compare, I also have the same system but with a MIPI DSI display.
While kmscube renders at 60 fps with the MIPI DSI display, I get only
11 fps with the SPI display (TinyDRM driver).
Is there some architectural limitation, either in Mesa, kernel, or HW-related?
I suppose both setups use kernel's KMS as renderer only (kmsro), thus
it should render at the same framerate into framebuffer.
The difference in HW is the peripheral the displays use - MIPI DSI
display utilizes LTDC peripheral (kmscube loads
/usr/lib/dri/stm_dri.so) vs. SPI display uses just SPI (ksmcube loads
/usr/lib/dri/ili9225_dri.so). Both .so files are hard links.
Both open /dev/dri/renderD128 (GPU).
The MIPI DSI display is connected to the DSI Host peripheral which
just transcodes the parallel RGB pixel stream from the LTDC (LCD
Timing Display Controller) peripheral of the STM SoC.
The display driver is drivers/gpu/drm/panel/panel-sitronix-st7703.c (DRM panel).
The SPI display driver uses the kernel's TinyDRM API and its driver is
drivers/gpu/drm/tiny/ili9225.c , but I can change to any other driver
if needed (eventually to the generic panel-mipi-dbi-spi).
Could rewriting the TinyDRM driver to a panel driver in
drivers/gpu/drm/panel/ help?
I also tried software rendering "softpipe" (disabled GPU in
device-tree) and it renders 7 fps on both systems. Thus, I suppose,
that some form of GPU acceleration is already used.
Mesa reports the same loaded GL-extensions on both systems and apart
from loaded .so files everything seems to be the same.
Best regards
Josef Lusticky
More information about the dri-devel
mailing list