#ifndef __GEGL_BUFFER_CL_ITERATOR_H__ #define __GEGL_BUFFER_CL_ITERATOR_H__ #include "gegl-buffer.h" #include "opencl/gegl-cl.h" #define GEGL_CL_NTEX 16 #define GEGL_CL_BUFFER_MAX_ITERATORS 6 enum { GEGL_CL_BUFFER_READ = 1, GEGL_CL_BUFFER_WRITE = 2, GEGL_CL_BUFFER_AUX = 3 }; typedef struct GeglBufferClIterator { gint n; size_t size [GEGL_CL_BUFFER_MAX_ITERATORS][GEGL_CL_NTEX]; /* length of current data in pixels */ cl_mem tex [GEGL_CL_BUFFER_MAX_ITERATORS][GEGL_CL_NTEX]; GeglRectangle roi [GEGL_CL_BUFFER_MAX_ITERATORS][GEGL_CL_NTEX]; } GeglBufferClIterator; gint gegl_buffer_cl_iterator_add (GeglBufferClIterator *iterator, GeglBuffer *buffer, const GeglRectangle *roi, const Babl *format, guint flags, GeglAbyssPolicy abyss_policy); gint gegl_buffer_cl_iterator_add_2 (GeglBufferClIterator *iterator, GeglBuffer *buffer, const GeglRectangle *roi, const Babl *format, guint flags, gint left, gint right, gint top, gint bottom, GeglAbyssPolicy abyss_policy); gboolean gegl_buffer_cl_iterator_next (GeglBufferClIterator *iterator, gboolean *err); GeglBufferClIterator *gegl_buffer_cl_iterator_new (GeglBuffer *buffer, const GeglRectangle *roi, const Babl *format, guint flags, GeglAbyssPolicy abyss_policy); #endif