Phoronix: Enesim: A Flexible, Extensible Graphics Framework
Earlier this month I wrote about the Fog Framework, a high-performance graphics library alternative to the well-known Cairo. The principal developer of another open-source library, Enesim, has since written in about this project that works with the Enlightenment Foundation Libraries and focuses upon flexibility and extensibility...
Choice is good and all, but... what's the OpenCL backend about? How does that work?
You use OpenCL to do the compositing/rendering/whatever and then push it to an OpenGL texture or to a framebuffer?
Not sure what its advantages are.
For that matter, I'm not sure if OpenGL has any advantages over something more primitive like Xlib for 2d operations. The latency (especially for proprietary drivers) is pretty huge on OpenGL commands, especially stuff like shaders.
It's to the point that my Intel 965GM chipset in my 3-year old laptop can get more responsive 2d graphics (web browsing, GTK+ and Qt4 GUI apps, etc) than my top of the line HD7970. Of course, when it comes to serious workloads like GPU video encoding and Unigine games, the 7970 absolutely trounces the little IGP -- but the IGP definitely has low graphics pipeline latency in its favor. The UI just looks so sleek (even with a compositor like mutter or cinnamon) that the only way I've been able to reproduce this sleekness on a discrete GPU is to run Windows. Not sure why, but big discrete GPUs + Linux have always equalled slow 2D for me.
The GPGPU support (OpenCL / CUDA / DirectCompute) is good for things like gradient calculation and path triangulation. That is what Direct2D indirectly uses for its path rendering, and is what NVIDIA's GL extension (forget the name of it) uses. More Free/Open graphics libraries would likely use them if Linux actually had a worthwhile level of OpenCL support already.
Oke, now we have a little much of those good looking libs:
- Enesim (C++, OpenGL backend)
- Skia (C++, google and had OpenGL backends(right?))
- Cairo (C, bindings to different languages and has OpenGL backends)
- Fog (C++, no OpenGL backend)
- Azure (C++? firefox, OpenGL backend (or Direct2D))
And the big ass frameworks
- GTK (C, uses Cairo?)
- Qt (C++, Own stuff, in Qt 4 CPU based and hardware based for some parts, depends on what you use. In Qt 5 mostly GPU accelerated)
Did i miss a few other frameworks?
A comparison (not even in performance) in features of each is starting to become something i would like to see sometime.