Note that typically running the NVIDIA driver requires blacklisting Nouveau (at least on a desktop PC). If you run Nouveau you might not be able to run CUDA or other GPU-accelerated apps.
Are you sure that the hardware in the Nano will support multi-stream, even if you had the Noveau driver?
The Tegra built-in GPUs are not the same as the desktop GPUs. They don’t just use shared RAM with the CPU, but they also have other changes for the embedded form factor.
I suppose it might be worth it if you were more concerned about auditing your system’s source than performance, but it seems kind of a waste of the harware. Nouveau is better than it was but it’s still not very good, even on x86.
As everyone else has said: The Noveau driver has really bad performance, bad compatibility, bad stability, and almost no ability to support the special hardware of the Tegra systems.
The 3D support you get with the built-in Tegra driver and OpenGL 4.3 on the Jetson Nano is miles better than the Noveau variant. OpenGL is an open API.
The video encoding and decoding support you get with the built-in Tegra driver (using the V4L2 codec API, examples are in the examples folder) is miles better than Noveau, and it’s very unlikely that Noveau would even support the Tegra video accelerators, as those look different than the desktop variants. V4L2 is an open API.
You’re already 100% dependent on NVIDIA because they made the hardware you’re running on. Trying to remove a small vendor dependency by using Noveau instead of Tegra drivers is a little bit like trying to save on gas mileage by turning off your car headlights at night. Not only doesn’t it do much, it’s actually a really bad idea.
I recommend using the Linux4Tegra installation provided by NVIDIA, and the Tegra drivers that come with it, and enjoy the system as it is! Develop applications on top of the open OpenGL and Video4Linux APIs, and if you somehow decide you don’t want to depend on NVIDIA anymore, you can port it to other hardware because those are open APIs.
It supports h264 and h265 at 4k as well as 10 and 12 bit decode. There are examples in there to playback anything and if you’re not afraid of a little c (it’s very well explained), there are the gstreamer tutorials you can follow to create your own video playback apps and you can use the accelerated gstreamer components Nvidia provides in lieu of the software ones.
Regarding Nvidia vs Nouveau drivers performance, it’s obvious that official drivers are closer to metal, and work lot better. And I’d be quite happy to use them, but I stumbled on a missing feature that implemented only in Nouveau drivers - streaming video to multiple (daisy-chained) displays over a single DisplayPort cable.
I understand that performance could be much worse, but if I can’t this DisplayPort feature work on this board, I’ll have to look for another hardware platform.
What makes you believe that the Tegra hardware module would support this with the Noveau driver, if it’s not supported with the NVIDIA drivers?
Have you seen any specification that says the Jetson Nano supports multi-display streaming?
There is no special with this technology. The driver just needs to encode packages in a different way so that receiving part (monitor) would consume them properly, like
I can assure you that the driver doesn’t actually touch the packets.
To support this, the driver needs to tell the device to encode packets like that.
Assuming that the device knows how to do that, I agree that it would be great for the driver to be able to do that.
But, I wouldn’t hold my breath on Noveau being able to do this with Tegra devices in a way that you can really rely on it.
(If you have a plan for tens of thousands of units or more, I bet NVIDIA could engage with you about the timeline to add MST support to the driver, assuming the hardware is indeed fully compliant.)
You’re right that gstreamer is a much less used backend. I’m not sure why Nvidia didn’t just accelerate libavcodec. Then the ffmpeg frontend, gstreamer, everything would work. It does seem to make little sense. It has videocore support if you build it in.
Kodi would work, vlc would work, browser plugins using libavcodec to do decoding would work. hardware capture in retroarch might work. IDGI either. Licensing reasons perhaps?
I suppose the discouraging comes from the fact that the difficulty level of what you want to do is very high and odds of adequate sucess low.
My advice would be to petition Nvidia to add the capability to their driver. They’re pretty responsive around here and what you ask for is a useful feature.