<div dir="ltr">Hi folks,<div><br></div><div>I want to discuss the support of multiple IPAs within a pipeline handler, before I upload patches, as I think there are different approaches. It's needed because some chromeos models (like intelipu7) need both cpu & gpu IPAs, and they might have different mojo interfaces.</div><div><br></div><div>Currently in the `meson.build`s, they restrict the IPA name to be the same as a pipeline handler name [1] [2].</div><div><br></div><div>Here are some approaches that I can think of:</div><div><br></div><div>1. Besides the ipa that has the same name as pipeline handler name, build the one that has a suffix `_gpu` or so. For example, build `ipu7` & `ipu7_gpu` for pipeline handler `ipu7`.</div><div>This approach limits the number of IPAs to be two though, and we might need to change the design again if there are other requirements in the future.</div><div><br></div><div>2. Build exactly the IPAs specified in the meson option: `ipas` (or we add another meson option). IIUC, currently the default value of meson option `ipas` contains all the possible values, and it might be the case for most of the build configs for the current use cases.</div><div>This approach might require developers to update their build configs accordingly.</div><div><br></div><div>3. Build more than one shared library in one `src/ipa/${IPA_NAME}` directory. We can register more than one mojom interface in a pipeline handler name [3], so that the build can generate multiple IPA proxies/workers.</div><div>This approach doesn't need to change the meson build files or logic. I haven't tried it myself though. Maybe there are some missing parts.</div><div><br></div><div>Let me know your opinions. Thanks!</div><div><br></div><div>BR,</div><div>Harvey</div><div><br></div><div>[1]: <a href="https://git.libcamera.org/libcamera/libcamera.git/tree/include/libcamera/ipa/meson.build#n88">https://git.libcamera.org/libcamera/libcamera.git/tree/include/libcamera/ipa/meson.build#n88</a></div><div>[2]: <a href="https://git.libcamera.org/libcamera/libcamera.git/tree/src/ipa/meson.build#n47">https://git.libcamera.org/libcamera/libcamera.git/tree/src/ipa/meson.build#n47</a><br>[3]: <a href="https://git.libcamera.org/libcamera/libcamera.git/tree/include/libcamera/ipa/meson.build#n64">https://git.libcamera.org/libcamera/libcamera.git/tree/include/libcamera/ipa/meson.build#n64</a></div></div>