Jump to content

RK3288 Media Script (TinkerBoard)


JMCC

Recommended Posts

THE MEDIA SCRIPT IS DEPRECATED, IN FAVOR OF THE OFFICIAL LEGACY MULTIMEDIA FRAMEWORK. PLEASE REFER TO THIS TOPIC:

 

 

 

The UN-official, UN-supported, UN-necessary, UN-popular, UN-precedented...

RK3288 MEDIA TESTING SCRIPT [2.0: Bionic update]

 

So here is the final release of the RK3288 media testing script. Basically, the script provides the following functionality:

  • Installing all the libraries and system configurations necessary for GPU accelerated X desktop, Chromium WebGL, full VPU video play acceleration up to 4k@30 HEVC (the maximum supported by the SoC), and GLES 3.1 / OpenCL 1.2 support.
  • Three video players supporting full VPU acceleration (RKMPP) and KMS display (GBM or a X11 DRM "hack", as described by the authors), namely: MPV, Gstreamer and Kodi 18.0 alpha preview.
  • Two example programs using the OpenCL functionality: Examples form the Arm Compute Library, and a GPU crypto miner (an old version, but small and simple).
  • A library that will act as an OpenGL to OpenGL-ES wrapper, allowing you to run programs that use OpenGL 1.5-2.0.
  • Two additional small packages, that have no big interest from the developer prospective, but I find them interesting to play with: Support libraries for commercial web video streaming (tested with Netflix), and a simple Pulseaudio GTK equalizer using LADSPA.

 

Here is a more thorough documentation:

 

Version 2.0 (Bionic):

Spoiler


ARMBIAN UNOFFICIAL RK3288 MEDIA TESTING SCRIPT
----------------------------------------------
v2.0 Bionic - 2018/10/22


This script will install several multimedia-related software pieces in a
RK3288 Ubuntu Bionic Armbian desktop default image (kernel 4.4.y).
Currently it only supports the installation of the features, while
uninstall must be performed manually.

The script must be run in a command line from the same directory it was
unpacked (./media-rk3288.sh), and will ask for superuser privileges if
not launched with "sudo". Each subfolder contains, in addition to the
packages needed for installation, a text file with information about the
sources for those packages.

The script will present the user with a menu where they can select the
features to be installed. Here is a brief description of each option:

- System: This option will install the base libraries, X server packages
          and system files configuration. It must be run at least once
          before installing any of the other features, or after any
          system upgrade that modified X or Chromium configuration.
          Enabling system config will also present the user with the
          choice of two different versions of the Rockchip X server:
            · Stable: The standard version that you can download from 
              Rockchip repos.
            . Experimental: This version is taken from some PR that 
              didn't make it into the release version, and is supposed
              to give better performance. More info here:
              https://github.com/rockchip-linux/xserver/pull/10
           
- Devel: When this option is enabled, the script will install the 
         development libraries for every other option that is selected.
         So, for example, if in your first run of the script you keep 
         this option disabled and enable the rest, it will install all 
         the features but without any devel lib. If eventually you need,
         e.g., to compile some app requiring Gstreamer development libs,
         then you can run again the script, and select only "Devel" and
         "Gstreamer", so in that run it will only install Gstreamer with
         the development libraries, without touching the rest.
         
- MPV: This is a RKMPP accelerated version of MPV. In order to use the 
       hardware acceleration, it needs to make use of KMS for display,
       which means that it will ignore the X server if it is running,
       and play video in a full-screen overlay, using keyboard or LIRC
       to control the player. Type "man mpv" for a list of keyboard
       controls (tip: shift+Q will save position and exit).
       Alternatively, you can also use software decoding, and output to
       a X window with mouse support. It will still have some display
       acceleration through X11/EGL, though not as efficient as GBM/KMS.
         · To use the X, non-RKMPP version, just type "mpv <file>" in
           the console, or use the launcher labeled simply "MPV".
         . To use the GBM+RKMPP version, type "mpv-gbm <file>", or use
           the "MPV (GBM)" launcher.
         · You can use the player even in a console-only session.

