smithay icon indicating copy to clipboard operation
smithay copied to clipboard

Anvil fails to start on Pinebook Pro, where connectors are associated with different drm device than renderer

Open ids1024 opened this issue 2 years ago • 2 comments

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.

ids1024 avatar Jul 26 '22 03:07 ids1024

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)

ids1024 avatar Jul 26 '22 05:07 ids1024

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.

ids1024 avatar Jul 27 '22 19:07 ids1024