<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>Dear GStreamers,</div><div><br></div><div>I'm thinking of writing an OpenCL plugin that will</div><div>add an arbitrary 2d OpenCl kernel into the pipeline;<br></div><div>possible applications are edge detection, debayering...</div><div><br></div><div>Is there any existing element I could use as a template?</div><div>One twist is that GPUs give the highest performance in asynchronous mode, so</div><div>the element will need to pull buffers from upstream, schedule them to</div><div>the GPU, and only push the processed buffers downstream when the GPU</div><div> completes.  Also, it would be good to have the option of keeping the memory</div><div>on the device, in order to apply a series of kernels without costly move</div><div>to host and back to device.<br></div><div><br></div><div>Simple use case will be a kernel stored in a single user-specified text file that will be passed</div><div>to the plugin, compiled for a specified device, and then executed on the buffers.</div><div>For more complex situations, plugin could be sub-classed with multiple kernels.<br></div><div><br></div><div>Future work could involve exploring other languages such as SYCL, which some say is the future</div><div>of open source compute:  <br></div><div><br></div><div><a href="https://en.wikipedia.org/wiki/SYCL">https://en.wikipedia.org/wiki/SYCL</a></div><div><br></div><div><a href="https://www.youtube.com/watch?v=ZTq8wKnVUZ8">https://www.youtube.com/watch?v=ZTq8wKnVUZ8</a></div><div>(But Mommy, I don't want to use CUDA ! )<br></div><div><br></div><div>Any advice or guidance would be greatly appreciated.</div><div><br></div><div>Many Thanks,</div><div>Aaron<br></div><div><br></div><div><br></div></div></div></div></div>