I have a complex CoreImage pipeline which I'm keen to optimise. I'm aware that calling back to the CPU can have a significant impact on the performance - what is the best way to find out where this is happening?
Hello,
To better understand Core Image performance bottleneck(s) in general we recommend profiling with Instruments using the Metal System Trace or Game Performance templates.
To investigate Core Image performance in particular, check out Discover Core Image debugging techniques. You'll want to generate a Core Image graph to determine the most expensive stages of your image processing pipeline.
@Etresoft's reference is also good but somewhat out of date (being in the reference library).
You may also want to consider capturing your GPU workload i.e. Core Image kernels. This provides some insight into how well a Core Image kernel is performing on the GPU but lacks source access so is tricky to optimize beyond inferring behavior from GPU counters.
Lastly, ProRAW assets are generally large and time consuming to process so anything you can do to efficiently stage the work e.g. delaying processing immediately after capture, is expected to help.