[libcamera-devel,v8,11/17] lc-compliance: Move buffer allocation to separate function
diff mbox series

Message ID 20210824195636.1110845-12-nfraprado@collabora.com
State Superseded
Headers show
Series
  • lc-compliance: Add test to queue more requests than hardware depth
Related show

Commit Message

Nícolas F. R. A. Prado Aug. 24, 2021, 7:56 p.m. UTC
Move buffer allocation to its own function and with an optional count
argument so tests can specify how many buffers to allocate. When count
is omitted, allocate MinimumRequests buffers.

Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>

---

Changes in v8:
- Made SimpleCapture::allocateBuffers() a single function with an optional parameter

Changes in v5:
- New

 src/lc-compliance/capture_test.cpp   |  8 +++++++-
 src/lc-compliance/simple_capture.cpp | 15 ++++++++++-----
 src/lc-compliance/simple_capture.h   |  1 +
 3 files changed, 18 insertions(+), 6 deletions(-)

Comments

Paul Elder Dec. 1, 2022, 11:29 a.m. UTC | #1
On Tue, Aug 24, 2021 at 04:56:30PM -0300, Nícolas F. R. A. Prado wrote:
> Move buffer allocation to its own function and with an optional count
> argument so tests can specify how many buffers to allocate. When count
> is omitted, allocate MinimumRequests buffers.
> 
> Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>

Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>

