a small remark on glx:
it seems you can't switch the drawable (window or pbuf) without switching the rendering context. the call is
Bool glXMakeCurrent( Display *dpy, GLXDrawable drawable, GLXContext ctx )
this seems to be slow even when the context is the same as current.
bummer..
tom