[libcamera-devel] [PATCH v3 00/11] libcamera: Add support for Fence
Jacopo Mondi
jacopo at jmondi.org
Wed Dec 1 00:36:23 CET 2021
Substantial changes from v2. the first of which is the rebase on top of
Laurent's UniqueFD v4 which greatly simplifies the interface to set/reset a
Fence.
Substantial changes compared to v2
Series tested with CTS, openCamera and CCA
I'm more happy than v2, most if not all of my concerns are solved, and the usage
of UniqueFD really clarify the ownership model.
Last concern is: all the handling of fences notification is done by
Request::prepare() and Fence is a really thin class whose sole purpose is to
define an interface that will not change when new fence mechanism will be
supported. Won't having the code to do so in Request::prepare() instead than
in the Fence itself kind of defeat that purpose ?
Thanks
j
v2->v3
- Documentation
- Fence:
- use UniqueFD
- drop Extensible
- Framebuffer:
- Add FrameBuffer::resetFence
-Request:
- do not overload addBuffer but use optional argument
- Remove Private::Status
- simplify prepare() by using a map of buffers to notifiers
- Add the prepared_ flag
- PipelineHandler:
- Simplify request preparation
- Android
- Use UniqueFD
v1->v2:
Major changes:
- removed notifiers and timers from Fence. A Fence is now an wrapper that owns
a file descriptor
- Add timers and notifiers to Request::Private and add the
Request::Private::prepare interface
Smaller changes:
- Expand Request::Private to move all internal fields
- Remove Fence move semantic. A Fence lives in a Framebuffer.
- A few minor patches on top
Jacopo Mondi (10):
libcamera: Print Timer identifier
libcamera: fence: Introduce Fence
libcamera: framebuffer: Add Fence to FrameBuffer
libcamera: request: Add Fence to Request::addBuffer()
test: fence: Add test for the Fence class
libcamera: pipeline_handler: Split request queueing
libcamera: pipeline: Introduce stopDevice()
libcamera: request: Add Request::Private::prepare()
libcamera: pipeline_handler: Prepare Request
android: Remove CameraWorker
Laurent Pinchart (1):
libcamera: request: Make Request class Extensible
include/libcamera/fence.h | 31 ++
include/libcamera/framebuffer.h | 4 +
include/libcamera/internal/framebuffer.h | 7 +
include/libcamera/internal/meson.build | 1 +
include/libcamera/internal/pipeline_handler.h | 9 +-
include/libcamera/internal/request.h | 64 +++
.../libcamera/internal/tracepoints/request.tp | 22 +-
include/libcamera/meson.build | 1 +
include/libcamera/request.h | 23 +-
src/android/camera_device.cpp | 46 +--
src/android/camera_device.h | 3 -
src/android/camera_request.cpp | 8 +-
src/android/camera_request.h | 6 +-
src/android/camera_stream.cpp | 10 +-
src/android/camera_worker.cpp | 129 ------
src/android/camera_worker.h | 70 ----
src/android/meson.build | 1 -
src/libcamera/base/event_dispatcher_poll.cpp | 3 +-
src/libcamera/base/timer.cpp | 4 +-
src/libcamera/fence.cpp | 108 +++++
src/libcamera/framebuffer.cpp | 66 +++
src/libcamera/meson.build | 1 +
src/libcamera/pipeline/ipu3/ipu3.cpp | 4 +-
.../pipeline/raspberrypi/raspberrypi.cpp | 4 +-
src/libcamera/pipeline/rkisp1/rkisp1.cpp | 4 +-
src/libcamera/pipeline/simple/simple.cpp | 4 +-
src/libcamera/pipeline/uvcvideo/uvcvideo.cpp | 4 +-
src/libcamera/pipeline/vimc/vimc.cpp | 4 +-
src/libcamera/pipeline_handler.cpp | 107 ++++-
src/libcamera/request.cpp | 387 ++++++++++++++----
test/fence.cpp | 343 ++++++++++++++++
test/meson.build | 1 +
32 files changed, 1110 insertions(+), 369 deletions(-)
create mode 100644 include/libcamera/fence.h
create mode 100644 include/libcamera/internal/request.h
delete mode 100644 src/android/camera_worker.cpp
delete mode 100644 src/android/camera_worker.h
create mode 100644 src/libcamera/fence.cpp
create mode 100644 test/fence.cpp
--
2.33.1
More information about the libcamera-devel
mailing list