Speed of image processing in GIMP has been a bit of a bottleneck for a long time. Now that GIMP is being gradually ported to a new hi-end core called GEGL it was about time the team started investigated GPU-side rendering and processing. And in fact this is what is happening now thanks to Google Summer of Code (GSoC) program.

The story started in 2009 with a GSoC project by Jerson Michael Perpetua who did initial work on GPU based rendering. Due to a number of reasons the code wasn't used in the main development branch and thus never made its way to any official GEGL release. But things are changing.

This year another GSoC student, Victor Oliveira, started a new project to implement OpenCL based rendering and processing on GPU in GEGL. His work is based on work by Jerson Michael, but introduces even more dramatic changes.

Unlike CUDA, a rather popular API for GPU based processing by NVidia, OpenCL is an open standard which is getting a lot of attention lately among free graphics projects. Darktable partially uses it for speeding up photo processing, Blender is getting it as part of new tile-based compositing, and LuxRender has a GPU based version that employs OpenCL. So it was an obvious choice.

Yesterday Victor published a rather verbose and technical review of his work so far. I encourage you to read it to get all the details. The bottom line: things already work, optimizations are required and more operations need to be ported to OpenCL.

This is a fairly complex project, and I don't think anybody expected a working, fine-tuned OpenCL support in GEGL withing mere few months. Still, it's a huge step forward.

Given existing plans, full use of OpenCL by GIMP shouldn't be expected until at least v3.0 which will be the first version of GIMP making a real use of GEGL. As usual, the joint GIMP/GEGL team is interested in getting more people involved to ensure that future comes sooner.