Issue with gl4es and Löve


baptist

Still Fresh
Joined
May 1, 2016
Messages
7
Hello!
I've tried running löve on my pyra, the final goal was to see if balatro can be played on it. (As it's a löve game without apparently any kind of DRM you just have to get it on steam grab the balatro.exe from it and launch it with the love command and it work).

So far I've installed love from the debian repo (mainly from bookworm but I also did some test with buster), and it work (the love demo you get by just launching the love command without argument AND balatro.exe) but it's laggy (the love demo is tollerable but balatro is really to laggy to be considered playable). I've also to compiled löve from source on my pyra but with the exact same result.

I ask on the forum and aTc kindly told me to try with the gl4es command in front of it, aTc also compiled the latest version of gl4es for pyra (buster and bookworm), thanks a lot by the way!
But as löve laggyvly run on pyra natively, with gl4es it just failed (lauching the löve demo or balatro.exe), I've tried to use some parameters specified on https://github.com/ptitSeb/gl4es/blob/master/USAGE.md, without any progress (thanks for this lovely documentation ptitSeb by the way).

Without gl4es, this is the the terminal output (which let me think the harware rendering is not used) :
Bash:
/bin/love-11.4
libGL error: MESA-LOADER: failed to open omapdrm: /usr/lib/dri/omapdrm_dri.so: cannot open shared object file: No such file or directory (search paths /usr/lib/arm-linux-gnueabihf/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)
libGL error: failed to load driver: omapdrm
libGL error: MESA-LOADER: failed to open omapdrm: /usr/lib/dri/omapdrm_dri.so: cannot open shared object file: No such file or directory (search paths /usr/lib/arm-linux-gnueabihf/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)
libGL error: failed to load driver: omapdrm

And this is the result with the gl4es command (a window appear though, but with only a blue background) :

Bash:
gl4es /bin/love-11.4
LIBGL: Initialising gl4es
LIBGL: v1.1.5 built on Apr 17 2024 19:35:45
LIBGL: Using GLES 2.0 backend
LIBGL: loaded: libGLESv2.so
LIBGL: loaded: libEGL.so
LIBGL: Using GLES 2.0 backend
LIBGL: Hardware Full NPOT detected and used
LIBGL: Extension GL_EXT_blend_minmax  detected and used
LIBGL: Extension GL_EXT_draw_buffers  detected and used
LIBGL: FBO are in core, and so used
LIBGL: PointSprite are in core, and so used
LIBGL: CubeMap are in core, and so used
LIBGL: BlendColor is in core, and so used
LIBGL: Blend Subtract is in core, and so used
LIBGL: Blend Function and Equation Separation is in core, and so used
LIBGL: Texture Mirrored Repeat is in core, and so used
LIBGL: Extension GL_OES_mapbuffer  detected
LIBGL: Extension GL_OES_element_index_uint  detected and used
LIBGL: Extension GL_OES_packed_depth_stencil  detected and used
LIBGL: Extension GL_OES_depth24  detected and used
LIBGL: Extension GL_OES_rgb8_rgba8  detected and used
LIBGL: Extension GL_EXT_multi_draw_arrays  detected
LIBGL: Extension GL_EXT_texture_format_BGRA8888  detected and used
LIBGL: Extension GL_OES_depth_texture  detected and used
LIBGL: Extension GL_EXT_texture_rg  detected and used
LIBGL: Extension GL_OES_texture_float  detected and used
LIBGL: Extension GL_OES_texture_half_float  detected and used
LIBGL: Extension GL_OES_fragment_precision_high  detected and used
LIBGL: Extension GL_EXT_shader_texture_lod detected and used
LIBGL: Max vertex attrib: 16
LIBGL: Extension GL_OES_standard_derivatives  detected and used
LIBGL: Extension GL_OES_get_program_binary  detected and used
LIBGL: Number of supported Program Binary Format: 1
LIBGL: Max texture size: 4096
LIBGL: Max Varying Vector: 8
LIBGL: Texture Units: 8/8 (hardware: 8), Max lights: 8, Max planes: 6
LIBGL: Max Color Attachments: 4 / Draw buffers: 4
LIBGL: Hardware vendor is Imagination Technologies
LIBGL: EGLImage to Texture2D supported
LIBGL: EGLImage to RenderBuffer supported
LIBGL: Targeting OpenGL 2.1
LIBGL: Not trying to batch small subsequent glDrawXXXX
LIBGL: Trying to use VBO
LIBGL: FBO workaround for using binded texture enabled
LIBGL: Force texture for Attachment color0 on FBO
LIBGL: Hack to trigger a SwapBuffers when a Full Framebuffer Blit on default FBO is done
LIBGL: glX Will try to recycle EGL Surface
LIBGL: Current folder is:/home/bapt
LIBGL: Loaded a PSA with 1 Precompiled Programs
DRI3 1.0
present 1.2
DRM FD 8
./dri3_ws.c:843: WSEGL_SwapControlInterval: WSEGL_SwapControlInterval 1

./dri3_ws.c:843: WSEGL_SwapControlInterval: WSEGL_SwapControlInterval 1

Error: [love "boot.lua"]:282: Cannot compile vertex shader code:
Compile failed.
ERROR: 0:5: Syntax error, cannot #define GL_ARB_draw_instanced, as GL_ is reserved for predefined macros
ERROR: 1 compilation errors. No code generated.


stack traceback:
    [love "boot.lua"]:345: in function <[love "boot.lua"]:341>
    [C]: in function 'setMode'
    [love "boot.lua"]:282: in function <[love "boot.lua"]:126>
    [C]: in function 'xpcall'
    [love "boot.lua"]:355: in function <[love "boot.lua"]:348>
    [C]: in function 'xpcall'
LIBGL: Shutting down

I suppose the issue is mainly this "Syntax error, cannot #define GL_ARB_draw_instanced, as GL_ is reserved for predefined macros" so I've tried to read the gl4es documentation and code in order to find a way to avoid this reservetion but I've reached the limit of my current code comprehension... So if someone understand this more than me, I will happily chat about it :).

Regards,

PS : I hope this thread is not inapropriate or in a wrong section of this forum.
 
Mmmm, that shader will probably not work with the draw instanced, even when removing that line. I guess I would have to try those latest love engine myself and see if I can workaround / add support for that, but I'm unsure when I will be able to take a look...
 
I don't know if balatro would work that way, but I managed to run a simple löve program using GLES directly some time ago.
I had to recompile SDL2 to take out OpenGL support entirely and use some env flags to force löve into using a GLES2 context.
I believe the flags are LOVE_USE_GLES and SDL_VIDEO_DRIVER, along with the ones on the wiki. Unsure because i've lost my sd card with the script that does all of this :/
Post automatically merged:

phew, nevermind I found it. There are the env variables I used :
export SDL_VIDEO_GLES2=1
export SDL_VIDEO_EGL_DRIVER=/opt/omap5-sgx-ddk-um-linux/lib/libEGL.so.1.14.3699939
export LD_LIBRARY_PATH=</path/to/custom/sdl2>
export SDL_VIDEO_GL_DRIVER=/opt/omap5-sgx-ddk-um-linux/lib/libGLESv2.so
export SDL_OPENGL_ES_DRIVER=1
export LOVE_GRAPHICS_USE_GLES=1

some of these might be overkill
 
Thanks! I will try to compile sdl2 without OpenGL in order to test it.
edit: I've tweaked the configure.ac file in order to deactivate all opengl variables, compiling is ok but after launching löve with the environment variables specified by Bytemare, I have the same result as previously, so I probably missed something.
 
Last edited:
Back
Top