> 
> ---
> 
> Changes in v8:
> - Made SimpleCapture::allocateBuffers() a single function with an optional parameter
> 
> Changes in v5:
> - New
> 
>  src/lc-compliance/capture_test.cpp   |  8 +++++++-
>  src/lc-compliance/simple_capture.cpp | 15 ++++++++++-----
>  src/lc-compliance/simple_capture.h   |  1 +
>  3 files changed, 18 insertions(+), 6 deletions(-)
> 
> diff --git a/src/lc-compliance/capture_test.cpp b/src/lc-compliance/capture_test.cpp
> index 52578207c11f..6439cbd88f8e 100644
> --- a/src/lc-compliance/capture_test.cpp
> +++ b/src/lc-compliance/capture_test.cpp
> @@ -80,6 +80,8 @@ TEST_P(SingleStream, Capture)
>  
>  	capture.configure(role);
>  
> +	capture.allocateBuffers();
> +
>  	capture.capture(numRequests);
>  }
>  
> @@ -99,8 +101,10 @@ TEST_P(SingleStream, CaptureStartStop)
>  
>  	capture.configure(role);
>  
> -	for (unsigned int starts = 0; starts < numRepeats; starts++)
> +	for (unsigned int starts = 0; starts < numRepeats; starts++) {
> +		capture.allocateBuffers();
>  		capture.capture(numRequests);
> +	}
>  }
>  
>  /*
> @@ -118,6 +122,8 @@ TEST_P(SingleStream, UnbalancedStop)
>  
>  	capture.configure(role);
>  
> +	capture.allocateBuffers();
> +
>  	capture.capture(numRequests);
>  }
>  
> diff --git a/src/lc-compliance/simple_capture.cpp b/src/lc-compliance/simple_capture.cpp
> index d87f30cbeb1b..041a2a4cbb5a 100644
> --- a/src/lc-compliance/simple_capture.cpp
> +++ b/src/lc-compliance/simple_capture.cpp
> @@ -44,15 +44,20 @@ void SimpleCapture::configure(StreamRole role)
>  	}
>  }
>  
> -void SimpleCapture::start()
> +void SimpleCapture::allocateBuffers(unsigned int count)
>  {
> -	unsigned int bufferCount = camera_->properties().get(properties::MinimumRequests);
> +	if (!count)
> +		count = camera_->properties().get(properties::MinimumRequests);
> +
>  	Stream *stream = config_->at(0).stream();
> -	int count = allocator_->allocate(stream, bufferCount);
> +	int allocatedCount = allocator_->allocate(stream, count);
>  
> -	ASSERT_GE(count, 0) << "Failed to allocate buffers";
> -	EXPECT_EQ(count, bufferCount) << "Allocated less buffers than expected";
> +	ASSERT_GE(allocatedCount, 0) << "Failed to allocate buffers";
> +	EXPECT_EQ(allocatedCount, count) << "Allocated less buffers than expected";
> +}
>  
> +void SimpleCapture::start()
> +{
>  	camera_->requestCompleted.connect(this, &SimpleCapture::requestComplete);
>  
>  	ASSERT_EQ(camera_->start(), 0) << "Failed to start camera";
> diff --git a/src/lc-compliance/simple_capture.h b/src/lc-compliance/simple_capture.h
> index 100ffd6637ad..401ba8273da8 100644
> --- a/src/lc-compliance/simple_capture.h
> +++ b/src/lc-compliance/simple_capture.h
> @@ -17,6 +17,7 @@ class SimpleCapture
>  {
>  public:
>  	void configure(libcamera::StreamRole role);
> +	void allocateBuffers(unsigned int count = 0);
>  
>  protected:
>  	SimpleCapture(std::shared_ptr<libcamera::Camera> camera);
> -- 
> 2.33.0
>

Patch
diff mbox series

diff --git a/src/lc-compliance/capture_test.cpp b/src/lc-compliance/capture_test.cpp
index 52578207c11f..6439cbd88f8e 100644
--- a/src/lc-compliance/capture_test.cpp
+++ b/src/lc-compliance/capture_test.cpp
@@ -80,6 +80,8 @@  TEST_P(SingleStream, Capture)
 
 	capture.configure(role);
 
+	capture.allocateBuffers();
+
 	capture.capture(numRequests);
 }
 
@@ -99,8 +101,10 @@  TEST_P(SingleStream, CaptureStartStop)
 
 	capture.configure(role);
 
-	for (unsigned int starts = 0; starts < numRepeats; starts++)
+	for (unsigned int starts = 0; starts < numRepeats; starts++) {
+		capture.allocateBuffers();
 		capture.capture(numRequests);
+	}
 }
 
 /*
@@ -118,6 +122,8 @@  TEST_P(SingleStream, UnbalancedStop)
 
 	capture.configure(role);
 
+	capture.allocateBuffers();
+
 	capture.capture(numRequests);
 }
 
diff --git a/src/lc-compliance/simple_capture.cpp b/src/lc-compliance/simple_capture.cpp
index d87f30cbeb1b..041a2a4cbb5a 100644
--- a/src/lc-compliance/simple_capture.cpp
+++ b/src/lc-compliance/simple_capture.cpp
@@ -44,15 +44,20 @@  void SimpleCapture::configure(StreamRole role)
 	}
 }
 
-void SimpleCapture::start()
+void SimpleCapture::allocateBuffers(unsigned int count)
 {
-	unsigned int bufferCount = camera_->properties().get(properties::MinimumRequests);
+	if (!count)
+		count = camera_->properties().get(properties::MinimumRequests);
+
 	Stream *stream = config_->at(0).stream();
-	int count = allocator_->allocate(stream, bufferCount);
+	int allocatedCount = allocator_->allocate(stream, count);
 
-	ASSERT_GE(count, 0) << "Failed to allocate buffers";
-	EXPECT_EQ(count, bufferCount) << "Allocated less buffers than expected";
+	ASSERT_GE(allocatedCount, 0) << "Failed to allocate buffers";
+	EXPECT_EQ(allocatedCount, count) << "Allocated less buffers than expected";
+}
 
+void SimpleCapture::start()
+{
 	camera_->requestCompleted.connect(this, &SimpleCapture::requestComplete);
 
 	ASSERT_EQ(camera_->start(), 0) << "Failed to start camera";
diff --git a/src/lc-compliance/simple_capture.h b/src/lc-compliance/simple_capture.h
index 100ffd6637ad..401ba8273da8 100644
--- a/src/lc-compliance/simple_capture.h
+++ b/src/lc-compliance/simple_capture.h
@@ -17,6 +17,7 @@  class SimpleCapture
 {
 public:
 	void configure(libcamera::StreamRole role);
+	void allocateBuffers(unsigned int count = 0);
 
 protected:
 	SimpleCapture(std::shared_ptr<libcamera::Camera> camera);