clockworkpi

Does GameShell Actually Use FBTurbo?

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.

check inside /usr/lib/xorg/modules/drivers

you could recompile it yourself but will need also compile libump

git clone --depth 1 https://github.com/linux-sunxi/libump.git
cd libump/
autoreconf -i
./configure
make -j4
sudo make install

git clone --depth 1 https://github.com/ssvb/xf86-video-fbturbo.git
cd xf86-video-fbturbo/
./autogen.sh
make -j4
sudo make install

cd /usr/lib/xorg/modules/drivers/
sudo mv fbturbo_drv.so fbturbo_drv.so.old
sudo mv fbturbo_drv.la fbturbo_drv.la.old
sudo cp /usr/local/lib/xorg/modules/drivers/fbturbo* .

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

Have we never actually been using fbturbo!?

1 Like

awesome %)

lima included in the clockwork image have some function unimplemented,
the one now included in mainline kernel must be much more advanced

with kernel & full gfx stack upgraded there was also 5~10 fps more in glxgear using fbdev

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.

clockwork patch for kernel 4.20 seem have mali enabled
https://raw.githubusercontent.com/clockworkpi/Kernel/master/CPI3_linux_4.20/cpi3_linux_4_20_1902.patch

+CONFIG_DRM_MALI_DISPLAY=y

https://bootlin.com/blog/mali-opengl-support-on-allwinner-platforms-with-mainline-linux/

blobs could be found here >

https://github.com/bootlin/mali-blobs
https://github.com/linux-sunxi/sunxi-mali-proprietary


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.

1 Like

++++1

and more generally let the community be a full part of future releases
this may not what you wanted, but you actually lack a lot about communication,

some peoples around try things going further, a bit of help could be nice.

2 Likes

haha I wish I can
But I am not the os image maker

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.

yes my patch on the kernel may not include bluetooth, i patched the initial patch, not 4.20 one, i’ll will check it when i’ll get a bit more time

dts was need multiples changes due to some pin rename, on my system latest dtb seem hang on boot due to wifi

graphic stack was need additional packages for compile, but worked fine without other needs once installed
i’ll also check them, i need time

isn’t mali referenced inside buildin file of the module directory ?

all of this is a bit messy :S hard to setup

here is dmesg & Xorg log for os 0.4 with lima enabled
http://gs.dread.fr/4/

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.

This is getting extroadinarily frustraing lol.

@yong or @guu will there be a new patch file, etc. added to https://github.com/clockworkpi/Kernel soon?

lima xorg conf file just refer modesetting, so kms, as it’s the default it may be ok anyway ?

i recompiled mesa / xorg / fbdev

cpi@clockworkpi:~$ export DISPLAY=:0.0
cpi@clockworkpi:~/dev/glmark2$ glxgears -info
GL_RENDERER   = Mali400
GL_VERSION    = 2.1 Mesa 18.3.0 (git-00d67e27d9)
GL_VENDOR     = lima
GL_EXTENSIONS = GL_ARB_multisample GL_EXT_abgr GL_EXT_bgra GL_EXT_blend_color ...
VisualID 238, 0xee
error: lima_blit not implemented

302 frames in 5.0 seconds = 60.361 FPS
299 frames in 5.0 seconds = 59.793 FPS
^C
cpi@clockworkpi:~$ es2gears
EGL_VERSION = 1.4
error: lima_blit not implemented

vertex shader info: 
fragment shader info: 
info: 
302 frames in 5.0 seconds = 60.364 FPS
299 frames in 5.0 seconds = 59.788 FPS
^C
cpi@clockworkpi:~$ glxinfo -B
name of display: :0.0
display: :0  screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
    Vendor: lima (0x13b5)
    Device: Mali400 (0xffffffff)
    Version: 18.3.0
    Accelerated: yes
    Video memory: 0MB
    Unified memory: yes
    Preferred profile: compat (0x2)
    Max core profile version: 0.0
    Max compat profile version: 2.1
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 2.0
OpenGL vendor string: lima
OpenGL renderer string: Mali400
OpenGL version string: 2.1 Mesa 18.3.0 (git-00d67e27d9)
OpenGL shading language version string: 1.20

OpenGL ES profile version string: OpenGL ES 2.0 Mesa 18.3.0 (git-00d67e27d9)
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 1.0.16

software glxgear / es2gears go 105 ~110 fps on my previous tests

but yet as hardware acceleration work on classic glxgears if i do :

cpi@clockworkpi:~/dev/glmark2$ MESA_GL_VERSION_OVERRIDE=4.3 glxgears -info
GL_RENDERER   = Mali400
GL_VERSION    = 4.3 (Compatibility Profile) Mesa 18.3.0 (git-00d67e27d9)
GL_VENDOR     = lima
GL_EXTENSIONS = GL_ARB_multisample GL_EXT_abgr GL_EXT_bgra ...
VisualID 238, 0xee
error: lima_blit not implemented

303 frames in 5.0 seconds = 60.388 FPS
300 frames in 5.0 seconds = 59.820 FPS

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 …

yes got last patch will be great \o/

Wait, does 0.4 still use the outdated Lima driver or the one in the mainline kernel?

don’t know, i need try my compiled 5.2, hope it will work with their dtb

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