Back in November we reported that Victor Oliveira got a contract with AMD to implement a basic working GPU-side processing in GIMP based on GEGL. Today Victor has some results to share.

As a former Google Summer of Code 2011 student for GIMP/GEGL organizations who worked on OpenCL-driven support for GPU-side processing of images Victor was a perfect fit for the project.

Soon after the initial announcement all the work was moved to Github, and with the current snapshot of modified GEGL and a regular unstable version of GIMP you already can load an image to GPU and apply brightness/contrast GEGL operation on GPU.

For that you need:

a GPU that supports OpenCL;

a build of GEGL from the repository at Github;

a recent unstable version of GIMP.

Once you have them, all you have to do is to enable GEGL-based projection in GIMP 2.7.x and, at your choice, either use regular Brightness-Contrast tool with the “Use GEGL” checkbox enabled in the Color menu, or apply this operation with the experimental GEGL operation tool. The project is currently missing ready to use builds, but let's see if Partha.com is going to take care of that.

The OpenCL-based brightness/contrast operation is currently ca. 8 times faster than the non-accelerated version in regular GEGL. Victor reports that even more speedups are possible, if you consider a chain of operators running on the GPU.

What's more important is that there already is an infrastructure for point operations such as compositing and filters, so adding more features on top of that should be possible now. You can also do some common color conversions on the GPU (though not between color spaces such as LAB and XYZ yet).

There still are some basic things missing such as a way to share data in the GPU between operators which is what Victor is currently working on. Besides, some specifics of how GEGL works need to be revisited.

GPU-based rendering and processing is probably one of the most exciting latest GIMP related projects. It is certainly going to have a huge impact on your workflows.