Which is what I'm saying, without crappy workarounds and knowing where stuff is located (since it's not standardized) is a pita and doesn't work at all if you haven't invested a lot of time in figuring a working workaround out. It's like X11 which basically works but is crappy as hell and anyone wants to get rid of it except a few folks that are conservative (read "with down syndrome") who like it.
I really can't come up with a legitimate reason something like this: https://github.com/mirrors/linux/blo...o/skeletonfb.c
cannot just be extended to say: .../drivers/video/skeletonGL.c[/url]
so that vendors could just write one good set of drivers and userspace would have a single, solid, simple API to deal with
you get /dev/GL[0-9] and things just work like they do with /dev/fb[0-9]
It could turn Xorg to a relic, with xfbdev being all that is required for X and GLX. The framebuffer already provides device specific functions for things like copyarea, blit, etc... If a device specific version is not provided there is a generic implementation. Now if you extend the framebuffer with GL extensions, the same could be accomplished for GL functions using Fabrice Bellard's TinyGL as the generic implementation fallbacks.
This can significantly reduce desktop startup time compared to Xorg (my Intel cards takes 4-10 seconds to initialize with Xorg vs ~0.2s with xfbdev) One other simple thing that is missing from the kernel is automatic resolution and bpp for fb devices (its only ~10-20 LOC to implement)
For these kinds of things, it is imperitive to ask why these things were separated in the first place and reevaluate base on current conditions.
Afaik today only one GL implementation can be used at a time, the one which last created the /usr/lib/libGL.so, if you wanna use another implementation you have to run some filesystem utility to remove/overwrite the current GL implementation at /usr/lib/libGL.so (say the nouveau one) with another driver (say Nvidia's proprietary one).
The new ABI allows many drivers to coexist in peace and the runtime is agnostic of which drivers exist in the OS and chooses which driver to use without any hacks whatsover, e.g. you can have in the same application window a GL context running on nouveau and the other one running on Nvidia's proprietary driver. Not that you need this, it just shows that the infight between GL drivers should be over, plus some provisions for future non-GL based solutions.
But since it's not final yet, we don't know exactly what it will be.
Plan9 should be able to run both with its namespacing. I'm not sure if Linux's implementation is as thorough.