OpenGLES with ARM Mali GPU and Linux X11 desktop

Questions about the LÖVE API, installing LÖVE and other support related questions go here.
Forum rules
Before you make a thread asking for help, read this.
Post Reply
User avatar
Popolon
Prole
Posts: 25
Joined: Mon Nov 07, 2016 11:03 am
Location: France/Paris

OpenGLES with ARM Mali GPU and Linux X11 desktop

Post by Popolon »

Hi all, I try to use Löve on an Asus chromebook C201, featuring a Rockchip RK3288 ARM SoC. It uses a Mali-T764 (4 cores version of the T760 ) GPU, Midgard architecture. I use the ARM binary blob driver for X11 (release r6p0) for RK3288 SoC (Firefly on ARM site), with native (not Crouton inside chromeOS) ArchLinuxARM and X11.

The acceleration works on some applications, but löve fail to uses it even by forcing GLES environment variable. I use the default archlinuxARM löve package (tried with both 0.10.1 and last one 0.10.2 packages, both fail the same way).

I made a short test program to display RendererInfo:

Code: Select all

 name, version, vendor, device = love.graphics.getRendererInfo()
function love.draw()
	love.graphics.print(name,5,5)
	love.graphics.print(version,5,15)
	love.graphics.print(vendor,5,25)
	love.graphics.print(device ,5,35)
end
I first set GLSL forced by using

Code: Select all

export LOVE_GRAPHICS_USE_OPENGLES=1
Then launch it, I see on the terminal (this message is classic on this system when an application try to Uses Full OpenGL (the memfd, could be linked to some library conflict, including Mali one, it doesn't display on other GL/GLES applications):

Code: Select all

shared memfd open() failed: Function not implemented
libGL error: unable to load driver: rockchip_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: rockchip
And then, the result in the window is:

Code: Select all

OPENGL ES
OPENGL ES 3.0 Mesa 12.0.3
VMWare INC.
Gallium 0.4 on llvmpipe (LLVM 3.9. 128 bits)
The fact that it uses, LLVMpipe fallback, that is really efficient for a pure software renderer, means it doesn't uses Mali GPU for acceleration.

As an exemple, glmark2 (an OpenGL/GLES benchmark tool) as several version including full openGL, openGL ES, OpenGL ES + DRM, etc...
glmark2-es2, that uses Mali HW accelerated driver display in my case:

Code: Select all

    OpenGL Information
    GL_VENDOR:     ARM
    GL_RENDERER:   Mali-T760
    GL_VERSION:    OpenGL ES 3.1 v1.r6p0-02rel0.4b8779afaaaf01b0c5ec7bfb4419c6ab
glmark2 that is full OpenGL version, display a sofware fallback with Gallium LLVMpipe driver display:

Code: Select all

libGL error: unable to load driver: rockchip_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: rockchip
[...]
    OpenGL Information
    GL_VENDOR:     VMware, Inc.
    GL_RENDERER:   Gallium 0.4 on llvmpipe (LLVM 3.9, 128 bits)
    GL_VERSION:    3.0 Mesa 12.0.3
Match the same full OpenGL usage than Löve.

GLES driver works well with some other open source application if this can help for better GLES test at start?:
* ppsspp-qt (psp emulator, version QT only, the other use fullGL)
* marble (A Qt openstreetmap/globe tool)
* dolphin-emu (Wii emulator)
* weston (wayland compositor)
* GF (Gamedev Framework, a young framwork in c++)
* Pencil2D a traditional 2d animation tool

Is there another mean to force GLES or something I can do to help debugging my case?
User avatar
raidho36
Party member
Posts: 2063
Joined: Mon Jun 17, 2013 12:00 pm

Re: OpenGLES with ARM Mali GPU and Linux X11 desktop

Post by raidho36 »

Does this system uses chroot? That may be core of the issue. Try building the framework from source and see if that helps.
User avatar
Popolon
Prole
Posts: 25
Joined: Mon Nov 07, 2016 11:03 am
Location: France/Paris

Re: OpenGLES with ARM Mali GPU and Linux X11 desktop

Post by Popolon »

The package is only build with ./configure --prefix=/usr, I compiled myself several version, all have the same issue, no chroot is used:

https://archlinuxarm.org/packages/armv7 ... s/PKGBUILD

I seen it can be improved with --enable-gme and libgme dependency (already packaged on archlinuxARM). But if that's not enable by default, that's perhaps because it's still experimental?

Perhaps a clue is what return love.graphics.getRendererInfo() :
* name = OpenGL ES, that's OK
* version = Open GL ES 3.0 Mesa 12.0.3 instead of OpenGL ES 3.1 v1.r6p0-02rel0.4b8779afaaaf01b0c5ec7bfb4419c6ab

And then use the fallback
* vendor = VMWare INC.
* version = Gallium 0.4 on llvmpipe (LLVM 3.9. 128 bits)

Generally both open source Mesa and Mali blob are installed on the system, but most GLES only application detect the good version. I believe SDL does that nicely.
Post Reply

Who is online

Users browsing this forum: Bing [Bot] and 188 guests