[libcamera-devel] [PATCH v3 00/11] IPU3 Debug Improvements
Kieran Bingham
kieran.bingham at ideasonboard.com
Thu Mar 25 14:42:20 CET 2021
Ok, so this is only partially a v3. Some of these patches were part of
the other series at v2, so this one got bumped.
Anyway, here's the remainder of my current patches that were developed
while investigating the reliability of the IPU3. Many of which I believe
are worthy for integration and discussion.
They're somewhat of an unrelated bunch, but rather than post
individually, they may as well be grouped together in the form of
'general fixups and improvements', and hopefully these help towards
improving general maintenance, but they're not specifically IPU3.
...
The IPC Proxy is extended to have a state machine to go further than
simply tracking a running_ boolean.
The Request object is no longer friends with a buffer, and is extended
to support sequence numbers, and printing as a string. The request
canary is promoted away from RFC as I feel it has real benefit, but it
can still be considered optional.
The Camera class now validates requests are completed in the correct
state, and adds an assertion to guarantee that all pipeline handlers
complete all requests when they are stopped. The state machine
validation is also extended to report which function was responsible for
the call in the event of a failed state check, as this is key
information for determining what failure occured.
Finally, some improvements to the IPU3 Frames class tidy things up and
add guarantees to ensure we correctly match resources with a FrameInfo
when required.
Kieran Bingham (11):
utils: ipc: proxy: Track IPA with a state machine
libcamera: buffer: Break friendship with Request
libcamera: request: Provide a sequence number
libcamera: request: Add a toString()
libcamera: request: A request canary
libcamera: camera: Validate requests are completed in Running state
libcamera: camera: Report function which fails access control
libcamera: camera: Extend with a Stopping state
libcamera: camera: Assert pipelines complete all requests
libcamera: pipeline: ipu3: frames: Fail if the FrameInfo can't be
found
libcamera: pipeline: ipu3: frames: Use the request sequence
include/libcamera/buffer.h | 1 -
include/libcamera/internal/pipeline_handler.h | 5 +-
include/libcamera/request.h | 7 ++
src/libcamera/camera.cpp | 77 +++++++++++++------
src/libcamera/pipeline/ipu3/frames.cpp | 10 +--
src/libcamera/pipeline/ipu3/frames.h | 1 -
src/libcamera/pipeline_handler.cpp | 19 +++++
src/libcamera/request.cpp | 68 +++++++++++++---
.../module_ipa_proxy.cpp.tmpl | 8 +-
.../module_ipa_proxy.h.tmpl | 8 +-
.../libcamera_templates/proxy_functions.tmpl | 7 +-
11 files changed, 165 insertions(+), 46 deletions(-)
--
2.25.1
More information about the libcamera-devel
mailing list