OpenCL Is Coming To The GIMP Via GEGL

With OpenCL, tasks like a brightness and contrast adjustments to an image can be offloaded to a GPU or multi-core CPU using this Khronos compute language. In a test of the brightness-contrast filter in OpenCL, 483 milliseconds was needed when on the NVIDIA GPU in OpenCL while it took 526 milliseconds on the CPU without OpenCL. Most of the 483 milliseconds was spent transferring data to/from the GPU memory.
The student developer behind this OpenCL GEGL work wrote a status update in this blog post. "Results so far show that using OpenCL to speed up Gegl is feasible and very interesting, thought still there is some challenges to be tackled, the tiled structure of Gegl allows a lot of optimizations."
Right now the OpenCL work for GEGL is living in this branch on GNOME.org.
Of course, the big problem is that the open-source Linux graphics drivers don't yet support OpenCL. There's work in this direction over Gallium3D via another Google Summer of Code project, but it's not yet ready for end-users nor will it likely be anytime soon. Those looking to use OpenCL on Linux are required to use the binary NVIDIA or AMD Catalyst Linux drivers and/or to install the Intel OpenCL SDK.
GEGL is the Generic Graphics Library that's been in development for over a decade and only recently has its usage been ramped up by GIMP. Beyond this library allowing advancements like OpenCL support, it also supports higher bit-depth images than supported otherwise by GIMP, non-destructive editing, and has other advantages too. There's an external API to GEGL that can implement this graphics library beyond just the GIMP too. More GEGL library details can be found at GEGL.org.
51 Comments