Hi Utkarsh,
I'm not an expert, but here's my take on this.  You should probably start by
examining GeglBufferIterators (gegl/gegl/buffer/gegl-buffer-iterator.c) and
how they are used by GeglProcessors (gegl/gegl/process/processor.c).  While
you're at it, it would also help if you can study all graph-related
constructs (gegl/gegl/graph/), especially the parts on GeglVisitors
(gegl/gegl/graph/gegl-visitor.c) and GeglVisitables
(gegl/gegl/graph/gegl-visitable.c) and their descendants (i.e. GeglNodes and
GeglPads).  I suspect that these are the parts where the bulk of
multi-threading should be implemented.

As to your project's relation to my work, I'm currently looking into OpenGL
thread-safety. One solution that I found is to create a hidden OpenGL
context after initialization and create one shared OpenGL context per
thread.  The other (much more attractive) solution is to do all OpenGL
operations in a single rendering thread.  Threads that require OpenGL
operations will 'enqueue' their operations on the rendering thread.

The latter solution is better, imho, because context switching is both
costly and complex.

Regards,
Daerd
_______________________________________________
Gegl-developer mailing list
[email protected]
https://lists.XCF.Berkeley.EDU/mailman/listinfo/gegl-developer

Reply via email to