Vulkan 1.0/1/1 support, ARMv8 Instruction uops

Does the Jetson Nano have a modular driver support for Vulkan 1.0 or 1.1 that would allow the use of this driver on alternate versions of ARM-Linux?

Also, I intend to do some ARM/NEON instruction profiling on this device and was looking for something similar to the Intel Intrinsics guide that provides throughput/latency information for its ISA.

I found this optimization guide and wanted to know if these documented latencies and throughputs are an equivalent and faithful reference of the Jetson Nano’s SoC.

Hi wunkolo,

Yes, the Vulkan 1.1 is supported, please refer to https://developer.nvidia.com/embedded/linux-tegra.

Thanks

But what of the driver modularity or the ISA stuff I mentioned?

Short answer: This is 64-bit ARMv8-a (arm64/aarch64), not 32-bit ARMv7/armhf (which is what the plain “ARM” and “NEON” refer to). It would take extra work to make 32-bit work on a 64-bit system.

In older 32-bit ARMv7 NEON is optional. This is not ARMv7, it is ARMv8-a. In ARMv8 ARMv7 will not run without special consideration…this 32-bit mode is a compatibility mode and is considered a foreign architecture. This means you’d have to install the 32-bit linker and library support…after which the CPU has the ability to run this (though at degraded performance). In the ARMv8 mode (the “-a” is 64-bit, the lack of “-a” implies the 32-bit ARMv7 compatibility) NEON will always be present and is not optional…thus any 32-bit ARMv8 compiling would have an error if you try to enable NEON (something always available does not have an enable option, and thus enabling is an error).

Trivia: 32-bit ARM/armhf will run on an ARMv8 platform with the right support, but 32-bit ARMv8 will not run on an older 32-bit ARM/armhf (ARMv8 is a superset of ARMv7).

I would be running it on an equivalently targeted aarch64 distro of Linux such as Arch Linux ARM or Debian ARM and would be trying to basically get the driver from the Ubuntu image Nvidia provides into these other distros which is what I am trying to figure out if it is possible.

There seems to be a 3-year old wiki page here involving porting some old Jetson drivers to Arch Linux ARM but no recent insight on how something like this is handled.
https://elinux.org/Jetson/Porting_Arch

Again I’d also still like to know if Nvidia’s implementation of the A57 ISA have the same throughputs and latencies as this Optimization guide.
http://infocenter.arm.com/help/topic/com.arm.doc.uan0015b/Cortex_A57_Software_Optimization_Guide_external.pdf

That porting guide was for ARMv7, so it is older 32-bit and not compatible with the current systems. Some parts would be the same, especially for rootfs.

So far as porting goes I would definitely recommend using 100% provided L4T for all boot infrastructure. There are many non-rootfs partitions, and U-Boot itself is not mainline, but really what you need is only the rootfs. The parts of device tree related to boot and to many drivers would be the same assuming it is a dev board, and so I would also keep this device tree and only edit for things you know differ (unless you have a new carrier…and for that I’d completely port the device tree with stock L4T first).

I have no knowledge of whether the guide you mention is followed.

Thank you for the info. Looks like a pretty new territory to try and port the drivers into a different linux distro. Though it looks like I’m on my own with the ARM performance metrics.