[v4,0/5] software_isp: Implement DMABuf import for input buffers
mbox series

Message ID 20260521155906.120373-1-robert.mader@collabora.com
Headers show
Series
  • software_isp: Implement DMABuf import for input buffers
Related show

Message

Robert Mader May 21, 2026, 3:59 p.m. UTC
From the main commit:
In many cases we can import the GPU-ISP input buffer, a dmabuf from v4l2,
directly into EGL instead of mapping and uploading - i.e. copying - it.
This reduces memory bandwidth and CPU usage and can slightly improve
latency.

Notes: Previous iterations of these patches have already been tested on
various platforms, without known regressions and showing significant
improvements.

Changes in v4:
- Split out commit "debayer_egl: Sync output buffer after processing stats"
  into its own series and rebased this series on top:
  https://patchwork.libcamera.org/cover/26788/
- Added performance benchmarks
- Move dmabuf_import_failed_ variable to eGLImage, ensuring it gets reset.
- Added commit to ensure input buffer doesn't get mapped twice.

Changes in v3:
- Split up changes to createTexture2D() and eGLImage constructor
  into two commits.
- Added field to remember dmabuf import fails - and promote the relevant
  log to Info.
- Reordered and slightly extended commit message for "egl: Demote an
  error log to debug"
- Fixed some CI / linter errors

Changes in v2:
- Instead of adding parameters to createInputDMABufTexture2D(), remove
  them from createTexture2D instead.
- Use std::optional<DmaSyncer> to make the code easier to understand.
- Move error log level change into its own commit.

Robert Mader (5):
  egl: Add GL format parameter to eGLImage constructor
  egl: Remove some parameters from createTexture2D()
  debayer_egl: Implement dmabuf import for input buffers
  egl: Demote an error log to debug
  debayer_egl: Sync output buffer after processing stats

Robert Mader (5):
  egl: Add GL format parameter to eGLImage constructor
  egl: Remove some parameters from createTexture2D()
  egl: eGLImage: Add flag to remember dmabuf import fails
  libcamera: swstats_cpu: Take MappedFrameBuffer in processFrame()
  debayer_egl: Implement dmabuf import for input buffers

 include/libcamera/internal/egl.h              |  9 ++-
 .../internal/software_isp/swstats_cpu.h       |  2 +-
 src/libcamera/egl.cpp                         | 32 ++++++++---
 src/libcamera/software_isp/debayer_egl.cpp    | 55 ++++++++++++-------
 src/libcamera/software_isp/debayer_egl.h      |  2 +-
 src/libcamera/software_isp/swstats_cpu.cpp    | 13 +----
 6 files changed, 70 insertions(+), 43 deletions(-)