[0/5] software_isp: debayer_cpu: Add multi-threading support
mbox series

Message ID 20260216190204.106922-1-johannes.goede@oss.qualcomm.com
Headers show
Series
  • software_isp: debayer_cpu: Add multi-threading support
Related show

Message

Hans de Goede Feb. 16, 2026, 7:01 p.m. UTC
Hi All,

The QCM2290 SoC used on the Arduino Uno-Q seems to have a very weak GPU(1),
so weak that it is barely faster then a single CPU core.

This has made me code-up the long envisioned multi-threading support
for the CPU softISP :)

Benchmark results for the Uno-Q + IMX219 running at 3280x2464 -> 3272x2464:

1 thread :  147ms / frame, ~6.5  fps
2 threads:   81ms / frame, ~12   fps
3 threads:   66ms / frame, ~14.5 fps
GPU:        130ms / frame, ~7,5  fps
GPU 0-copy: 110ms / frame, ~9.5  fps (requires pipeline + camss hacks)
GPU lite:    85ms / frame, ~12   fps (CCM, contrast and gamma disabled)

Regards,

Hans

1) If the GPU really is this weak needs to be investigated more

Hans de Goede (5):
  software_isp: swstats_cpu: Move accumulator storage out of the class
  software_isp: debayer_cpu: Add per render thread data
  software_isp: debayer_cpu: Group innerloop variables together
  software_isp: debayer_cpu: Select process inner loop by function
    pointer
  software_isp: debayer_cpu: Add multi-threading support

 .../internal/software_isp/swstats_cpu.h       |  29 ++--
 src/libcamera/software_isp/debayer_cpu.cpp    | 131 ++++++++++++------
 src/libcamera/software_isp/debayer_cpu.h      |  44 ++++--
 src/libcamera/software_isp/swstats_cpu.cpp    |  65 ++++++---
 4 files changed, 180 insertions(+), 89 deletions(-)