Closed static-void closed 5 years ago
Strange, there is no call to XGetVisualInfo in gl4es itself. Still, the way gl4es create the context doesn't seems to work here.
Can you uncomment line 36 of src/glx/glx.c
and make a run again. The glX call will be dumped, that should help pinpoint the issue.
Yep, I get this:
LIBGL: Initialising gl4es
LIBGL: v1.1.1 built on Dec 14 2018 15:29:02
LIBGL: stacktrace will be printed on crash
LIBGL: Using GLES 2.0 backend
LIBGL: loaded: libGLESv2.so
LIBGL: loaded: libEGL.so.1
LIBGL: Using GLES 2.0 backend
library "libwlparser.so" not found
LIBGL: Hardware Full NPOT detected and used
LIBGL: Extension GL_EXT_blend_minmax 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 Substract 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_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_EXT_color_buffer_float detected and used
LIBGL: Extension GL_EXT_color_buffer_half_float detected and used
LIBGL: high precision float in fragment shader available and used
LIBGL: Max vertex attrib: 16
LIBGL: Extension GL_OES_standard_derivatives detected and used
LIBGL: Max texture size: 8192
LIBGL: Max Varying Vector: 15
LIBGL: Texture Units: 8(8), Max lights: 8, Max planes: 6
LIBGL: Hardware vendor is ARM
LIBGL: Targeting OpenGL 2.0
LIBGL: glXMakeCurrent FBO workaround enabled
LIBGL: FBO workaround for using binded texture enabled
LIBGL: glX Will try to recycle EGL Surface
LIBGL: Current folder is:/home/gemini/project/gl4es2/build/lib
glXChooseVisual(0x7cb447c8f0, 0, 0x7fd4777198)
glXChooseFBConfig(0x7cb447c8f0, 0, 0x7fd4776f50, 0x7fd4776f4c)
FBConfig doubleBufferMode=1
FBConfig redBits=1
FBConfig greenBits=1
FBConfig blueBits=1
FBConfig depthBits=1
LIBGL: Stacktrace: 3
./libGL.so.1(+0xe4138)[0x7c9bbf3138]
linux-vdso.so.1(__kernel_rt_sigreturn+0x0)[0x7c9bdce4e0]
/usr/lib/aarch64-linux-gnu/libX11.so.6(XGetVisualInfo+0x28)[0x7c9b9759c0]
Segmentation fault (core dumped)```
So I would say it's line 1709 of src/glx/glx.c
that caused the crash. Can you add a printf of somthing before and after this line just to be sure.
I put printfs around it but neither prints :(
Just to check: I don't need glues do I? (Not currently using it) (Also, I am not using https://github.com/ptitSeb/GLU)
GLU can be needed for some software and games, but not for glxgears.
Also, I made a mistake, and it's more probably line 1632 unless it's line 1666.
To check, these are all egl_eglChooseConfig calls right? I put printfs around both, it prints them all and then prints "LIBGL: Stacktrace: 3" and then crashes
Line 1666 is something else, it's fillGLXFBConfig
call... I was thinking maybe the line 1472 with egl_eglGetConfigAttrib(eglDisplay, eglConfigs[i], EGL_NATIVE_VISUAL_ID, &configs[j]->associatedVisualId);
... or line 1477 with the XMatchVisualInfo(display, 0, glx_default_depth, TrueColor, &visual);
Alright, now it ends:
FBConfig doubleBufferMode=1
1632 before egl_eglChosseConfig
after egl_eglChooseConfig
1666 before fillGLXFBConfig
1472 before egl_eglGetConfigAttrib
LIBGL: Stacktrace: 3
<crash>
Ah good.
And if you comment line 1472?
LIBGL: Initialising gl4es
LIBGL: v1.1.1 built on Dec 14 2018 15:29:02
LIBGL: stacktrace will be printed on crash
LIBGL: Using GLES 2.0 backend
LIBGL: loaded: libGLESv2.so
LIBGL: loaded: libEGL.so.1
LIBGL: Using GLES 2.0 backend
library "libwlparser.so" not found
LIBGL: Hardware Full NPOT detected and used
LIBGL: Extension GL_EXT_blend_minmax 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 Substract 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_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_EXT_color_buffer_float detected and used
LIBGL: Extension GL_EXT_color_buffer_half_float detected and used
LIBGL: high precision float in fragment shader available and used
LIBGL: Max vertex attrib: 16
LIBGL: Extension GL_OES_standard_derivatives detected and used
LIBGL: Max texture size: 8192
LIBGL: Max Varying Vector: 15
LIBGL: Texture Units: 8(8), Max lights: 8, Max planes: 6
LIBGL: Hardware vendor is ARM
LIBGL: Targeting OpenGL 2.0
LIBGL: glXMakeCurrent FBO workaround enabled
LIBGL: FBO workaround for using binded texture enabled
LIBGL: glX Will try to recycle EGL Surface
LIBGL: Current folder is:/home/gemini/project/gl4es2/build/lib
glXChooseVisual(0x72044648f0, 0, 0x7fe73f4958)
glXChooseFBConfig(0x72044648f0, 0, 0x7fe73f4710, 0x7fe73f470c)
FBConfig doubleBufferMode=1
FBConfig redBits=1
FBConfig greenBits=1
FBConfig blueBits=1
FBConfig depthBits=1
1632 before egl_eglChooseConfig
after egl_eglChooseConfig
1666 before fillGLXFBConfig
1472 before egl_eglGetConfigAttrib
after egl_eglGetConfigAttrib
1477 before XMatchVisualInfo
after XMatchVisualInfo
1472 before egl_eglGetConfigAttrib
after egl_eglGetConfigAttrib
1477 before XMatchVisualInfo
after XMatchVisualInfo
1472 before egl_eglGetConfigAttrib
after egl_eglGetConfigAttrib
1477 before XMatchVisualInfo
after XMatchVisualInfo
1472 before egl_eglGetConfigAttrib
after egl_eglGetConfigAttrib
1477 before XMatchVisualInfo
after XMatchVisualInfo
1472 before egl_eglGetConfigAttrib
after egl_eglGetConfigAttrib
1477 before XMatchVisualInfo
after XMatchVisualInfo
1472 before egl_eglGetConfigAttrib
after egl_eglGetConfigAttrib
1477 before XMatchVisualInfo
after XMatchVisualInfo
1472 before egl_eglGetConfigAttrib
after egl_eglGetConfigAttrib
1477 before XMatchVisualInfo
after XMatchVisualInfo
1472 before egl_eglGetConfigAttrib
after egl_eglGetConfigAttrib
1477 before XMatchVisualInfo
after XMatchVisualInfo
1472 before egl_eglGetConfigAttrib
after egl_eglGetConfigAttrib
1477 before XMatchVisualInfo
after XMatchVisualInfo
1472 before egl_eglGetConfigAttrib
after egl_eglGetConfigAttrib
1477 before XMatchVisualInfo
after XMatchVisualInfo
1472 before egl_eglGetConfigAttrib
after egl_eglGetConfigAttrib
1477 before XMatchVisualInfo
after XMatchVisualInfo
1472 before egl_eglGetConfigAttrib
after egl_eglGetConfigAttrib
1477 before XMatchVisualInfo
after XMatchVisualInfo
1472 before egl_eglGetConfigAttrib
after egl_eglGetConfigAttrib
1477 before XMatchVisualInfo
after XMatchVisualInfo
1472 before egl_eglGetConfigAttrib
after egl_eglGetConfigAttrib
1477 before XMatchVisualInfo
after XMatchVisualInfo
after fillGLXFBConfig
glXChooseFBConfig found 14 config
glXCreateContext(0x72044648f0, 0x72043fd700, (nil), 1), latest_visual=0x72043fd700, fbcontext_count=0Creating R:8 G:8 B:8 A:0 Depth:24 Stencil:8 Multisample:0/0
=> 0x72044035c0
glXMakeCurrent(0x72044648f0, 0x2400002, 0x72044035c0), isPBuffer(drawable)=0, context->drawable=(nil), context->eglSurface=(nil)((nil)), context->doublebuff=1
Aborted (core dumped)
BGL: Initialising gl4es
LIBGL: v1.1.1 built on Dec 14 2018 15:29:02
LIBGL: stacktrace will be printed on crash
LIBGL: Using GLES 2.0 backend
LIBGL: loaded: libGLESv2.so
LIBGL: loaded: libEGL.so.1
LIBGL: Using GLES 2.0 backend
library "libwlparser.so" not found
LIBGL: Hardware Full NPOT detected and used
LIBGL: Extension GL_EXT_blend_minmax 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 Substract 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_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_EXT_color_buffer_float detected and used
LIBGL: Extension GL_EXT_color_buffer_half_float detected and used
LIBGL: high precision float in fragment shader available and used
LIBGL: Max vertex attrib: 16
LIBGL: Extension GL_OES_standard_derivatives detected and used
LIBGL: Max texture size: 8192
LIBGL: Max Varying Vector: 15
LIBGL: Texture Units: 8(8), Max lights: 8, Max planes: 6
LIBGL: Hardware vendor is ARM
LIBGL: Targeting OpenGL 2.0
LIBGL: glXMakeCurrent FBO workaround enabled
LIBGL: FBO workaround for using binded texture enabled
LIBGL: glX Will try to recycle EGL Surface
LIBGL: Current folder is:/home/gemini/project/gl4es2/build/lib
glXChooseVisual(0x72044648f0, 0, 0x7fe73f4958)
glXChooseFBConfig(0x72044648f0, 0, 0x7fe73f4710, 0x7fe73f470c)
FBConfig doubleBufferMode=1
FBConfig redBits=1
FBConfig greenBits=1
FBConfig blueBits=1
FBConfig depthBits=1
1632 before egl_eglChooseConfig
after egl_eglChooseConfig
1666 before fillGLXFBConfig
1472 before egl_eglGetConfigAttrib
after egl_eglGetConfigAttrib
1477 before XMatchVisualInfo
after XMatchVisualInfo
1472 before egl_eglGetConfigAttrib
after egl_eglGetConfigAttrib
1477 before XMatchVisualInfo
after XMatchVisualInfo
1472 before egl_eglGetConfigAttrib
after egl_eglGetConfigAttrib
1477 before XMatchVisualInfo
after XMatchVisualInfo
1472 before egl_eglGetConfigAttrib
after egl_eglGetConfigAttrib
1477 before XMatchVisualInfo
after XMatchVisualInfo
1472 before egl_eglGetConfigAttrib
after egl_eglGetConfigAttrib
1477 before XMatchVisualInfo
after XMatchVisualInfo
1472 before egl_eglGetConfigAttrib
after egl_eglGetConfigAttrib
1477 before XMatchVisualInfo
after XMatchVisualInfo
1472 before egl_eglGetConfigAttrib
after egl_eglGetConfigAttrib
1477 before XMatchVisualInfo
after XMatchVisualInfo
1472 before egl_eglGetConfigAttrib
after egl_eglGetConfigAttrib
1477 before XMatchVisualInfo
after XMatchVisualInfo
1472 before egl_eglGetConfigAttrib
after egl_eglGetConfigAttrib
1477 before XMatchVisualInfo
after XMatchVisualInfo
1472 before egl_eglGetConfigAttrib
after egl_eglGetConfigAttrib
1477 before XMatchVisualInfo
after XMatchVisualInfo
1472 before egl_eglGetConfigAttrib
after egl_eglGetConfigAttrib
1477 before XMatchVisualInfo
after XMatchVisualInfo
1472 before egl_eglGetConfigAttrib
after egl_eglGetConfigAttrib
1477 before XMatchVisualInfo
after XMatchVisualInfo
1472 before egl_eglGetConfigAttrib
after egl_eglGetConfigAttrib
1477 before XMatchVisualInfo
after XMatchVisualInfo
1472 before egl_eglGetConfigAttrib
after egl_eglGetConfigAttrib
1477 before XMatchVisualInfo
after XMatchVisualInfo
after fillGLXFBConfig
glXChooseFBConfig found 14 config
glXCreateContext(0x72044648f0, 0x72043fd700, (nil), 1), latest_visual=0x72043fd700, fbcontext_count=0Creating R:8 G:8 B:8 A:0 Depth:24 Stencil:8 Multisample:0/0
=> 0x72044035c0
glXMakeCurrent(0x72044648f0, 0x2400002, 0x72044035c0), isPBuffer(drawable)=0, context->drawable=(nil), context->eglSurface=(nil)((nil)), context->doublebuff=1
Aborted (core dumped)
Mmmm, so still crashes?
And with LIBGL_FB=1
?
It looks identical :( Actually not quite, it only tries once. I will dump it but got kids to get to bed for the next 2 hours or so
Ok. So it must be something on the init of EGL that makes it freaks out when trying to interact with X11.
And glshim works?
Yeah glshim works perfectly. I mean, it appears to have no env variables to configure it, and I don't know what FB rendering method it uses, but it's much faster
Much faster than LIBGL_FB=3 sure. glshim use LIBGL_FB=0 by default, and silently fallback to LIBGL_FB=1 if that fail. But the init phase is very different now.
If you use LIBGL_NOTEST=1
you still have the same issue?
Here's the output with LIBGL_FB=1
gemini@localhost:~/project/gl4es2/build/lib$ LD_LIBRARY_PATH=. LIBGL_STACKTRACE=1 LIBGL_FB=1 glxgears
LIBGL: Initialising gl4es
LIBGL: v1.1.1 built on Dec 14 2018 15:29:02
LIBGL: stacktrace will be printed on crash
LIBGL: framebuffer output enabled
LIBGL: Using GLES 2.0 backend
LIBGL: loaded: libGLESv2.so
LIBGL: loaded: libEGL.so.1
LIBGL: Using GLES 2.0 backend
library "libwlparser.so" not found
LIBGL: Hardware Full NPOT detected and used
LIBGL: Extension GL_EXT_blend_minmax 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 Substract 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_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_EXT_color_buffer_float detected and used
LIBGL: Extension GL_EXT_color_buffer_half_float detected and used
LIBGL: high precision float in fragment shader available and used
LIBGL: Max vertex attrib: 16
LIBGL: Extension GL_OES_standard_derivatives detected and used
LIBGL: Max texture size: 8192
LIBGL: Max Varying Vector: 15
LIBGL: Texture Units: 8(8), Max lights: 8, Max planes: 6
LIBGL: Hardware vendor is ARM
LIBGL: Targeting OpenGL 2.0
LIBGL: glXMakeCurrent FBO workaround enabled
LIBGL: FBO workaround for using binded texture enabled
LIBGL: Current folder is:/home/gemini/project/gl4es2/build/lib
glXChooseVisual(0x783fe7c8f0, 0, 0x7febed8798)
glXChooseFBConfig(0x783fe7c8f0, 0, 0x7febed8550, 0x7febed854c)
FBConfig doubleBufferMode=1
FBConfig redBits=1
FBConfig greenBits=1
FBConfig blueBits=1
FBConfig depthBits=1
1632 before egl_eglChooseConfig
after egl_eglChooseConfig
1666 before fillGLXFBConfig
1472 before egl_eglGetConfigAttrib
after egl_eglGetConfigAttrib
1477 before XMatchVisualInfo
after XMatchVisualInfo
1472 before egl_eglGetConfigAttrib
after egl_eglGetConfigAttrib
1477 before XMatchVisualInfo
after XMatchVisualInfo
1472 before egl_eglGetConfigAttrib
after egl_eglGetConfigAttrib
1477 before XMatchVisualInfo
after XMatchVisualInfo
1472 before egl_eglGetConfigAttrib
after egl_eglGetConfigAttrib
1477 before XMatchVisualInfo
after XMatchVisualInfo
1472 before egl_eglGetConfigAttrib
after egl_eglGetConfigAttrib
1477 before XMatchVisualInfo
after XMatchVisualInfo
1472 before egl_eglGetConfigAttrib
after egl_eglGetConfigAttrib
1477 before XMatchVisualInfo
after XMatchVisualInfo
1472 before egl_eglGetConfigAttrib
after egl_eglGetConfigAttrib
1477 before XMatchVisualInfo
after XMatchVisualInfo
1472 before egl_eglGetConfigAttrib
after egl_eglGetConfigAttrib
1477 before XMatchVisualInfo
after XMatchVisualInfo
1472 before egl_eglGetConfigAttrib
after egl_eglGetConfigAttrib
1477 before XMatchVisualInfo
after XMatchVisualInfo
1472 before egl_eglGetConfigAttrib
after egl_eglGetConfigAttrib
1477 before XMatchVisualInfo
after XMatchVisualInfo
1472 before egl_eglGetConfigAttrib
after egl_eglGetConfigAttrib
1477 before XMatchVisualInfo
after XMatchVisualInfo
1472 before egl_eglGetConfigAttrib
after egl_eglGetConfigAttrib
1477 before XMatchVisualInfo
after XMatchVisualInfo
1472 before egl_eglGetConfigAttrib
after egl_eglGetConfigAttrib
1477 before XMatchVisualInfo
after XMatchVisualInfo
1472 before egl_eglGetConfigAttrib
after egl_eglGetConfigAttrib
1477 before XMatchVisualInfo
after XMatchVisualInfo
after fillGLXFBConfig
glXChooseFBConfig found 14 config
glXCreateContext(0x783fe7c8f0, 0x783fe15700, (nil), 1), latest_visual=0x783fe15700, fbcontext_count=0Creating R:8 G:8 B:8 A:0 Depth:24 Stencil:8 Multisample:0/0
=> 0x783fe1b5c0
glXMakeCurrent(0x783fe7c8f0, 0x2400002, 0x783fe1b5c0), isPBuffer(drawable)=0, context->drawable=(nil), context->eglSurface=(nil)((nil)), context->doublebuff=1
Aborted (core dumped)
With LIBGL_NOTEST=1 and LIBGL_FB=1 it is identical to my last post
BUT with LIBGL_NOTEST=1 and LIBGL_FB=0 it works! 290ish fps windowed at default size!
Also, can you add in line 342, just after static int InitEGL(Display *display) {
this printf:
printf("InitEGL(%p), eglInitalized=%d\n"), display, eglInitialized);
Fullscreen, about 220 fps, but still in debug mode ATM with the commented line.
Ouput of that printf is: InitEGL(0x7f84a56ac0), eglInitialized=0
When its not working (LIBGL_NOTEST=0): InitEGL(0x753ad9a500), eglInitialized=0
But I'm guessing the address space randomisation is on, so you need the whole output? Will get back to you, got to go bath a toddler...
Ah interesting! So it's the hardware test at first, that is done on an offscreen pbuffer, that messed up with the rest. I'll see if I can fix that (because hardware test is still something usefull).
I will test with the original line uncommented again as well when I get back
In src/glx/hardext.c
line 300, just before the }
final, can you add
LOAD_EGL(eglTerminate);
egl_eglTerminate(eglDisplay);
To see if you can use it without LIBGL_NOTEST=1
@ptitSeb I think that is a bug in libhybris X11 EGL platform: https://github.com/NotKit/libhybris/blob/x11/hybris/egl/platforms/x11/eglplatform_x11.cpp#L195. Would eglGetConfigAttrib be invoked during offscreen test for EGL_NATIVE_VISUAL_ID without X11 display?
No, but I noticed that I don't call "eglTerminate" with the offscreen context, that why I asked you to try to close it in https://github.com/ptitSeb/gl4es/issues/75#issuecomment-447419251 (it's just a test, I'll do properly if it work)
Uncommented 1472 and added the two new lines to GetHardwareExtensions, and it works well with FB=0 and NOTEST=0. FB=1 still non-working.
BTW I've noticed glxgears rendering pauses when it prints out the fps, I am not sure if this is an issue of glxgears or not ... doesn't happen on my laptop but then it is much more powerful and doing ~12k fps
the fps stuff, yeah, it's probably better to redirect in a file to avoid console writing and so triggering some X11 drawinf that may interfere with GLES drawing...
I'll will do a clean version of the "close egl context used for hardware testing"
Also, FB=1 is a mode to by pass X11. Not all drivers are able to use it, so no issue if you cannot.
I thought I'd read that somewhere about FB=1. Thanks for tracking this down, you are providing an incredible level of support! :D
Thanks :)
I have just push commit 5cca292ca364118c0f1dfa7210a1d84efa9ba316 with the proper fix.
I'll let you close the ticket once you confirm it work (hopefully, it will).
Nice to see gl4es on more hardware. (I have seen a gemini, running the default linux distrib, last summer, and found it quite slow, mainly due to the hi-res screen, so it's nice to see 200+ fps on glxgears.)
Fix works perfectly, all that's needed to make things work now is LD_LIBRARY_PATH.
I think possibly quite a lot of work has gone in since you last saw it. @NotKit (above) is mostly responsible for the improvement in drivers etc I believe.
Interestingly glxgears is now pushing quite a lot more fps than es2gears, but they are no direct comparison so can't read too much into it. Time to try out some games...
BTW any plans to extend to later OGL versions?
Thanks again :)
Yeah, the version of the Gemini I used obviously had some software blitting for X11, so some window movement where quite slow.
OGL, yes, I have plan to connect to GLES3+ and try to be compatible with OGL 3.x. But I'm not there yet. I first have to add support for GL_TEXTURE_RECTANGLE and GL_TEXTURE_3D is shaders (and GL_TEXTURE_1D also), add support for 1 shader (vertex or fragment) without the other, and maybe also add support for old style shaders (used in Quake3 and friend). Also, I need to redo some port of the EGL/GLES loading before trying to move to GLES3... But yeah, I have plans to further enhance gl4es.
If you try some debian games, Neverball/Neverputt should be plug'n play. Same for foobillard++. If you try TORCS, I suggest you use LIBGL_BATCH=10
for a nice boost in fps. VDrift should also run (but I don't remember if it's debian repo).
Hello! I have built this on debian for the gemini, and I have some issues. All settings of LIBGL_FB options except for LIBGL_FB=3 result in a segfault (in libX11.so.6 XGetVisualInfo). LIBGL_FB=3 works but is very slow, for glxgears it gets about 70fps with the default window size, and 3 or 4 fps in fullscreen. With glshim it's more like 250 to 300 windowed and around 220 in fullscreen. I guess this is because with LIBGL_FB=3 implies copying buffers to screen and the resolution is quite high. I have tried the ES 1 backend, and various other options and build options. At present I am building with simply "cmake ..", but using one of the other targets does not make any difference.
I should mention that I don't quite know what is at fault here, because debian on the gemini uses libhybris and xf86-video-hwcomposer, which is a somewhat unique configuration I think.
I have built a debug version, but I think the stack is corrupt: