Hi Victor,

Thank you for clarifying, I was on the right track but didn't have a good 
example to compare against when using the gegl_buffer_get and gegl_buffer_set 
functions. I now have the desired results I need.

As for the tiling, I understand the reasoning behind the need for such an 
architecture, but for the purposes of this tutorial it would be better to have 
the participants work on a whole contiguous chunk first, and let them 
understand the need for tiling as they advance and how they could perhaps 
optimize the tiling operations in GEGL for OpenCL. Once the tutorial is 
underway, and we have a better understanding of the operations, we can 
certainly discuss on such improvements for the OpenCL side.

Thank you,
And Best Regards,
Adel

From: victormath...@gmail.com
Date: Mon, 19 Oct 2015 16:05:49 -0700
Subject: Re: [Gegl-developer] OpenCL support
To: ade...@hotmail.com
CC: gegl-developer-list@gnome.org

Hi Adel,
GEGL is a tiled engine and there's reasons for that, such as being able to 
manipulate large images that would use too much memory otherwise. Because of 
that, tiles are not contiguous in memory so there's no way of accessing this 
data without an extra copy.
For that, you would use:
- gegl_buffer_get (http://www.gegl.org/api.html#gegl_buffer_get) to copy the 
geglbuffer image data to a contiguous memory chunk of yours- do your 
processing- gegl_buffer_set to update the buffer with the new data
Because that is an expensive copying operation we prefer that filters use the 
iterator unless global access to the image data is required in the filter.
If you give a look at motion-blur-zoom.c, it does something like that (though 
it doesn't use CL).
Hope that clears it up, let me know if you have any more questions.Victor
On Tue, Oct 13, 2015 at 10:14 AM, Adel Johar <ade...@hotmail.com> wrote:
Hi Victor,
 
I’m currently trying to help Vincent out with the development of the tutorial, 
though I’ve hit a bit of a snag. Based on what I’ve seen from an old blog post 
of yours (and from code snippets from the current source codes), I understand 
that an iterator is used to iterate through the GEGL buffer to extract tiles 
and to run the OpenCL kernel on each tile. Do correct me if I’m wrong, but at 
this point it seems that an OpenCL kernel is called to operate on one tile at a 
time as the iterator moves the buffer from one tile to another.
 
As part of the tutorial, rather than integrating the kernels directly into the 
GEGL library, I believe it would be more beneficial if those who partake in the 
tutorial to write their own host code as well. I was hoping to inquire on a 
more detailed explanation on how the image data can be extracted from the GEGL 
Buffer as a whole rather than as tiles through an iterator; whereby 
participants can then look at improving the tiling process and see how such 
improvements can be integrated into the GEGL library. While it would certainly 
be easier to integrate the kernels directly into the GEGL library, as a 
starting step it would be good if the users of the tutorial can learn both the 
kernel and host side of OpenCL.
 
Thank you,
And Best Regards,
Adel
 
 

                                          
_______________________________________________
gegl-developer-list mailing list
List address:    gegl-developer-list@gnome.org
List membership: https://mail.gnome.org/mailman/listinfo/gegl-developer-list

Reply via email to