4 ms·
> This is all a noble goal, but I can't see this as being anything other than a complete and total non-starter with zero cooperation from Apple. Why? There hav
by bluepizza 6y ago
> This is all a noble goal, but I can't see this as being anything other than a complete and total non-starter with zero cooperation from Apple.
Why? There have been several success cases of reverse engineering in the past, for all sorts of popular and fringe hardware.
- hashkb 6y agoSee: the state of nvidia support on Linux today.
- gorkish 6y agoI am all about the hacker cred here, but you need only take a look at the most directly comparable project, Nouveau to get an idea of how ridiculous the thought is that greenfield reverse engineering of apple's custom GPU will result in something that is desktop-class usable and reliable. Please remember that Nouveau can't even do better than a framebuffer on anything newer than a geforce 10 series card. GPU development is just too eratic and fast paced to even try to keep up the effort. Anyone willing to devote that kind of time and expense into the project would be better off engineering a GPU from scratch.
- deaddodo 6y agoThe problem with nouveau is more that it's trying to replicate the Nvidia blob driver (and then some), in that it supports multiple disparate architectures and at different levels (three generations might be a similar uarch, for instance). Replicating a single GPU driver would be significantly easier, albeit still a Herculean task. Especially if your main goal out of the gate is simply framebuffer support and maybe some 2D acceleration. At least, this is from my experience dealing with the Tegra X1 on a Jetson board for hobby osdev.
- boardwaalk 6y agoSounds like a fun project, honestly. I wonder how much 2D-only “legacy” functionality even exists on the thing. I expect not much. Going for something like Vulkan right off with a mind for it probably being built to accelerate Metal might be a viable angle. Total spitballing though. Once they come out with the 16” MBP I may have fun poking at it.
- deaddodo 6y agoYou can read about the architecture in their docs: https://developer.apple.com/documentation/metal/gpu_features/understanding_gpu_family_4 https://developer.apple.com/documentation/metal/gpu_features... It's a fairly generic TBDR architecture based on it's slowly-replaced PowerVR heritage and it still has fixed function hardware in the core of the architecture.
- SXX 6y agoThe reason why Nouveau got stuck is because Nvidia intentionally changed firmware loading process to break Nouveau and not cooperating on providing firmware. Also part of the problem is that main Nouveau developers are from Red Hat and they are limited in terms of RE of actual Nvidia code. Unfortunately some of Nouveau contributors dropped their efforts once Nvidia began to be actively hostile to the project. If you look at GPUs like GTX 650 they actually almost have feature-parity and 90% of performance. I personally used GT710 on my PC and while it super-low-end card it's really decent under Nouveau and can drive 3 of 2K displays with 75Hz and lag-free. As for Apple hardware it's different at least because Marcan isn't as limited in terms of keeping source code purity. After all Apple dont have any Linux drivers so there is no way to RE any code that can be directly applied to Linux graphics stack.
- ungamed 6y agoIt would be very possible and also related to RE code from the OSX stack though.
- SXX 6y agoMarcan had this topic covered on his stream. While reverse enginering is always gray area there is a lot of device drivers in Linux kernel tree that was created using RE. Also Apple never sued anyone for doing this. Developer funded by community has more freedom than Red Hat employee. There is simply no profit for hardware vendor in attacking him. Also OSX graphics stack is completely different from Linux one and Apple only implement their own proprietary Metal API. So even if you gonna decompile Apple drivers chances of copying Apple code are very small since the only common part would be running compilee code on the GPU.