- Gstreamer: These are the Rockchip Gstreamer plugins for media playback
             and capture.
             Notice that the Gstreamer plugin is the only method that
             allows full RKMMP+KMS acceleration associated to a X 
             window.
               · To play a video in a X session, use the launcher "Rock-
                 chip Gst Player".
               . From the command line, in a X session, type:
                 "gst-play-1.0 --videosink=rkximagesink <file>"
               . From a console-only session, type:
                 "gst-play-1.0 --videosink=kmssink <file>"

- CLSamples: A couple of simple programs to test OpenCL capabilities:
	     · Compiled examples from the Arm Compute Library
	     . An old GPU crypto miner (cgminer) with support for
	       extra algorythms like Skein.
	     They are installed under ~/clsamples, where you can find
	     a readme.txt file with instructions.

- GL4ES: An Opengl-ES wrapper library that will allow you to use OpenGL
         1.5-2.0 compatible programs with hardware acceleration. 
         More info: https://github.com/ptitSeb/gl4es.
         · In order to make it easier to use the library, we have
           included a script called "glrun", that will set the proper
           environment variables. Launch your OpenGL program like this:
           "glrun <command>"
         
- Streaming: This will install the Widevine and Pepper-Flash libraries
             for Chrome, enabling you to stream videos from sites such
             as Netflix (tested) or Hulu (untested).
             It will also install the h264ify addon, which will force
             all Youtube videos to use the H.264 codec.

- Equalizer: A GTK-based equalizer for PulseAudio, using LADSPA. You
             need to enable it through the menu entry, and select the
             desired preset or tweak your own settings. The "Boosted"
             preset is recommended for everyday use.
             This package is old and unmaintained, but I still find it
             useful.

- Kodi: Kodi 18.0 Leia beta 3. This version is supposed to be stable
        enough for normal use. But the main purpose of including Kodi in
        the script is to test the new RKMPP+KMS implementation. We don't
        intend to offer a full-fledged distribution of Kodi. For that, I
        recommend using LibreELEC.
        It cannot be launched from an active X session, you need to
        switch to a virtual terminal first.
        · The "Kodi" desktop launcher will switch you to VT1, launch
          Kodi and then bring you back to VT7.
        · From the command line, in a X session, type:
          "kodi-gbm-wrapper" for the same effect.
        · If you are already in a console-only session, you can just 
          type "kodi".

All the RKMPP accelerated players can handle up to 4K@30 HEVC with
perfect smoothness.


Please report bugs and suggestions in the thread dedicated to this
script at the Armbian Forum. Enjoy!

JMCC.

 

 

Version 1.0 (Xenial):

Spoiler


ARMBIAN UNOFFICIAL RK3288 MEDIA TESTING SCRIPT
----------------------------------------------
v1.0 Xenial - 2018/05/16

This script will install several multimedia-related software pieces in a
RK3288 Ubuntu Xenial Armbian desktop default image (kernel 4.4.y).
Currently it only supports the installation of the features, while
uninstall must be performed manually.

The script must be run in a command line from the same directory it was
unpacked (./media-rk3288.sh), and will ask for superuser privileges if
not launched with "sudo". Each subfolder contains, in addition to the
packages needed for installation, a text file with information about the
sources for those packages.

The script will present the user with a menu where they can select the
features to be installed. Here is a brief description of each option:

- System: This option will install the base libraries, X server packages
          and system files configuration. It must be run at least once
          before installing any of the other features, or after any
          system upgrade that modified X or Chromium configuration.
          Enabling system config will also present the user with the
          choice of two different versions of the Rockchip X server:
            · An older version that replaces the standard 1.18.y server
              bundled with Xenial, and therefore doesn't need to install
              a backported version of the X server.
            . The most recent version from the Rockchip Git. It is based
              on X server versiojn 1.19.y, so it requires the
              installation of a backported X server.
           The older version does not have proper video Vsync, so it is
           not too recommended for multimedia use. It might also be less
           stable, more testing is needed to tell. On the other hand, it
           offers the possibility of enabling window manager compositing
           and gives a snappier desktop experience.
           
