[libcamera-devel] [PATCH v2 4/6] pipeline: raspberrypi: Add IPA call tracepoints
Paul Elder
paul.elder at ideasonboard.com
Wed Oct 28 11:31:49 CET 2020
Emit tracepoints for IPA calls in the raspberrypi pipeline handler, to
allow profiling of IPA calls.
Signed-off-by: Paul Elder <paul.elder at ideasonboard.com>
---
New in v2
I was getting compiler complaints when I passed direct strings to the
tracepoint without casting... I wasn't getting it in tests...
---
src/libcamera/pipeline/raspberrypi/raspberrypi.cpp | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
index 0a5a7288..2de60d3d 100644
--- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
+++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
@@ -31,6 +31,7 @@
#include "libcamera/internal/ipa_manager.h"
#include "libcamera/internal/media_device.h"
#include "libcamera/internal/pipeline_handler.h"
+#include "libcamera/internal/tracepoints.h"
#include "libcamera/internal/utils.h"
#include "libcamera/internal/v4l2_controls.h"
#include "libcamera/internal/v4l2_videodevice.h"
@@ -1240,6 +1241,8 @@ int RPiCameraData::configureIPA(const CameraConfiguration *config)
void RPiCameraData::statsMetadataComplete(uint32_t bufferId, const ControlList &controls)
{
+ LIBCAMERA_TRACEPOINT(ipa_call_finish, (char *)"rpi", (char *)"signalStatReady");
+
if (state_ == State::Stopped)
handleState();
@@ -1273,6 +1276,8 @@ void RPiCameraData::statsMetadataComplete(uint32_t bufferId, const ControlList &
void RPiCameraData::runIsp(uint32_t bufferId)
{
+ LIBCAMERA_TRACEPOINT(ipa_call_finish, (char *)"rpi", (char *)"signalIspPrepare");
+
if (state_ == State::Stopped)
handleState();
@@ -1406,6 +1411,7 @@ void RPiCameraData::ispOutputDequeue(FrameBuffer *buffer)
* application until after the IPA signals so.
*/
if (stream == &isp_[Isp::Stats]) {
+ LIBCAMERA_TRACEPOINT(ipa_call_start, (char *)"rpi", (char *)"signalStatReady");
ipa_->signalStatReady(RPi::BufferMask::STATS | static_cast<unsigned int>(index));
} else {
/* Any other ISP output can be handed back to the application now. */
@@ -1658,7 +1664,9 @@ void RPiCameraData::tryRunPipeline()
* queue the ISP output buffer listed in the request to start the HW
* pipeline.
*/
+ LIBCAMERA_TRACEPOINT(ipa_call_start, (char *)"rpi", (char *)"signalQueueRequest");
ipa_->signalQueueRequest(request->controls());
+ LIBCAMERA_TRACEPOINT(ipa_call_finish, (char *)"rpi", (char *)"signalQueueRequest");
/* Ready to use the buffers, pop them off the queue. */
bayerQueue_.pop();
@@ -1677,6 +1685,7 @@ void RPiCameraData::tryRunPipeline()
ipa::rpi::IspPreparePayload ispPrepare;
ispPrepare.embeddedbufferId_ = RPi::BufferMask::EMBEDDED_DATA | embeddedId;
ispPrepare.bayerbufferId_ = RPi::BufferMask::BAYER_DATA | bayerId;
+ LIBCAMERA_TRACEPOINT(ipa_call_start, (char *)"rpi", (char *)"signalIspPrepare");
ipa_->signalIspPrepare(ispPrepare);
}
--
2.27.0
More information about the libcamera-devel
mailing list