[libcamera-devel] [PATCH 2/2] test: fence: Signal fence once
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Mon Dec 13 16:24:46 CET 2021
Hi Jacopo,
Thank you for the patch.
On Mon, Dec 13, 2021 at 03:51:43PM +0100, Jacopo Mondi wrote:
> The unit test associates a fence with a framebuffer and makes sure
> the fence is correctly signalled.
>
> Once a fence is correctly signalled, it is released by the core, and the
> underlying file descriptor closed.
>
> The unit test however tries to write on the fence file descriptor every
> time the designated Request is queued, and error which is now visible
s/and/an/
> as the return value of the fence signalling write() is checked.
>
> Fix that by associating a fence with a framebuffer only once.
>
> Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
> ---
> test/fence.cpp | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/test/fence.cpp b/test/fence.cpp
> index d2865398784e..524db2a10757 100644
> --- a/test/fence.cpp
> +++ b/test/fence.cpp
> @@ -56,6 +56,7 @@ private:
> Stream *stream_;
>
> bool expectedCompletionResult_ = true;
> + bool setFence_ = true;
>
> unsigned int completedRequest_;
>
> @@ -193,7 +194,7 @@ void FenceTest::requestRequeue(Request *request)
>
> request->reuse();
>
> - if (cookie == signalledRequestId_) {
> + if (cookie == signalledRequestId_ && setFence_) {
> /*
> * The second time this request is queued add a fence to it.
> *
> @@ -257,6 +258,7 @@ void FenceTest::signalFence()
> if (ret != sizeof(value))
> cerr << "Failed to signal fence" << endl;
>
> + setFence_ = false;
> dispatcher_->processEvents();
> }
>
> @@ -316,7 +318,7 @@ int FenceTest::run()
> Timer timer;
> timer.start(1000);
> while (timer.isRunning() && expectedCompletionResult_) {
> - if (completedRequest_ == signalledRequestId_)
> + if (completedRequest_ == signalledRequestId_ && setFence_)
A bit of a hack, but I suppose it works. The test is hard to read,
there's room for improvement (and possibly a race condition or two), but
that's not urgent.
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
Tested-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> /*
> * signalledRequestId_ has just completed and it has
> * been re-queued with a fence. Start the timer to
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list