- Devel: When this option is enabled, the script will install the 
         development libraries for every other option that is enabled.
         So, for example, if in your first run of the script you keep 
         this option disabled and enable the rest, it will install all 
         the features but without any devel lib. If eventually you need,
         e.g., to compile some app requiring Gstreamer development libs,
         then you can run again the script, and select only "Devel" and
         "Gstreamer", so in that run it will only install Gstreamer with
         the development libraries, without touching the rest.
         
- MPV: This is a RKMPP accelerated version of MPV. In order to use the 
       hardware acceleration, it needs to make use of KMS for display,
       which means that it will ignore the X server if it is running,
       and play video in a full-screen overlay, using keyboard or LIRC
       to control the player. Type "man mpv" for a list of keyboard
       controls (tip: shift+Q will save position and exit).
       Alternatively, you can also use software decoding, and output to
       a X window with mouse support. It will still have some display
       acceleration through X11/EGL, though not as efficient as GBM/KMS.
         · To use the X, non-RKMPP version, just type "mpv <file>" in
           the console, or use the launcher labeled simply "MPV".
         . To use the GBM+RKMPP version, type "mpv-gbm <file>", or use
           the "MPV (GBM)" launcher.
         · You can use the player even in a console-only session.
- Gstreamer: These are the Rockchip Gstreamer plugins for media playback
             and capture. The plugins themselves are just a few small
             libs, but since the version shipped with Xenial is so old,
             we need to install also a full Gstreamer 1.12 backport.
             It will also install a demo Qt5 player.
             Notice that the Gstreamer plugin is the only method that
             allows full RKMMP+KMS acceleration associated to a X 
             window.
               · To play a video in a X session, use the launcher "Rock-
                 chip Gst Player".
               . From the command line, in a X session, type:
                 "gst-play-1.0 --videosink=rkximagesink <file>"
               . From a console-only session, type:
                 "gst-play-1.0 --videosink=kmssink <file>"
- CLSamples: A couple of simple programs to test OpenCL capabilities:
         · Compiled examples from the Arm Compute Library
         . An old GPU crypto miner (cgminer) with support for
           extra algorythms like Skein.
         They are installed under ~/clsamples, where you can find
         a readme.txt file with instructions.
- Streaming: This will install the Widevine and Pepper-Flash libraries
             for Chrome, enabling you to stream videos from sites such
             as Netflix (tested) or Hulu (untested).
             It will also install the h264ify addon, which will force
             all Youtube videos to use the H.264 codec.
- Equalizer: A GTK-based equalizer for PulseAudio, using LADSPA. You
             need to enable it through the menu entry, and select the
             desired preset or tweak your own settings. The "Boosted"
             preset is recommended for everyday use.
             This package is old and unmaintained, but I still find it
             useful.
- Kodi: A preview of Kodi 18.0 Leia. Since it is still in alpha state,
        it is not recommended for regular use, but you can test the
        quality of the new RKMPP+KMS implementation that is being
        added to this version. It will crash when trying to open a file
        from USB sticks or Samba share, so please copy them to the
        SD card before testing.
        It cannot be launched from an active X session, you need to
        switch to a virtual terminal first.
        · The "Kodi" desktop launcher will switch you to VT1, launch
          Kodi and then bring you back to VT7.
        · From the command line, in a X session, type:
          "kodi-gbm-wrapper" for the same effect.
        · If you are already in a console-only session, you can just 
          type "kodi".
All the RKMPP accelerated players can handle up to 4K@30 HEVC with
perfect smoothness.

Please report bugs and suggestions in the thread dedicated to this
script at the Armbian Forum. Enjoy!
JMCC.

 


>>> DOWNLOAD LINK (2.0, FOR BIONIC DESKTOP) <<<

 

> Older Download link (1.0, for Xenial) <

 

Instructions:

  1. Download the file above
  2. Untar it: tar xvf media-rk3288_*.tar.xz
  3. cd media-script
  4. ./media-rk3288.sh

 

Notes:

  • This script is not officially supported by the Armbian project. It is just a community effort to help the development of the main build, by experimenting with a possible implementation of the media capabilities of this particular SoC.
  • Therefore, questions about the script should not be laid out as support requests, but as commentaries or community peer-to-peer assistance.
  • That being said, all commentaries/suggestions/corrections are very welcome. In the same way, I will do my best to help solve any difficulty that may arise regarding the script.

 

Enjoy!

 

 

 

