12-02-2019, 10:00 PM
(This post was last modified: 12-02-2019, 10:06 PM by ab1jx.
Edit Reason: shader <-> kernel idea
)
My Odroid N2 is in about the same situation, there's a lack of drivers coming from ARM because they're pushing Android and Wayland. BUT, if you're in a position to build a kernel, and I've done it a few times: take the kernel-level Mali package https://developer.arm.com/tools-and-soft...ard-kernel and build it in, then add the user-space drivers from https://developer.arm.com/tools-and-soft...user-space
The user-space driver is actually a libmali.so file with a few symlinks pointing at it, looks something like this:
The library is a big binary blob but if you use nm to look into it you see functions and objects defined that belong to several Khronos languages. If it's complete with the kernel-level stuff added it could be used to do OpenGL ES or OpenCL at least. Looks like this wouldn't get OpenGL ES 2.1 but somewhere I saw 3.0 I think.
There are limitations on how it can be distributed but the workaround is to have everybody fetch their own package after agreeing to the distribution restrictions then use it with a package that somebody else made, you used to have to install Java that way. If you try to use the user-space stuff by itself you get "undefined reference" errors because you've only got part of it.
I have a hunch that OpenGL shaders are about the same as OpenCL kernels, they're little subroutines which get compiled before use. And that certainly didn't come from any OpenGL tutorial I've read.
The user-space driver is actually a libmali.so file with a few symlinks pointing at it, looks something like this:
Code:
lrwxrwxrwx 1 root root 11 Dec 2 13:43 libEGL.so -> libEGL.so.1
lrwxrwxrwx 1 root root 10 Dec 2 13:43 libEGL.so.1 -> libmali.so
lrwxrwxrwx 1 root root 17 Dec 2 13:43 libGLESv1_CM.so -> libGLESv1_CM.so.1
lrwxrwxrwx 1 root root 10 Dec 2 13:43 libGLESv1_CM.so.1 -> libmali.so
lrwxrwxrwx 1 root root 14 Dec 2 13:43 libGLESv2.so -> libGLESv2.so.2
lrwxrwxrwx 1 root root 10 Dec 2 13:43 libGLESv2.so.2 -> libmali.so
-rwxr-x--- 1 root root 149838991 Dec 18 2017 libmali.so
-rwxr-x--- 1 root root 19467864 Dec 18 2017 liboffline_compiler_api_gles.so
lrwxrwxrwx 1 root root 14 Dec 2 13:43 libOpenCL.so -> libOpenCL.so.1
lrwxrwxrwx 1 root root 10 Dec 2 13:43 libOpenCL.so.1 -> libmali.so
There are limitations on how it can be distributed but the workaround is to have everybody fetch their own package after agreeing to the distribution restrictions then use it with a package that somebody else made, you used to have to install Java that way. If you try to use the user-space stuff by itself you get "undefined reference" errors because you've only got part of it.
I have a hunch that OpenGL shaders are about the same as OpenCL kernels, they're little subroutines which get compiled before use. And that certainly didn't come from any OpenGL tutorial I've read.