Can't run Tiled without GPU blob


diligentcircle

Well-Known Member
Joined
Aug 29, 2011
Messages
1,594
Age
30
Location
Milky Way galaxy
Website
onpon4.github.io
So, just to make sure, I tested Tiled first, with libgles-omap3-es23 and libgles-omap3-dm3730 still installed. It opened as expected. Then I removed these packages, and tried again (a couple times). I got this in /var/tmp/pndrun_tiled.out:

http://pastebin.com/FQ5qsxVk


To be perfectly clear, deleting the appdata directory doesn't solve it. My tests show consistently that Tiled runs when the proprietary OpenGL ES library is there, but otherwise fails with this error.


This type of thing seems to happen with some other PNDs as well, but I haven't tested anything else. I think KeePassX is another one of the affected PNDs, but I deleted that for an unrelated reason (can't use it to read my KeePass 1 database), so I'm not entirely sure. Also, Monsterz seems to be another case; I forgot to check it while the blob was still there, but without the blob there, a Python exception for a line saying "M = int(max(r, g, b ))" gets raised: "ValueError: function not supported". For that one, I checked in the Python interpreter, and indeed, that makes no sense; the int and max functions work just fine.


Does anyone know what's up here, and how to solve this (without re-installing the proprietary software I removed)?
 
Last edited by a moderator:
You will need the GPU blob to run quite a lot of applications / games.. ESPECIALLY libEGL.SO

I dunno whether you're thinking magic will happen if you delete it. There is no magic sir.
 
Last edited by a moderator:
OK, maybe I shouldn't have been so arrogant as to assume that Tiled doesn't use OpenGL. Please allow me to retcon the question:


How can I install a software implementation of OpenGL ES to replace the proprietary hardware implementation?
 
Last edited by a moderator:
You'll probably have to compile a software implementation which'll be pretty slow.  Something like this reference implementation.  It's BSD licensed, which may conflict with your requirements, but it's open source at least (if I'm getting my terminology right).

However, I suspect it'll be so slow as to make playing any games or other graphical applications rather pointless, although it'll almost certainly be possible to optimise the code, being as it is written for accuracy rather than performance (and targeting more software versions that you care about).  But I can't see many other people helping you with that, as I'd have thought most people would consider not using the GPU to do graphical work rather obtuse.

AFAIK nobody's succeeded in reverse engineering the GPU to any significant degree, so you'd be on your own trying to do that as well.
 
You'll probably have to compile a software implementation which'll be pretty slow.  Something like this reference implementation. It's BSD licensed, which may conflict with your requirements, but it's open source at least (if I'm getting my terminology right).
You're confusing "free software" with "copyleft". The BSD licenses are all libre. No one considers copyleft to be an ethical requirement; it's just a useful strategy.

But unless I misunderstand, you linked to a compiler for the OpenGL shader language (GLSL), not an implementation of OpenGL ES. ;)


But I've thought of something to try: Mesa has a software implementation of OpenGL ES. I guess I'll do that, then...
 
Last edited by a moderator:
Have fun with slow and unreliable GL calls.
Slow software OpenGL rendering is a lot better than the program not being able to run at all.

I can't seem to compile Mesa, though... it seems without some upgrades the newest version I can use is 7.9.2, which seems like it will work if I can manage to compile it, but I get an error when I try to build about missing libxml2. So I tried to install that with opkg, and it still failed. Even tried restarting the C/C++ dev tools PND after installing libxml2.

Man, this sucks. Most of the work I have to do in my game right now is level editing, and at this rate it's looking like I won't be able to do that on my Pandora. :(
 
If I remeber correctly, Tiled is a Qt app. Qt is linked to GLESv2, so yeah, libEGL is a requirement (but there is a software fallback mode). Compile Mesa with EGL/GLESv2 only support and put that in your /usr/bin, and enjoy the full slowiness of software rendering.
 
You can use https://github.com/lunixbochs/tinygles with https://github.com/lunixbochs/glshim which is actually pretty fast (I think the main bottleneck is memory bandwidth), but it's still at the point where you usually need to add features to make it work with a new program.
Hm, I get errors trying to build those on my Pandora. Is there something special I need to do? I just followed the instructions for glship ("cmake ." and then "make GL", though I had permission problems so I then did both of these with sudo), and I didn't see any instructions for tinygles, so for that I just tried "cmake ." and then "make" (and then the same commands with sudo). This is all of course using the C/C++ dev tools PND.

(but there is a software fallback mode)
Is there a way I can get Qt applications to use that fallback you're talking about?
 
Last edited by a moderator:
(but there is a software fallback mode)
Is there a way I can get Qt applications to use that fallback you're talking about?
To my knowledge, it's automatic as long as it fail to create a GLES|2 context. On Linux, Qt is linked at compile time to the GL libs (GLESv2 or GL in desktop mode). There is no dynamic mode yet (but it exist, with Qt5.5 on Windows only).
 
Back
Top