Link to comment
Share on other sites

Some technical notes:

 

@Igor @zador.blood.stained : I packaged the main debs in a way that they don't interfere with the mainstream Ubuntu ones, but at the same time can replace them. E.g.: the X server is called now "xserver-xorg-core-rockchip", but it provides the same version of the upstream "xserver-xorg-core", and therefore does not break anything when replaces it. I didn't care to do that with other packages that are clearly not going to become part of the Armbian build (e.g. Kodi).

 

If anyone wants to run some tests, I suggest the following:

sudo apt install glmark2-es2 clinfo
es2gears
glmark2-es2
clinfo

Also, opening Chromium and typing the address:

chrome://gpu

For last, the Rockchip mpp demos suite:

Spoiler

/usr/bin/avsd_test
/usr/bin/h264d_test
/usr/bin/jpegd_test
/usr/bin/mpi_dec_test
/usr/bin/mpi_enc_test
/usr/bin/mpi_rc2_test
/usr/bin/mpi_rc_test
/usr/bin/mpi_test
/usr/bin/mpp_info_test
/usr/bin/vp9d_test
/usr/bin/vpu_api_test

But I find all this stuff boring, I'd rather test just by using real-life programs.

Link to comment
Share on other sites

 

  Hide contents


          "kodi-gbm-wrapper" for the same effect.
        · If you are already in a console-only session, you can just 
          type "kodi".

All the RKMPP accelerated players can handle up to 4K@30 HEVC with
perfect smoothness.


Please report bugs and suggestions in the thread dedicated to this
script at the Armbian Forum. Enjoy!

JMCC.
 

 

 

Couldn't get kodi to play any video without crashing... it crashed as soon as attempt to enter video folder.  I've test v18 Leia under LibreELEC and Android without such a problem. 

Link to comment
Share on other sites

28 minutes ago, Samson said:

 

  Reveal hidden contents


          "kodi-gbm-wrapper" for the same effect.
        · If you are already in a console-only session, you can just 
          type "kodi".

All the RKMPP accelerated players can handle up to 4K@30 HEVC with
perfect smoothness.


Please report bugs and suggestions in the thread dedicated to this
script at the Armbian Forum. Enjoy!

JMCC.
 

 

 

Couldn't get kodi to play any video without crashing... it crashed as soon as attempt to enter video folder.  I've test v18 Leia under LibreELEC and Android without such a problem. 

Are you trying to open a video from a USB drive? If you read the docs, it says that the program crashes when trying to open a video from a USB, you must copy them to the SD card. I know it is a hassle, but that is why I say that it is only a preview, not suitable for regular use.

28 minutes ago, Samson said:

I've test v18 Leia under LibreELEC and Android without such a problem. 

Was it a RKMPP accelerated version? I am not aware that there is a relesed version of Kodi18 in LibreElec or Android with RKMPP. In other words: if it is a Rockchip device, and you can play smoothly 4k videos, then it uses RKMPP, otherwise it doesn't.

I know Kodi 18 can be more or less stable in some devices. But the RKMPP+GBM implementation is one of the latest incorporations and, according to the docs, it is not stable yet. So it is perfectly normal that you had a better experience with other implementations not using this new and experimental feature.

 

In case i am wrong, and your Kodi 18 build indeed uses RKMPP+GBM, please tell me the exact version number and I will build it (you can find it in ~/.kodi/temp/kodi.log).

Link to comment
Share on other sites

Yes, I read the docs and aware of the USB issue, my video folder is in a samba shared in the LAN, it scan the TV shows database without problems just crashed as soon as I attempt to enter the folder.

 

Both Kodi Leia are RKMPP accelerated, they can even play HEVC 10Bits in full speed.

 

LibreELEC can be downloaded:
http://test.libreelec.tv/LibreELEC-TinkerBoard.arm-9.0-nightly-20180517-2417476-rk3288.tar

 

and for Android version I just downloaded the 09 Apr night build from the official site.  LibreELEC version is less stable but the Android version I am actually using it in a daily basis with TinkerOS_Android V13.13.0.74, not a single crash.  I attempted to switch away from Android because my Air Mouse does not behave well under Android but works well under Linux/Windows.

 

