To be fair, even a while back it became pretty easy to use fbdev (memory mapped), and Cairo to draw on it.
For event handling eventfd (and now libinput) also became quite a bit easier to use as well so many many years ago I decided to cut out the middleman (direcfb) and do it with these instead.