libcamera: software_isp: Move configure to worker thread

OpenGL requires both configure() and process() to operate on the same
thread. As preparation for that, move current CPU configure into the
WorkerThread with a ConnectionTypeBlocking invocation of
&DebayerCpu::configure.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
This commit is contained in:
Bryan O'Donoghue 2024-12-18 00:59:39 +00:00
parent 87ccbc69ca
commit 355fd41dfd

View file

@ -263,7 +263,15 @@ int SoftwareIsp::configure(const StreamConfiguration &inputCfg,
debayer_->moveToThread(&ispWorkerThread_);
ispWorkerThread_.start();
return debayer_->configure(inputCfg, outputCfgs, ccmEnabled_);
ret = debayer_->invokeMethod(&Debayer::configure,
ConnectionTypeBlocking, inputCfg,
outputCfgs, ccmEnabled_);
if (ret) {
ispWorkerThread_.exit();
ispWorkerThread_.wait();
}
return ret;
}
/**
@ -386,7 +394,7 @@ void SoftwareIsp::stop()
void SoftwareIsp::process(uint32_t frame, FrameBuffer *input, FrameBuffer *output)
{
ipa_->computeParams(frame);
debayer_->invokeMethod(&DebayerCpu::process,
debayer_->invokeMethod(&Debayer::process,
ConnectionTypeQueued, frame, input, output, debayerParams_);
}