I will dig the exact version number after back home. Thank you.

 

Link to comment
Share on other sites

4 hours ago, Samson said:

my video folder is in a samba shared in the LAN

Then we'll need to add that source to the list of ones causing a crash :) . For now, since it is a testing version, let us stick with videos in the SD card. It is possible that Libreelec has some workaround to prevent that crash. In any case, I don't think it is worth caring much about it, until there is some release (even if it is a beta, but not just a nightly) that supports a stable RKMPP. If it doesn't work then, we'll worry about it.

 

Also, we must remember that our goal here, for the time being, is not to create a working Kodi desktop, but just to test the RKMPP imprementation under Armbian.  We'll let the Kodi developers do their job, and when they finish, we'll try to port it here. 

 

[EDIT: I updated the documentation, to reflect that Samba shares also cause a crash]

Link to comment
Share on other sites

I got a series of errors with the miner program using the readme.txt command:

 

WARNING:  GPU_MAX_ALLOC_PERCENT is not specified!

WARNING: GPU_USE_SYNC_OBJECTS is not specified!

Error -6: Creating kernel from program

failed to init GPU thread 0

 

Link to comment
Share on other sites

17 minutes ago, TonyMac32 said:

Error -6: Creating kernel from program

failed to init GPU thread 0

I hit that error once, and a reboot fixed it. I suspect the cause may be a previous use of the GPU in the same session.

Link to comment
Share on other sites

About the warnings, these env variables shoud fix them. Not sure whether they also prevent the other error too:

export GPU_FORCE_64BIT_PTR=0
export GPU_USE_SYNC_OBJECTS=1
export GPU_MAX_ALLOC_PERCENT=100
export GPU_SINGLE_ALLOC_PERCENT=100
export GPU_MAX_HEAP_SIZE=100

 

Link to comment
Share on other sites

7 minutes ago, TonyMac32 said:

1 Mh/s ?!?!

He he, make up your mind you're on a scooter, not in a Ferrari. :D

However, these consumption measurements may give you some relief: idle 3.0W, GPU mining 4.3W (+1.3), CPU mining 11.6W (+8.6), CPU+GPU mining 12.8W (+9.8)

 

Also, it is interesting to see that RK3288 has Mali T760 4-core@600 Mhz, while Exynos 5422 has Mali T628 6-core@600 Mhz. Well, the TB performs at 1 Mh/s, and XU4 at 1.5 Mh/s. Performance/Mhz/core seems to be about the same in Mali T6xx and Mali T7xx.

Link to comment
Share on other sites

Well, the integrated Intel HD4600 of my desktop PC gives me about 6 Mh/s with the Skein algo, so the performance/consumption ratio of the little Mali is not near bad. Of course, in the pools most guys show above 50 Mh/s, some of them around the 1Gh, but they must have rigs with several Nvidia cards consuming at least hundreds of watts...

Link to comment
Share on other sites

10 hours ago, Tido said:

is it a bug or just a temporary Problem of this solution, for the time being until RK comes up with "the solution".

That said, I wouldn't spend time in minor things, as long as it overall works.

You're right. After all, I think sooner or later the best choice will be to start trying Wayland, once we get a stable Bionic desktop. It is very common to say that Wayland is the future for Linux desktops, but it is even more true in the case of SBC's since, from what I have read, EGL works much better in Wayland than in X11 .

Link to comment
Share on other sites

I wonder if someone tried the script on mainline kernel. I tried on Armbian Xubuntu 5.46 with mainline kernel 4.14.50.

I choose the "new" X.org way, and at the moment I get 1.19.3. The desktop is plenty fast and I'm using a special Firefox 59 build (download it here, referred from here). I have to say that this setup is surprisingly fast and very usable.

But looking into Xorg.0.log I see that glamor is failing to initialize EGL, also es2_info fails too, so everything seems to be done without any gpu acceleration.

glmark-es2 also fails to start and at least gives the EGL error:

paolo@xt:~/Downloads/media-script/packages/libs$ glmark2-es2 
Error: eglInitialize() failed with error: 0x3001
Error: eglInitialize() failed with error: 0x3001
Error: main: Could not initialize canvas

Trying to start it using GBM:

