Building a 64-bit aarch64 kernel and userspace for the Raspberry Pi 4
esotericnonsense.com
esotericnonsense.com
See e.g. https://github.com/raspberrypi/userland/issues/314
One of the first comments there also say about the RPi 3:
> The GPU is a 32 bit processor. I haven't checked, but I'm expecting that there's a heck of a lot more work to do to get Khronos or other multimedia extension stuff up and running against a 64bit kernel than just getting userland to build.
Don’t know if that’s the case for the RPi 4 as well.
And another comment too:
> I'm sure there are certain applications where having a 64-bit kernel (let alone userland) may be beneficial, but I suspect the hoped-for performance improvements didn't materialise, otherwise people would be waving benchmark results at us demanding an RPi-supported aarch64 kernel.
I’m missing this too, and am planning on eventually doing some benchmarking of my own to see if there is any advantage of running the aarch64 kernel for my applications.
The reason their /opt/vc stuff doesn't support 64bit is because there are proprietary binaries directly from Broadcom. Also, they use interfaces provided only by the downstream RPi kernel.
There is a blog post from the RPi foundation about support for VC6 in Mesa.
Because I am decoding, encoding and rendering 1080p H264 with the VC on a 64-bit kernel.
The raspberry pi 4 apparently isn't supported. I'm not exactly clear on why, and how this links to the above issue, and if any of the things they suggest are problems in their bug tracker are also not solved in Fedora, or are simply raspberry pi people being unwilling to fix in their setup.
And I think using the GPU to get hardware accelerated video decoding and encoding will not be available either.
Edit: But if I understand https://github.com/popcornmix/omxplayer/issues/714 correctly then you could do hardware accelerated decoding of HEVC on the CPU. I don’t know how the performance of that compares to the kind of video decoding that the GPU can do. That’s one of the things I’d like to see someone benchmark, or benchmark myself.
You can find some info about that here: https://wiki.gentoo.org/wiki/Raspberry_Pi_VC4
Some side notes: Mesa is quite hungry in performance and memory to compile shaders (to VC4 instructions), way more then the closed driver requires, thats why older versions of the Pi with less powerfull ARM cores couldn't really use this approach.
Source: I used to write custom user shaders in VC4 assembly to run on all Pis because the closed binary didn't offer OpenCL.
I've personally had no issues - the system is overall faster than on armv7h - ioquake3 runs full speed, I can watch 1080p videos in mpv, etc.
I can't seem to get the 'kitty' terminal to work which does require the use of OpenGL, but that doesn't work on a 32bit kernel for me either.
arm_64bit=1
to your /boot/config.txt
You now have a 64-bit kernel with 32-bit userland.
It is unclear to me what kind of code gcc now generates with -march=native. If somebody could clear that up, would be very much appreciated ( ie, does it use 31 GPRs ).
This reminds me of when the UltraSPARC CPU's came out. I was working at Sun at the time, and I remember asking why Solaris 2.6 was released without 64-bit support. The reason was the same, there was really no benefit to it (except for support for more than 4 GB of RAM in a single process, which wasn't really needed back then).
Even as later versions of Solaris came out with native 64-bit support, the entire userspace was still 32-bit because it worked on both architectures, and the binaries were both smaller and also faster.
It doesn't. 64-bit arm has 31 GPRs. It also has much cleaner decode and some low-end cpus that can do it and 32-bit execute it faster than they do 32-bit code.
Does it? I thought part of the lag is due to there being no obvious benefit on a 1-4gb device
It uses mainline Linux, so no USB 3 (only USB 2 OTG/Gadget/Host on USB-C), but Ethernet is supposed to be working meanwhile.
[1]:https://abishekmuthian.com/getting-smoother-desktop-experien...
If you're doing it just for the novelty or really want to do it on site natively at a reasonable cost check out the Jetson TX2 dev kit. The TX2 has been mainlined for a while now and this kit offers 8 GB RAM with a fast CPU and the ability to connect fast SATA/NVMe storage. While most distros would run on it you would probably need to make your own install package (or just run container images for builds if you don't NEED to have an exact kernel)
Mainline Kernel – work in progress
UBoot – work in progress
UEFI – work in progress
But if anyone has any experience using this board, please share.I'm running on 4gb.
It's used in production for Apple Watch Series 4 onwards among other things.