[libcamera-devel] [PATCH 2/2] test: fence: Signal fence once

Umang Jain umang.jain at ideasonboard.com
Mon Dec 13 16:42:14 CET 2021


Hi Jacopo,

On 12/13/21 8:54 PM, Laurent Pinchart wrote:
> 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>


Reviewed-by: Umang Jain <umang.jain at ideasonboard.com>

>
>>   			/*
>>   			 * signalledRequestId_ has just completed and it has
>>   			 * been re-queued with a fence. Start the timer to


More information about the libcamera-devel mailing list