paolo@xt:~/Downloads/media-script/packages/libs$ LD_LIBRARY_PATH=/opt/libmali-gbm/ glmark2-es2 
Error: eglGetDisplay() failed with error: 0x3000
Error: eglGetDisplay() failed with error: 0x3000
Error: main: Could not initialize canvas

The kernel driver seems in place, no errors in my dmesg (except for the omnipresent master bind failed: -517)

Here is the dmesg output

Link to comment
Share on other sites

It used to work on mainline, but I'm afraid recently kernel driver has been updated, and the r14p0 library we are shipping in this package does not work with mainline anymore. Can you post  the output of

cat /sys/devices/platform/ffa30000.gpu/misc/mali0/device/gpuinfo

 

Link to comment
Share on other sites

19 hours ago, JMCC said:

It used to work on mainline, but I'm afraid recently kernel driver has been updated, and the r14p0 library we are shipping in this package does not work with mainline anymore. Can you post  the output of


cat /sys/devices/platform/ffa30000.gpu/misc/mali0/device/gpuinfo

 

 

Got this:

root@xt:/home/paolo# cat /sys/devices/platform/ffa30000.gpu/misc/mali0/device/gpuinfo
Mali-T76x 4 cores r0p0 0x0750

 

Link to comment
Share on other sites

23 hours ago, jock said:

Armbian Xubuntu 5.46

Armbian Xubuntu? What do you mean by that? Can you specify distro (Xenial, Stretch, Bionic)?

 

1 hour ago, jock said:

Mali-T76x 4 cores r0p0 0x0750

Seems correct. Can you post the error in Xorg.0.log?

Link to comment
Share on other sites

It is Armbian 5.46 Ubuntu Xenial with mainline kernel 4.14.52

Here is the Xorg.0.log, you can see that modesetting driver is complaining about being unable to initialize EGL.

 

I tried also to start from a brand new image, installed manually the libmali libaries, tried all flavours of them (fbdev, gdm, X11) except wayland, but none of them was able to get past the eglInitialize(), so I guess there's some incompatibility against the kernel driver

Link to comment
Share on other sites

4 hours ago, JMCC said:

OK. Please run "es2gears", and post the output. Also, "armbianmonitor -u".

 

armbianmonitor -u executes but just does not report the link to post here nor any errors. Don't know if it's a bug, the service is down or what else :unsure:

es2gears fails with x11 libmail and does a segmentation fault with gbm:

 

$ es2gears
EGLUT: failed to initialize EGL display

$ LD_LIBRARY_PATH=/opt/libmali-gbm/ es2gears
Segmentation fault

 

 

3 hours ago, Myy said:

I don't know which glmark2 you're using, but if you can, try to compile the latest version from their GIT https://github.com/glmark2/glmark2

 

If that doesn't work, could you try to paste the following :

 

The result of


echo $LD_LIBRARY_PATH

The 50 last lines of


strace glmark2-es2-drm

Executed as root from a simple terminal (CTRL+ALT+F1 or chvt 1 from SSH)

 

 

Ok freshly compiled glmark2 with drm-glesv2 and x11-glesv2 flavours. Running over GBM libmali this way: # LD_LIBRARY_PATH=/opt/libmali-gbm/ strace glmark2-es2-drm from a real virtual terminal with no X11 running, these are the last 50 lines of the strace:

Spoiler

