smithay
smithay copied to clipboard
Anvil fails to start on Pinebook Pro, where connectors are associated with different drm device than renderer
It took a bit of confusing to figure out what's going on here. It turns out /dev/dri/card0
and /dev/dri/renderD128
are provided by the panfrost
driver. But drm_info
doesn't even show card0
, only /dev/dri/card1
, provided by the rockchip
driver.
Anvil crashes because primary_gpu()
chooses card1
as the GPU, but finds no render node associated with it.
I guess it needs to render with card0
and display on the outputs from card1
. I don't know if there are any subtle complexities to how that has to be handled.
It seems the display controller being separate is standard for this sort of SoC:
Like other embedded IP cores for 3D rendering acceleration, the Mali GPU does not include display controllers driving monitors, in contrast to common desktop video cards. Instead, the Mali ARM core is a pure 3D engine that renders graphics into memory and passes the rendered image over to another core to handle display.
https://en.wikipedia.org/wiki/Mali_(GPU)
Apparently EGL_EXT_device_drm_render_node
should be implemented by Mesa for split renderer/display controller setups like this, but isn't currently: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5591.