mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-11-07 01:53:24 +09:00
kwin never creates an EGL window surface. Its undefined libgbm symbols are seventeen entry points whose whole purpose is to hand out gbm_bo fds, and those fds are what Anland's display producer sends to the daemon on the phone - so the question "whose pixels are on the screen" is answered by "who allocated the bo", and today that is Mesa. The client can be loaded, initialized and rendering through glvnd with no window surface ever created, which is exactly what was measured. This is a complete GBM: every public entry point of the vendored Mesa header, with the semantics a compositor relies on - fds the caller owns, real mmap with refcounting, a swapchain that refuses to hand out a busy buffer, import by fd, and teardown that leaves no descriptor or mapping behind. The buffers come from the display host's frames; where there is no host, the device allocates from the dma-buf heap, falling back to an uncached heap and then to memfd, so the library stands on its own. The vendored gbm.h is Mesa's, verbatim: the entry points are the ABI, not our idea of it.