Ramblings on computers…

Weston frame buffer backend

Just over a week ago everyone’s favourite Xorg replacement, Weston, gained a frame buffer backend I put together as part of some university work. It was remarkably easy to write, since almost all of the code already existed in the DRM and RPI backends; I just needed to hook pixman up to /dev/fb0 and everything worked!

Weston’s code base was a pleasure to work on. Hopefully someone stuck on a frame buffer somewhere finds this work useful. Since I did this work, I also got the frame buffer backend working on FreeBSD (as part of the same university project), but haven’t had time to update, tidy up and submit my patches yet. They’re pretty hacky in (many) places.

Without further ado, a gratuitous flowery screenshot (taken using fbcat):

What is the reason that this can't work with OpenGL ES? I have an ARM Chromebook from Samsung, and this has an fbdev driver. I'd really like to run Weston on this thing with OpenGL ES acceleration. Would you happen to know what it would take to get this to happen?

I've fiddled with it a bit, and I can see that it's the call to eglInitialize() that fails when it's run on a separate VT. As far as I can see the OpenGL ES library for the Mali T-604 supports EGL, the kernel has DRM, and I think it supports KMS as well (VT switching is fast, perhaps a 0.5 second delay).

If your GPU can do OpenGL ES, and has DRM and GBM drivers, then you should use Weston’s DRM backend. The fbdev backend is only really intended for systems which don’t have hardware acceleration (or suitable drivers). The call to eglInitialize() is in Weston’s DRM backend, not its fbdev backend. fbdev doesn’t use EGL at all.

You should probably visit #wayland on Freenode. There are people there far more knowledgeable than me about EGL.