close(5)                                = 0
eventfd2(0, EFD_NONBLOCK)               = 5
eventfd2(0, EFD_NONBLOCK)               = 6
eventfd2(0, EFD_NONBLOCK)               = 7
clone(child_stack=0xb52a4f88, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0xb52a54b8, tls=0xb52a5910, child_tidptr=0xb52a54b8) = 6693
clone(child_stack=0xb4aa4f88, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0xb4aa54b8, tls=0xb4aa5910, child_tidptr=0xb4aa54b8) = 6694
clone(child_stack=0xb42a4f88, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0xb42a54b8, tls=0xb42a5910, child_tidptr=0xb42a54b8) = 6695
clone(child_stack=0xb3aa4f88, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0xb3aa54b8, tls=0xb3aa5910, child_tidptr=0xb3aa54b8) = 6696
mmap2(NULL, 8388608, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0xb2aa6000
mprotect(0xb2aa6000, 4096, PROT_NONE)   = 0
clone(child_stack=0xb32a4f88, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0xb32a54b8, tls=0xb32a5910, child_tidptr=0xb32a54b8) = 6697
ioctl(4, _IOC(_IOC_READ|_IOC_WRITE, 0x82, 0x00, 0x38), 0xbeb5b270) = 0
ioctl(4, _IOC(_IOC_READ|_IOC_WRITE, 0x82, 0x00, 0x38), 0xbeb5b128) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 4, 0x41000) = 0xb6f54000
ioctl(4, _IOC(_IOC_READ|_IOC_WRITE, 0x82, 0x00, 0x38), 0xbeb5b068) = 0
mmap2(NULL, 4096, PROT_WRITE, MAP_SHARED, 4, 0x102020000) = -1 EOVERFLOW (Value too large for defined data type)
ioctl(4, _IOC(_IOC_READ|_IOC_WRITE, 0x82, 0x04, 0x10), 0xbeb5b2e0) = 0
write(5, "\1\0\0\0\0\0\0\0", 8)         = 8
futex(0xb32a54b8, FUTEX_WAIT, 6697, NULL) = 0
futex(0x1624128, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0xb3aa54b8, FUTEX_WAIT, 6696, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x16240c8, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0xb42a54b8, FUTEX_WAIT, 6695, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x1624068, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0xb4aa54b8, FUTEX_WAIT, 6694, NULL) = 0
futex(0x1624008, FUTEX_WAKE_PRIVATE, 1) = 1
close(7)                                = 0
close(6)                                = 0
close(5)                                = 0
futex(0xb5aa54b8, FUTEX_WAIT, 6692, NULL) = 0
munmap(0xb2aa6000, 8388608)             = 0
ioctl(4, _IOC(_IOC_READ|_IOC_WRITE, 0x82, 0x04, 0x10), 0xbeb5b200) = 0
munmap(0xb6f54000, 4096)                = 0
munmap(0xb6f55000, 4096)                = 0
close(4)                                = 0
brk(0x164f000)                          = 0x164f000
write(2, "Error: ", 7Error: )                  = 7
write(2, "eglInitialize() failed with erro"..., 41eglInitialize() failed with error: 0x3001) = 41
write(2, "\n", 1
)                       = 1
write(2, "Error: ", 7Error: )                  = 7
write(2, "main: Could not initialize canva"..., 33main: Could not initialize canvas) = 33
write(2, "\n", 1
)                       = 1
ioctl(3, DRM_IOCTL_MODE_SETCRTC, 0xbeb5b320) = 0
fstat64(3, {st_mode=S_IFCHR|0660, st_rdev=makedev(226, 0), ...}) = 0
fstat64(3, {st_mode=S_IFCHR|0660, st_rdev=makedev(226, 0), ...}) = 0
close(3)                                = 0
exit_group(1)                           = ?
+++ exited with 1 +++

 

Full strace is here

 

I also report the full strace running # strace glmark2-es2-drm without enforcing the LD_LIBRARY_PATH variable (which is empty) to use the system libmali for X11 installed by JMCC script

 

As a side note, I also swapped the kernel with a legacy 4.4.126 on the same installation. X11 starts with EGL acceleration enabled (no error in Xorg.0.log) and es2gears works without complaints.

 

edit:

another test with a slightly older mainline kernel (4.14.39) produces a successful result: glmark2-es2-drm against GBM libmali works wonderfully from a virtual terminal, glmark2-es2 against X11 libmali works wonderfully inside a desktop environment.

The 4.14.39 kernel still works fine even if used against the device tree from the 4.14.50 non-working kernel, so the source of problems is not the device tree.

Doing a diff over the two kernel configurations reports only some RTC drivers which have been compiled as modules in the newer kernel, but nothing directly related to GPU stuff.

lsmod reports a difference: with the working kernel mali_kbase module has 2 dependencies, instead with non-working kernel it has 0 dependencies.

As stated by @Myy in another thread, CMA memory reservation is not needed at all for the GPU acceleration: the working kernel has 0 kbytes reserved and works fine.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines