During some experimentation with OpenGL development on the GameShell, I did some investigation into the fbturbo and lima versions being used on the GameShell. While doing so I could not find any mention of fbturbo installed at all: sudo find / -name fbturbo, dpkg -l | grep fbturbo, and sudo apt-cache search fbturbo all yield nothing.
Interstingly, what IS installed and being used, is fbdev, which as far as I can tell is NOT fbturbo, and that fbturbo is a drop in replacement for fbdev. https://github.com/ssvb/xf86-video-fbturbo
Am I missing something here? Does anyone know if it actually uses fbturbo or not? because if it’s not, from what I can tell, fbdev ONLY does 3d software rendering, but fbturbo actually makes use of the proprietary mali binary blobs that should be included in the kernel.
I don’t want to waste my time pursuing this if it does actually already use fbturbo and I’m just not seeing it, but if it doesn’t, dear god if it works better than lima lets get fbturbo working!
P.S. If it turns out that its using fbdev because fbturbo does not work on the hardware, then it should properly say fbdev and not fbturbo for the graphics driver in the settings, specifications, etc.
Ah, I know why I wasn’t finding it. my find command should have been sudo find / -name *fbturbo*, that picks it up, and shows exactly where you specified.
Is the GameShell ACTUALLY utilizing it though?
According to lsof when using lima:
cpi@clockworkpi:~$ sudo lsof +D /usr/lib/xorg/modules/drivers/
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
Xorg 921 cpi mem REG 179,2 55900 137839 /usr/lib/xorg/modules/drivers/modesetting_drv.so
And when “using fbturbo”:
cpi@clockworkpi:~$ sudo lsof +D /usr/lib/xorg/modules/drivers/
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
Xorg 921 cpi mem REG 179,2 18312 137843 /usr/lib/xorg/modules/drivers/fbdev_drv.so
That doesn’t look like its using fbturbo at all, it is still using fbdev.
Looking through /home/cpi/.local/share/xorg/Xorg.0.log I found that it never actually loads the .xorg.conf (or .xorg_lima.conf when for that matter when set to use lima) that specifies fbturbo [ 741.718] (EE) Unable to locate/open config file: "~/launcher/.xorg.conf"
If you change ~/launcher/.cpirc to use /home/cpi/launcher/.xorg.conf instead of ~/launcher/.xorg.conf (and for .xorg_lima.conf as well) it actually DOES load the conf and then lsof reports that fbturbo_drv.so is open!
cpi@clockworkpi:~$ sudo lsof +D /usr/lib/xorg/modules/drivers/
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
Xorg 924 cpi mem REG 179,2 327756 137838 /usr/lib/xorg/modules/drivers/fbturbo_drv.so
So it does not appear that fbturbo is really adding any benefits over the default fbdev… that I can tell. If it is using it correctly and is utilizing the mali kernel module, it should be providing better performance over fbdev.
I’m going to do a little more digging, but it looks like the ClockworkOS’s linux kernel does not have the Mali module included, which would explain the similar performance between fbturbo and fbdev, instead of an improvement.
Additionally, from what I currently understand about the lima driver, is that lima is a full driver for mali based gpu’s, which is why it add’s a lot of performance improvement over fbdev/turbo, and doesn’t actually need the proprietary mali blob.
you could also try my own kernel, with latest lima (& mali) http://gs.dread.fr/kernel/latest/
(take care there is a sound driver bug, constant 60db amplification)
(you may also wanna upgrade mesa as latest one support lima, a compiled release is here http://gs.dread.fr/kernel/kernel.gfx.stack/
xorg is also compiled to latest one, and fbturbo recompiled for latest xorg
i directly installed all on my gs after compile (on os 1.0) so i not tested these tar, duckyvirus reported some trouble with them, you may have more luck
Yup, I remembered and found @duckyvirus’s thread and the next thing I’m going to be doing is getting a custom kernel working.
@guu, is there any way we can get more detailed instructions on the custom kernel and image builds? It would also be nice if we could get unstable nightly builds of the ClockworkOS img for testing, which also may speed up the time between OS image updates. Let us know thoughts on this.
I’ve got a 4.20 kernel build compiled and running on my GameShell. @r043v I’ll be trying out building your 5.x mainline kernel next to see how that goes.
@guu It doesn’t specifically have to be you lol, you just happen to be the most active when it comes to dev, and seem to manage the git repositories. It would / could be whoever manages the kernel patching and building, and putting the final OS .img together. It would also be beneficial to have details on the device tree bindings / blobs.
@r043v I was not able to get your kernel working entirely either. If I install just the kernel, it boots fine, but the launcher fails due to bluetooth service issues (probably due to the dtb being wrong, as it works for other kernels). If I try to use your up to date graphics stack, I just get dropped to a command line due to all sorts of dependency issues. I’ve tried resolving them one after another, but that seemed like a waste of time to me.
I’ve moved on to just trying to make the 4.20 kernel work with fbturbo and mali kernel driver. It appears that even though CONFIG_DRM_MALI_DISPLAY=y exists in the config, all that does is add mali to the device tree? There isn’t actually any mali.ko kernel driver even when run make modiles_prepare or make modules_install, so I don’t think any of the current Clockwork OS images actually have the proprietary mali driver available?
I tried to compile the mali kernel space driver (mali.ko) and was successful, but cannot get it to load currently (sudo modprobe mali). dmesg gives:
[ 53.899067] WARNING: CPU: 1 PID: 1381 at drivers/reset/core.c:419 __reset_control_get_internal+0xc0/0xe0
[ 53.908601] Modules linked in: mali(O+)
[ 53.912472] CPU: 1 PID: 1381 Comm: modprobe Tainted: G W O 4.20.9-clockworkpi-cpi3 #1
[ 53.921419] Hardware name: Allwinner sun8i Family
[ 53.926146] [<c010e674>] (unwind_backtrace) from [<c010b7f4>] (show_stack+0x10/0x14)
[ 53.933911] [<c010b7f4>] (show_stack) from [<c0705c50>] (dump_stack+0x84/0x98)
[ 53.941156] [<c0705c50>] (dump_stack) from [<c011cec8>] (__warn+0xfc/0x114)
[ 53.948120] [<c011cec8>] (__warn) from [<c011cff8>] (warn_slowpath_null+0x40/0x48)
[ 53.955686] [<c011cff8>] (warn_slowpath_null) from [<c03db5d0>] (__reset_control_get_internal+0xc0/0xe0)
[ 53.965159] [<c03db5d0>] (__reset_control_get_internal) from [<c03db764>] (__of_reset_control_get+0x174/0x1a0)
[ 53.975383] [<c03db764>] (__of_reset_control_get) from [<bf0626f0>] (mali_platform_device_register+0x134/0x89c [mali])
[ 53.986287] [<bf0626f0>] (mali_platform_device_register [mali]) from [<bf052994>] (init_module+0x8/0x70 [mali])
[ 53.996470] [<bf052994>] (init_module [mali]) from [<c010267c>] (do_one_initcall+0x54/0x194)
[ 54.004906] [<c010267c>] (do_one_initcall) from [<c0190aa4>] (do_init_module+0x60/0x364)
[ 54.012991] [<c0190aa4>] (do_init_module) from [<c018fbc4>] (load_module+0x1df8/0x2210)
[ 54.020989] [<c018fbc4>] (load_module) from [<c019022c>] (sys_finit_module+0xc8/0xd8)
[ 54.028811] [<c019022c>] (sys_finit_module) from [<c0101000>] (ret_fast_syscall+0x0/0x54)
[ 54.036975] Exception stack(0xec9a3fa8 to 0xec9a3ff0)
[ 54.042024] 3fa0: 00432e20 00432180 00000003 0041eadc 00000000 0041f1b0
[ 54.050193] 3fc0: 00432e20 00432180 21c38f00 0000017b 00040000 00000000 00000000 00432e20
[ 54.058377] 3fe0: bed083c8 bed083b8 004163af b6eb91c2
I may try a bit more before giving up on this. I’m just super curious to see if we could get fbturbo working properly with mali, as it should be more than just software rendering.
I’m going to be submitting a pull request to fix the ~/launcher/.cpirc so it loads the .xorg.conf and .xorg_lima.conf correctly, but even with that fbturbo still does not seem to be making use of mali though, same performance as just using fbdev.
I looked in the modules.builtin and you are correct, it does appear to have a mali module builtin but it is referenced as “mali-dp.ko”, not “mali.ko” which is what it is called when you build the mali kernel space module as an external module.
I also noticed that cat /proc/devices does not contain a reference to mali, which it should if it exists in the device tree and the mali kernel space module was loaded (maybe mali-dp is not the correct module). I noticed this when I tried to build the mali userspace modules (http://linux-sunxi.org/Mali_binary_driver#Installing_the_Mali_userspace_driver), the /dev/mali node does not exist either.
we could request fresh opengl so much more compatibility like in mainline gzdoom who dropped support of gl2
for now glmark2 crash :
cpi@clockworkpi:~/dev/glmark2$ sudo glmark2-es2-drm -s 320x240 --validate
Ignoring custom size 320x240 for validation. Using 800x600.
=======================================================
glmark2 2017.07
=======================================================
OpenGL Information
GL_VENDOR: lima
GL_RENDERER: Mali400
GL_VERSION: OpenGL ES 2.0 Mesa 18.3.0 (git-00d67e27d9)
=======================================================
[build] use-vbo=false:Error: Failed to set crtc: -13
Validation: Failure
[build] use-vbo=true:Error: Failed to set crtc: -13
Validation: Failure
[texture] texture-filter=nearest:Error: Failed to set crtc: -13
Validation: Failure
[texture] texture-filter=linear:Error: Failed to set crtc: -13
Validation: Failure
error: lima_blit not implemented
error: lima_blit not implemented
error: lima_blit not implemented
error: lima_blit not implemented
error: lima_blit not implemented
error: lima_blit not implemented
error: lima_blit not implemented
error: lima_blit not implemented
error: lima_blit not implemented
[texture] texture-filter=mipmap:Segmentation fault
os 0.4 does not contain modules folder for current kernel
mali-dp seem refer to mali display processor, the mali kernel parameter we spoken about last time refer to this,
as this page https://en.wikipedia.org/wiki/Mali_(GPU) it seem not related to mali 400 …
as you said my kernel was made crash launcher cause of bluetooth, i just enable it & recompile
can be found here > http://gs.dread.fr/kernel/latest/
as with last image i cannot use hw acceleration
[ 19.250] (II) AIGLX: Screen 0 is not DRI2 capable
[ 20.856] (II) IGLX: Loaded and initialized swrast
[ 20.856] (II) GLX: Initialized DRISWRAST GL provider for screen 0
checked 4.20 patch & 0.4 xorg log, enable some things like drm_sun4i but no luck for now
i’ll retry tomorow, it’s 4am Zzz
Sorry to reawaken an old thread, but after doing some testing with ptitSeb on the latest box86 fixes, he pointed out that my Gameshell seems to be running software OpenGL instead of using Lima, based on what it was producing in the logs. But I have it set to Lima, so I’m not sure what’s going on.
I was trying to find the old thread I remember where someone mentioned (perhaps you?) how to check in the system for whether Lima is active (not just in the launcher). Anyhow, I went ahead and ran glxgears and came up with this:
The llvmpipe thing is what ptitSeb saw in the logs and why he suggested it was not using Lima after all. This is all on 0.5 official.
I’m wondering if I somehow accidentally clobbered my GL drivers in some of my testing and experimental builds? I think it’s unlikely but I’m wondering what others might get if they run glxgears -info @javelinface, care to give that a try and share your results? Maybe it is using Lima and just reports it weird. But I’d like to be more certain. Thanks!