Jeff Geerling Video running GPU's on raspberry pi's #166
Replies: 14 comments 2 replies
-
@Jeni-cross - Thanks for posting this issue! I am trying to see if any of these may have Linux drivers available. The GT 120 might not, the Radeon HD 5770 is iffy (it's old enough the radeon driver might support it...). For the GeForce 6600, it seems there are only X86 drivers available. Before shipping the cards, I'd want to know from someone who may have more knowledge of them if they have a good chance or if it's a fool's errand. I'd say the most likely card to work in any fashion short of writing a custom driver is the Radeon HD 5770. |
Beta Was this translation helpful? Give feedback.
-
@geerlingguy @Jeni-cross I just checked the official driver package and all three of those Nvidia cards are listed under the "legacybranch" which doesn't have an arm64 package. But all of those cards are supported by built in drivers in the latest linux mainline kernel. |
Beta Was this translation helpful? Give feedback.
-
Like @pgwipeout I can confirm that the MAC HD 5770 (32&64 EFI) works fine on MacPro1,1&MacPro3,1 with Ubuntu 20.04 64bit booted in efi mode using the default radeon driver. It uses a 6 pin pcie-express power plug! Although this card comes with both BIOS and EFI32/64 support, I guess it would make no difference for the Pi its initialisation... |
Beta Was this translation helpful? Give feedback.
-
It would seem that the option roms aren't optional unfortunately. |
Beta Was this translation helpful? Give feedback.
-
Do you mean option roms are not only for boot initialisation (arch x86 dependent BIOS/(U)EFI) but also for further setting up by the kernel driver? In can confirm that although BIOS based PC cards from both Nvidia and Amd(Ati) miss the EFI32/64 stuff for the Apple Mac, they will efi boot on a Mac with just a black screen untill linux kernel drm drivers kick in which requires "NON-FREE firmware" blobs to get to a accelerated Desktop GUI besides framebuffer. Not sure if these nonfree firmware blobs are also arch X86 dependent... instead of Aarch64. In case of Nvidia didn't these NON-FREE firmware blobs got partly reverse enginered for GTX9XX and earlier for the Nouveau driver? |
Beta Was this translation helpful? Give feedback.
-
The GPU has an onboard BIOS that sets things up on boot. But yes, there's a good chance that our off the shelf cards require the option rom to run at least once to set things up for the main driver. See : https://www.workofard.com/2017/03/project-dogfood-my-arm64-desktop/ |
Beta Was this translation helpful? Give feedback.
-
Have y'all tried running the downstream nvidia driver with the nvidia print level forced to 7 (debug)? |
Beta Was this translation helpful? Give feedback.
-
Note that the GPU cards BIOS usually does some important hardware initialization which the kernel driver does not have code for. Think of memory PLL, DRAM interface training etc. So I don't think it's possible to use a GPU without starting it's extension BIOS first. On ARM this means you need an x86 emulator. |
Beta Was this translation helpful? Give feedback.
-
@p2mate Unfortunately that doesn't seem to be the issue here. Besides, the GPU BIOS executes on the GPU, where the option rom executes on the host. I think there's something particular to the way x86 is laid out that only some arm64 controllers happen to align with. |
Beta Was this translation helpful? Give feedback.
-
@pgwipeout thanks for the interresting read. A couple blog posts further he shows a way to conform/convert almost any current x86 UEFI PC vga card (option rom) into a native Aarch64 UEFI vga card: |
Beta Was this translation helpful? Give feedback.
-
@geerlingguy Is the following idea already been tried for initilazing GPU on the RPi4? Booting/Chainloading Tianocore UEFI on the raspberry and letting the UEFI initiliaze a Aarch64 UEFI conformed (flashed gpu) option rom see previous mentioned work of Ard post? Maybe I should post this idea in this post since that is more active and the RX550 is actually a UEFI card: Edit: This post from @ albydnc already showed the idea of flashing the gpu X86 UEFI to AArch64 UEFi but didn't mention booting Tianocore uefi on the pi: |
Beta Was this translation helpful? Give feedback.
-
Sadly this only applies to AMD cards that the precomposed unsupported replacement driver supports. |
Beta Was this translation helpful? Give feedback.
-
I don't think it really has anything to so with the cards BIOS. I can only speak for amd ones (I don't have any NVidia cards), but they have the bios or option rom as bytecode (atombios) that gets interpreted by the driver, so the architecture doesn't matter. Those blog posts seem to focus on getting the card to work with efi firmware which, and while it might be nice for people who use efi firmware on the pi, once we know what is needed to be changed, those changes should be not too difficult to port to tianocore. Until that, I'd stick with the linux kernel to get as much working as possible. Atleast some cards work with arm without any problem, so I highly doubt the BIOS is the issue. |
Beta Was this translation helpful? Give feedback.
-
It may be only a different starting point which initializes a simple efifb (possible full resolution of the display) which can be inherited by the kernel its framebuffer (vendor independent). From there you may choose a specific accelerated drm/radeon/amdgpu path if didn't crash earlier. |
Beta Was this translation helpful? Give feedback.
-
Hiya All
I have from old mac's
ATI Radeon HD 5770 from mac pro 5,1
NVIDIA GeForce GT 120 from mac pro 4,1
NVIDIA GeForce 6600 from Power Macintosh G5 "Quad Core" (2.5)
NVIDIA GeForce 6600 LE from Power Macintosh G5 Dual Core (2.0) (hope that's right one as it in loft)
Love Jenifer x
Beta Was this translation helpful? Give feedback.
All reactions