ipa: rkisp1: Split queuing of request and parameter filling

Queuing of request (i.e. passing of controls to the IPA)
and filling of the parameters buffer are two separate operations.
Treat them as such by splitting them into two functions in
the rkisp1 IPA interface.

Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>
Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
Umang Jain 2022-03-31 22:19:13 +05:30
parent 0040820fc1
commit 08d7e66df0
3 changed files with 13 additions and 7 deletions

View file

@ -23,8 +23,8 @@ interface IPARkISP1Interface {
mapBuffers(array<libcamera.IPABuffer> buffers);
unmapBuffers(array<uint32> ids);
[async] queueRequest(uint32 frame, uint32 bufferId,
libcamera.ControlList reqControls);
[async] queueRequest(uint32 frame, libcamera.ControlList reqControls);
[async] fillParamsBuffer(uint32 frame, uint32 bufferId);
[async] processStatsBuffer(uint32 frame, uint32 bufferId,
libcamera.ControlList sensorControls);
};

View file

@ -54,8 +54,8 @@ public:
void mapBuffers(const std::vector<IPABuffer> &buffers) override;
void unmapBuffers(const std::vector<unsigned int> &ids) override;
void queueRequest(const uint32_t frame, const uint32_t bufferId,
const ControlList &controls) override;
void queueRequest(const uint32_t frame, const ControlList &controls) override;
void fillParamsBuffer(const uint32_t frame, const uint32_t bufferId) override;
void processStatsBuffer(const uint32_t frame, const uint32_t bufferId,
const ControlList &sensorControls) override;
private:
@ -235,8 +235,13 @@ void IPARkISP1::unmapBuffers(const std::vector<unsigned int> &ids)
}
}
void IPARkISP1::queueRequest(const uint32_t frame, const uint32_t bufferId,
void IPARkISP1::queueRequest([[maybe_unused]] const uint32_t frame,
[[maybe_unused]] const ControlList &controls)
{
/* \todo Start processing for 'frame' based on 'controls'. */
}
void IPARkISP1::fillParamsBuffer(const uint32_t frame, const uint32_t bufferId)
{
rkisp1_params_cfg *params =
reinterpret_cast<rkisp1_params_cfg *>(

View file

@ -855,8 +855,9 @@ int PipelineHandlerRkISP1::queueRequestDevice(Camera *camera, Request *request)
if (!info)
return -ENOENT;
data->ipa_->queueRequest(data->frame_, info->paramBuffer->cookie(),
request->controls());
data->ipa_->queueRequest(data->frame_, request->controls());
data->ipa_->fillParamsBuffer(data->frame_, info->paramBuffer->cookie());
data->frame_++;
return 0;