I’ve been working on various graphical snaps for Ubuntu Core, with the aim of creating solutions for digital kiosks and signage.
One issue I have encountered is dealing with GPUs: libGL and friends. Currently all my graphical snaps end up pulling in all of MESA to get GL working. However this is not very flexible:
- MESA supports most desktop chips quite well, but its support for embedded devices is far more limited
- in the embedded world, most vendors just supply a binary blob of working GPU driver (often a custom kernel to match that) and libGL combination.
This does imply GL drivers should live outside the application snap, but that raises the question: where should they live?
If the device requires a custom kernel, that will require a custom core snap for that device - so is it best for the GL drivers to be included in the core snap? Or a separate gl-drivers snap, somehow tied closely to that particular core, and using content interface to share the userspace drivers to the application snap?
I’m curious if there is any established thought on this problem.