| Message ID | 20260821094747.2252938-1-alexi.birlinger@nxp.com |
|---|---|
| State | Superseded |
| Headers | show |
| Series |
|
| Related | show |
2026. 08. 21. 11:47 keltezéssel, Alexi Birlinger írta: > This reverts commit 4a5ebcf675a439c429ee9164c779e617b58bb7a9. It enabled > the software ISP by default for the imx7-csi driver. > However, this introduces a conflict with the PXP hardware converter also > declared for that platform: > > { "imx7-csi", { { "pxp", 1 } }, true }, > > The simple pipeline handler enforces mutual exclusivity between a > hardware converter and the software ISP, as both serve the same purpose > of producing a processed output stream. When a converter is present, > the match phase asserts: > > ASSERT(!converter_); > > This causes a runtime crash on any i.MX platform using the imx7-csi > driver that has PXP available. Ahh, I was just referring to this in my other reply: https://patchwork.libcamera.org/patch/27953/#40407 > > Disable the software ISP flag for imx7-csi, restoring the previous > behaviour and eliminating the converter/swISP conflict. Users who > wish to enable the software ISP on supported imx7-csi platforms > (i.e. those without a PXP converter) can do so at runtime via the > libcamera configuration file by setting the software_isp key in the > simple pipeline section. I'm wondering if maybe we could do something better, e.g.: * if configuration file wants software-isp, use that * if converter is found, use that * if configuration file does not disable software-isp and it is allowed in `supportedDevices`, use that * otherwise fail I think this would avoid the need for a configuration file in converter-less scenario. Thoughts? > > Signed-off-by: Alexi Birlinger <alexi.birlinger@nxp.com> > --- > Documentation/isp-feature-matrix.rst | 1 - > src/libcamera/pipeline/simple/simple.cpp | 2 +- > 2 files changed, 1 insertion(+), 2 deletions(-) > > diff --git a/Documentation/isp-feature-matrix.rst b/Documentation/isp-feature-matrix.rst > index b56f1e56e..3b101eb2f 100644 > --- a/Documentation/isp-feature-matrix.rst > +++ b/Documentation/isp-feature-matrix.rst > @@ -67,7 +67,6 @@ different platforms in libcamera. > > * Intel 11th-14th Gen (IPU6) > * Intel 15th Gen (IPU7) > - * NXP i.MX7 and i.MX8 series (imx7-csi) > * Texas Instruments J7x/AM6x > * Qualcomm Snapdragon (CamSS) > > diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp > index 02a98f594..fb777b3b4 100644 > --- a/src/libcamera/pipeline/simple/simple.cpp > +++ b/src/libcamera/pipeline/simple/simple.cpp > @@ -257,7 +257,7 @@ namespace { > > static const SimplePipelineInfo supportedDevices[] = { > { "dcmipp", {}, false }, > - { "imx7-csi", { { "pxp", 1 } }, true }, > + { "imx7-csi", { { "pxp", 1 } }, false }, > { "intel-ipu6", {}, true }, > { "intel-ipu7", {}, true }, > { "j721e-csi2rx", {}, true },
Barnabás Pőcze <barnabas.pocze@ideasonboard.com> writes: > 2026. 08. 21. 11:47 keltezéssel, Alexi Birlinger írta: >> This reverts commit 4a5ebcf675a439c429ee9164c779e617b58bb7a9. It enabled >> the software ISP by default for the imx7-csi driver. >> However, this introduces a conflict with the PXP hardware converter also >> declared for that platform: >> { "imx7-csi", { { "pxp", 1 } }, true }, >> The simple pipeline handler enforces mutual exclusivity between a >> hardware converter and the software ISP, as both serve the same purpose >> of producing a processed output stream. When a converter is present, >> the match phase asserts: >> ASSERT(!converter_); >> This causes a runtime crash on any i.MX platform using the imx7-csi >> driver that has PXP available. > > Ahh, I was just referring to this in my other reply: https://patchwork.libcamera.org/patch/27953/#40407 > > >> Disable the software ISP flag for imx7-csi, restoring the previous >> behaviour and eliminating the converter/swISP conflict. Users who >> wish to enable the software ISP on supported imx7-csi platforms >> (i.e. those without a PXP converter) can do so at runtime via the >> libcamera configuration file by setting the software_isp key in the >> simple pipeline section. > > I'm wondering if maybe we could do something better, e.g.: > > * if configuration file wants software-isp, use that > * if converter is found, use that > * if configuration file does not disable software-isp > and it is allowed in `supportedDevices`, use that > * otherwise fail Not fail, a raw stream can still be produced. > I think this would avoid the need for a configuration file in converter-less scenario. > Thoughts? Sounds good to me. >> Signed-off-by: Alexi Birlinger <alexi.birlinger@nxp.com> >> --- >> Documentation/isp-feature-matrix.rst | 1 - >> src/libcamera/pipeline/simple/simple.cpp | 2 +- >> 2 files changed, 1 insertion(+), 2 deletions(-) >> diff --git a/Documentation/isp-feature-matrix.rst b/Documentation/isp-feature-matrix.rst >> index b56f1e56e..3b101eb2f 100644 >> --- a/Documentation/isp-feature-matrix.rst >> +++ b/Documentation/isp-feature-matrix.rst >> @@ -67,7 +67,6 @@ different platforms in libcamera. >> * Intel 11th-14th Gen (IPU6) >> * Intel 15th Gen (IPU7) >> - * NXP i.MX7 and i.MX8 series (imx7-csi) I'd say it's still supported, it just needs to be enabled in the configuration file. >> * Texas Instruments J7x/AM6x >> * Qualcomm Snapdragon (CamSS) >> diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp >> index 02a98f594..fb777b3b4 100644 >> --- a/src/libcamera/pipeline/simple/simple.cpp >> +++ b/src/libcamera/pipeline/simple/simple.cpp >> @@ -257,7 +257,7 @@ namespace { >> static const SimplePipelineInfo supportedDevices[] = { >> { "dcmipp", {}, false }, >> - { "imx7-csi", { { "pxp", 1 } }, true }, >> + { "imx7-csi", { { "pxp", 1 } }, false }, >> { "intel-ipu6", {}, true }, >> { "intel-ipu7", {}, true }, >> { "j721e-csi2rx", {}, true },
diff --git a/Documentation/isp-feature-matrix.rst b/Documentation/isp-feature-matrix.rst index b56f1e56e..3b101eb2f 100644 --- a/Documentation/isp-feature-matrix.rst +++ b/Documentation/isp-feature-matrix.rst @@ -67,7 +67,6 @@ different platforms in libcamera. * Intel 11th-14th Gen (IPU6) * Intel 15th Gen (IPU7) - * NXP i.MX7 and i.MX8 series (imx7-csi) * Texas Instruments J7x/AM6x * Qualcomm Snapdragon (CamSS) diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp index 02a98f594..fb777b3b4 100644 --- a/src/libcamera/pipeline/simple/simple.cpp +++ b/src/libcamera/pipeline/simple/simple.cpp @@ -257,7 +257,7 @@ namespace { static const SimplePipelineInfo supportedDevices[] = { { "dcmipp", {}, false }, - { "imx7-csi", { { "pxp", 1 } }, true }, + { "imx7-csi", { { "pxp", 1 } }, false }, { "intel-ipu6", {}, true }, { "intel-ipu7", {}, true }, { "j721e-csi2rx", {}, true },
This reverts commit 4a5ebcf675a439c429ee9164c779e617b58bb7a9. It enabled the software ISP by default for the imx7-csi driver. However, this introduces a conflict with the PXP hardware converter also declared for that platform: { "imx7-csi", { { "pxp", 1 } }, true }, The simple pipeline handler enforces mutual exclusivity between a hardware converter and the software ISP, as both serve the same purpose of producing a processed output stream. When a converter is present, the match phase asserts: ASSERT(!converter_); This causes a runtime crash on any i.MX platform using the imx7-csi driver that has PXP available. Disable the software ISP flag for imx7-csi, restoring the previous behaviour and eliminating the converter/swISP conflict. Users who wish to enable the software ISP on supported imx7-csi platforms (i.e. those without a PXP converter) can do so at runtime via the libcamera configuration file by setting the software_isp key in the simple pipeline section. Signed-off-by: Alexi Birlinger <alexi.birlinger@nxp.com> --- Documentation/isp-feature-matrix.rst | 1 - src/libcamera/pipeline/simple/simple.cpp | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-)