In order to prepare to handle synchronization fences at Request queueing time, split the PipelineHandler::queueRequest() function in two, by creating a list of waiting requests and introducing the doQueueRequest() function that queues requests to the device in the order the pipeline has received them. Signed-off-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
103 lines
1.8 KiB
Plaintext
103 lines
1.8 KiB
Plaintext
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
|
/*
|
|
* Copyright (C) 2020, Google Inc.
|
|
*
|
|
* request.tp - Tracepoints for the request object
|
|
*/
|
|
|
|
#include <libcamera/internal/request.h>
|
|
|
|
#include <libcamera/framebuffer.h>
|
|
|
|
TRACEPOINT_EVENT_CLASS(
|
|
libcamera,
|
|
request,
|
|
TP_ARGS(
|
|
libcamera::Request *, req
|
|
),
|
|
TP_FIELDS(
|
|
ctf_integer_hex(uintptr_t, request, reinterpret_cast<uintptr_t>(req))
|
|
ctf_integer(uint64_t, cookie, req->cookie())
|
|
ctf_enum(libcamera, request_status, uint32_t, status, req->status())
|
|
)
|
|
)
|
|
|
|
TRACEPOINT_EVENT_INSTANCE(
|
|
libcamera,
|
|
request,
|
|
request_construct,
|
|
TP_ARGS(
|
|
libcamera::Request *, req
|
|
)
|
|
)
|
|
|
|
TRACEPOINT_EVENT_INSTANCE(
|
|
libcamera,
|
|
request,
|
|
request_destroy,
|
|
TP_ARGS(
|
|
libcamera::Request *, req
|
|
)
|
|
)
|
|
|
|
TRACEPOINT_EVENT_INSTANCE(
|
|
libcamera,
|
|
request,
|
|
request_reuse,
|
|
TP_ARGS(
|
|
libcamera::Request *, req
|
|
)
|
|
)
|
|
|
|
TRACEPOINT_EVENT_INSTANCE(
|
|
libcamera,
|
|
request,
|
|
request_queue,
|
|
TP_ARGS(
|
|
libcamera::Request *, req
|
|
)
|
|
)
|
|
|
|
TRACEPOINT_EVENT_INSTANCE(
|
|
libcamera,
|
|
request,
|
|
request_device_queue,
|
|
TP_ARGS(
|
|
libcamera::Request *, req
|
|
)
|
|
)
|
|
|
|
TRACEPOINT_EVENT_INSTANCE(
|
|
libcamera,
|
|
request,
|
|
request_complete,
|
|
TP_ARGS(
|
|
libcamera::Request::Private *, req
|
|
)
|
|
)
|
|
|
|
TRACEPOINT_EVENT_INSTANCE(
|
|
libcamera,
|
|
request,
|
|
request_cancel,
|
|
TP_ARGS(
|
|
libcamera::Request::Private *, req
|
|
)
|
|
)
|
|
|
|
TRACEPOINT_EVENT(
|
|
libcamera,
|
|
request_complete_buffer,
|
|
TP_ARGS(
|
|
libcamera::Request::Private *, req,
|
|
libcamera::FrameBuffer *, buf
|
|
),
|
|
TP_FIELDS(
|
|
ctf_integer_hex(uintptr_t, request, reinterpret_cast<uintptr_t>(req))
|
|
ctf_integer(uint64_t, cookie, req->_o<libcamera::Request>()->cookie())
|
|
ctf_integer(int, status, req->_o<libcamera::Request>()->status())
|
|
ctf_integer_hex(uintptr_t, buffer, reinterpret_cast<uintptr_t>(buf))
|
|
ctf_enum(libcamera, buffer_status, uint32_t, buf_status, buf->metadata().status)
|
|
)
|
|
)
|