A year or so ago I was messing around with developing a player program. For the GUI, I made a output target for the GD library to write to the empeg memory mapped display buffer. It works pretty well, and has all of the basic (shapes, text, fonts, etc) features one might want for writing to a 128x32 display.

I can dig up the source file and diffs against GD in a couple of days if anyone is interested.

Ultimately I wanted to make a window server, then all my apps (player, CPU meter, stock ticker, whatever) would build their window images and send them to the server which would composite them as appropriate. I never actually got that far though ;)