Most of the poeple I know (myself included) have turned OpenCL off because it makes Fusion unusable (very unstable) but even simple testing did not show any major speed improvements, which for me as a compositor is where most of my time goes, waiting for Fusion to render
.
While I agree that F9's OpenCL everywhere implementation was a little premature, the actual implementation of the tools that were OpenCL accelerated in 6-7-8 (volumefog, defocus etc) were however pretty damn solid.
I suspect the strength of Resolves GPU integration is that it is totally integrated, when you start shuffling between CPU and GPU there is an overhead which is what can happen in Fusion. I understand that they have created the ability for OpenCL implementations to piggyback each other but if there is a non OpenCL node in between this cannot happen cleanly. I can playback 4K footage with numerous corrections and bits and bobs in Resolve in realtime. No chance of doing the same thing in Fusion. I'm not saying they are the same tool, but fundementally they are doing very similar things, applying mathematical operations to large sets of data.
Fundamentally, they're very different. Sure its just all pixels, but Fusion has to scale and deal with much more complex caching graphs, dependencies, multi-resoltion, multi-framerate, multiple formats and hundreds (and in some of my comps; thousands) of nodes the problem becomes much much more difficult than Resolves "Add 3 nodes with openCL effects". OH and arbitrary image channels.
Resolve has the luxury of only dealing with a fixed set of frames from the timeline in a fixed spatial domain.
Fusion *has* to be more flexible to account for the practically unlimited number of permutations you have when you combine ALL the openCL and non-openCL nodes, the different data types and not to mention (sometimes bizarre) user workflows.
Their internal requirements for data handling are VASTLY different.
I am in the process of implementing my own plugins using the SDK (for speed) which has been a real eye opener, and I am very impressed with Fusions well thought out implementation, but I guess the bottom line for a portion of us is that the OpenCL stuff just doesn't work and I've got a GTX 1080 sitting there not doing much at all when it could possibly be saving me time.
Thats really cool, Fusion needs more 3rd party developers! There's a bunch of talented people over at
http://www.steakunderwater.com that does Fuses and other SDK related dev work.
Have you considered writing your plugins as Fuses instead ? Fuses support OpenCL kernels natively which makes them REALLY REALLY fast in both execution (the tools are run-time compiled) and for processing. Not to mention cross-platform and portable.
JUNE recently released a fantastic noise generation tool as a Fuse using only openCL kernels, its well worth the $20 as you can look at all the code.
https://gumroad.com/l/FractalNoiseJust for the record, I don't disagree with that Fusion9's OpenCL wasn't as smooth as we all hoped, but I want to point out that when it comes to how Fusion and Resolve treats images are very different by design.
Fusion video tutorials : https://www.youtube.com/channel/UCTCeDas53OEcWcRujkQiwLg/videos?view_as=subscriber
Fusion Tools : https://github.com/statixVFX/stx_tools
Nuke 2 Fusion nodes : https://github.com/statixVFX/nuke2fusion