[Gegl-developer] GPU support
Richard H.
forums at gimpusers.com
Fri May 8 16:21:54 PDT 2009
Hello,
Not being a GEGL or OpenGL developer, I would nevertheless being interested
in how acceleration of filters etc. can basically work with OpenGL (with
matrix operations on buffers? Can you do other operations, too?) because I
always thought OpenGL was an API for accelerated (3D but also 2D, considering
it as a plane in 3D space) rendering, but not for calculating (like it is
required with many filters). Wouldn't it, from a technical view, be more
useful to implement CUDA (http://www.nvidia.com/cuda/) support? I heard that
there is a similar API for ATI. I also know that there is a GIMP plugin using
CUDA (it has won the first place of a CUDA challenge:
http://www.nvidia.co.uk/object/io_1222782056939.html).
As far as I have seen taking a quick look at the GEGL source code, the
hardest task seems to be changing the single-threaded algorithm
while (more_work) render();
to
for (i = 0; i < work_packets; i++)
create_thread(render_packets);
where the packets are rectangles.
This would introduce a parallelism which would allow to
1) use all CPUs (would be very useful too, especially if you don't have 3D
graphics acceleration available, but more than 1 CPU)
2) use CUDA to process the threads directly using GPU shaders (in parallel).
However, I have to say that I have no GEGL experience and little OpenGL and
CUDA experience, so maybe I have some wrong assumptions, so feel free to
correct me if I just wrote nonsense.
--
Richard H. (via www.gimpusers.com)
More information about the Gegl-developer
mailing list