Open Source OpenGL ES 3.1 on Mali GPUs with Panfrost
collabora.com
collabora.com
Intel CPUs are well document both by their documentation or by third party docs (like Patterson-Hennessy.) Although NVIDIA is less document than these CPUs, there are some well-written whitepapers including one for academic conferences. And these are the basis for the textbook coverage.
Compared to that, ARM or Qualcomm GPUs are totally a blackbox. I'd love to learn the specifics of mobile GPUs but there is no clue. I wonder how Collabora folks have figure out the instruction set architecture and other details.
>entirely closed source coprocessors on their chips
Like every single Arm chip?
I think Arm is providing Collabora with some of the documentation they need to write the graphics driver.
Looking at the code [1], some of files are indeed copyrighted to ARM. So they are actually providing some data. Also, the linked story mentions that qcom is also providing some support to thee opensource driver. Pardon my ignorance here.
[1] https://gitlab.freedesktop.org/mesa/mesa/-/tree/main/src/pan...
The key thing about open-source drivers is they retain compatibility with newer Linux kernels, and receive bug fixes and improvements long after the original vendor has lost interest. This reduces e-waste and allows system integrators (like Google with Chromebooks) to easily maintain their hardware far longer than Broadcom, Qualcomm and ARM itself ever would.
It's great that shipping open-source drivers over the proprietary one is fast becoming the norm not the outlier. And this change is not because of hippie free software ideals, but because of cold-hearted business reasons.
Unfortunately the one I built and "flashed" to it never booted and I lack the soldering skills to build the modified headphone connector/serial TTL cable thing it needs, so it sits in my drawer unused
I really wish we could get to a better upstream ecosystem with ARM devices but it just never seems to happen
edit: The Dimensity SoCs also have Mali GPUs, but no US phones options as far as I can see.. https://www.anandtech.com/show/16436/mediatek-announces-dime...
I think a lot of progress is being made on that front.
https://code.blender.org/2021/04/cycles-x/
> Deprecation
As part of the new architecture, we are removing some functionality. Most notably:
OpenCL rendering kernels. The combination of the limited Cycles split kernel implementation, driver bugs, and stalled OpenCL standard has made maintenance too difficult. We can only make the kinds of bigger changes we are working on now by starting from a clean slate.
Do they? Blender uses OpenCL implementation for AMD GPUs.
The programming model is also quite different, so code will have to be rewritten.
So, I think you need to abstract your code at the services level, and provide an implementations for each platform you need to support (the number may be 1 or more than 1).
I think you need to direct your "compute learning" energy at the algorithm level. Numerics and all that. The GPU API:s are just the obtuse implementation detail, but not the meat of the thing.
There are some cross-platform capabilities via SPIRV-Cross. The LLVM folks are working on MLIR that might provide even better features wrt. a common abstraction layer going forward.
You can also run Cycles' CUDA backend with ROCm on amdgpu (somewhat..).
However, you need Cycles, and not Eevee. They have very significant difference in quality.
https://all3dp.com/2/blender-render-from-eevee-simply-explai...
> You can also run Cycles' CUDA backend with ROCm on amdgpu (somewhat..).
No. No. No, you can't.
They support only some GPUs !!!AND CPUs!!!. No support for RX 5xxx-6xxx XT. They are very picky about the hardware they support.
https://github.com/ROCm/ROCm.github.io/blob/master/hardware....
https://github.com/ROCm/ROCm.github.io/blob/master/hardware....