KleidiCV vs Carotene HAL

Hi,

I’m a little bit confused with the newly introduced ARM KleidiCV HAL. From the release notes, it provides hardware-acceleration for modern ARM v8 and v9 CPUs. So far, so good. But for ARM v7 and v8, will also had NVIDIA Carotene HAL for years. So a fresh build of OpenCV 4.11.0 targeting ARM v8 devices shows:

--   Other third-party libraries:
--     Custom HAL:                  YES (carotene (ver 0.0.1) KleidiCV (ver 0.3.0))

This let me think that both HALs are enabled. How does it work at runtime? Is it either one or the other (how to determine which is the default)? Or is it one HAL and if it doesn’t provide any acceleration, the other one is tried before defaulting to plain OpenCV? What happens when both HALs provide acceleration for a given function? Or should I have enabled only one HAL during configuration?

I know there’s also Qualcomm FastCV HAL. In the event I’m targeting Qualcomm ARM v8 devices and downloaded/installed FastCV SDK, how will FastCV HAL come into play when Carotene and KleidiCV HALs are also enabled?

Thanks for clarifying.

1 Like