Argus multiple camera: Single session vs Multiple sessions?


My current project requires me to capture 3 IMX477 sensors using libargus. I’ve noticed that when I try to capture more than one camera at the framerate we’re targetting (30fps), it seems that the VIC is dropping frames somehow (The sensor GPIO indicates that a frame has been captured, but the frame got lost somewhere in the software pipeline…)

When I do the same using 10fps, everything works fine. So I suspect the VI to be at fault, here. I already tried to change the VIC clock, etc. No luck.

The thing is, I use a separate libargus Session per camera. I haven’t tried using a common Session. But is there any advantage to doing so ?

What’s the resolution? Have a try smaller resolution.

Resolution is 4032x3040 (RAW10) @ 30ms frame period.
I will try lower resolution and check the outcome, but my use case specifically requires full-sensor capture, anyway.

Ok. Using 1920x1080 instead does work (no frame drop). As said, my use case requires higher resolution, anyway :'(

Did you boost vic clocks like below?

echo userspace > /sys/devices/13e10000.host1x/15340000.vic/devfreq/15340000.vic/governor

echo 1 > /sys/kernel/debug/bpmp/debug/clk/vic/mrq_rate_locked
echo 1 > /sys/kernel/debug/bpmp/debug/clk/vic/state
cat /sys/kernel/debug/bpmp/debug/clk/vic/max_rate > /sys/kernel/debug/bpmp/debug/clk/vic/rate

Also boost system

sudo nvpmodel -m 0
sudo jetson_clocks
sudo su
echo 1 > /sys/kernel/debug/bpmp/debug/clk/vi/mrq_rate_locked
echo 1 > /sys/kernel/debug/bpmp/debug/clk/isp/mrq_rate_locked
echo 1 > /sys/kernel/debug/bpmp/debug/clk/nvcsi/mrq_rate_locked
echo 1 > /sys/kernel/debug/bpmp/debug/clk/emc/mrq_rate_locked
cat /sys/kernel/debug/bpmp/debug/clk/vi/max_rate |tee /sys/kernel/debug/bpmp/debug/clk/vi/rate
cat /sys/kernel/debug/bpmp/debug/clk/isp/max_rate | tee  /sys/kernel/debug/bpmp/debug/clk/isp/rate
cat /sys/kernel/debug/bpmp/debug/clk/nvcsi/max_rate | tee /sys/kernel/debug/bpmp/debug/clk/nvcsi/rate
cat /sys/kernel/debug/bpmp/debug/clk/emc/max_rate | tee /sys/kernel/debug/bpmp/debug/clk/emc/rate

I did this:

# echo on > /sys/devices/50000000.host1x/54340000.vic/power/control                                                                                                                                                
echo userspace > /sys/devices/50000000.host1x/54340000.vic/devfreq/54340000.vic/governor                                                                                                                           
echo 140800000 > /sys/devices/50000000.host1x/54340000.vic/devfreq/54340000.vic/max_freq

Also, I just noticed that my system does not have a debugfs entry for BPMP… Need to recheck kernel config (It’s a custom system using meta-tegra -L4T-R32.4.3-)