[libcamera-devel,0/2] pipeline-handler: Consider in-flight max requests
mbox series

Message ID 20221212150256.69004-1-umang.jain@ideasonboard.com
Headers show
  • pipeline-handler: Consider in-flight max requests
Related show


Umang Jain Dec. 12, 2022, 3:02 p.m. UTC
This series address the issue where over-queuing of FCQueue (or similar)
can happen by the pipeline-handler class if not taken care of.

The idea is each platform can define its max in-flight requests it can
handle at any given point. Set that as a constraint in pipeline-handler
base class. The pipeline-handler base class will enforce that constraint
so that, over-queue of requests does not happen.

Patch 1/2 moves kMaxframeContexts for IPU3 and RkISP1 to .mojom
interface (common ground between IPA/PH). This will help respective
pipeline-handlers to access the global variable. 

Patch 2/2 implements the constraint. It basically uses a counter to
keep track of how many requests are currently queued to the hardware
based on which - it decides whether to queue the next request or not.

Umang Jain (2):
  ipa: Move kMaxFrameContexts to mojom interface
  libcamera: pipeline-handler: Consider max in-flight requests

 include/libcamera/internal/pipeline_handler.h |  4 ++
 include/libcamera/ipa/ipu3.mojom              |  3 ++
 include/libcamera/ipa/rkisp1.mojom            |  3 ++
 src/ipa/ipu3/ipu3.cpp                         |  3 --
 src/ipa/rkisp1/rkisp1.cpp                     |  3 --
 src/libcamera/pipeline/ipu3/ipu3.cpp          |  1 +
 src/libcamera/pipeline/rkisp1/rkisp1.cpp      |  1 +
 src/libcamera/pipeline_handler.cpp            | 51 ++++++++++++++++++-
 8 files changed, 62 insertions(+), 7 deletions(-)