ev-map/EVMap

Empty map (OpenGL ES 3.0 required now?)

Closed this issue · 3 comments

I have installed the 1.9.0 update from F-Droid yesterday. With this update, no map is shown when I open the app. I can search for locations but a map will never show up and the loading bar below the search bar continues indefinitely.

ADB logcat prints:

05-25 10:39:58.977  1871  6726 I Mbgl-EGLConfigChooser: In emulator: false
05-25 10:39:58.977  1871  6726 E Mbgl-EGLConfigChooser: eglChooseConfig(NULL) returned error 12292
05-25 10:39:58.977  1871  6726 E Mbgl-EGLConfigChooser: eglChooseConfig() returned no configs.
05-25 10:39:58.978  1871  6726 E Mbgl-EGLConfigChooser: eglChooseConfig() returned error 12292
05-25 10:39:58.978  1871  6726 E Mbgl-EGLConfigChooser: No matching configurations after filtering
05-25 10:39:58.978  1871  6726 E Mbgl-EGLConfigChooser: No config chosen
05-25 10:39:58.978  1871  6726 E GLSurfaceView: failed to select an EGL configuration
05-25 10:39:58.978  1871  6726 E GLSurfaceView: mEglConfig not initialized
05-25 10:39:58.978  1871  6726 W GLSurfaceView: Warning, !readyToDraw() but waiting for draw finished! Early reporting draw finished.

Following the dependency chain (EVMap - AnyMaps - org.maplibre.gl:android-sdk:11.0.0-pre6), the errors occur here:

https://github.com/maplibre/maplibre-native/blob/android-v11.0.0-pre6/platform/android/MapLibreAndroid/src/main/java/org/maplibre/android/maps/renderer/egl/EGLConfigChooser.java#L65-L107

v11.0.0-pre6 is not the most up-to-date version, but there were no new commits regarding EGL. But digging through the repository, I came across this release note: https://github.com/maplibre/maplibre-native/releases/tag/android-v11.0.0 It seems like maplibre-native now depends on OpenGL ES 3.0, which is not supported by my hardware (Samsung Galaxy S5 mini with LineageOS 16):

$ adb shell dumpsys SurfaceFlinger | grep -i opengl
GLES: ARM, Mali-400 MP, OpenGL ES 2.0

I had to downgrade to be able to use EVMap, but this is not a long-term solution. Is it possible to stay on MapLibre v10.0 to support OpenGL ES 2.0 compatible devices (as stated in the v11.0 release notes)? It seems a bit drastic to require OpenGL ES 3.0 when so many other map apps work just fine even on much older devices.

StreetComplete, which also uses Jawg vector maps, works flawlessly on my phone. Though, they use https://github.com/tangrams/tangram-es as backend from what I've seen.

Hmm - yes, I'm also not totally in favor of MapLibre's decision to drop OpenGL ES 2.0, as it has also caused issues in some Android Emulators - but on the other hand it's understandable considering that GLES 3.0 is more than 12 years old now and has been available since Android 4.3.

One of the main reasons for switching to MapLibre was to get rid of the old unmaintained version of the Mapbox SDK. So being restricted to an old release of MapLibre kind of defeats that purpose - I am not sure whether they are planning to keep backporting things to the 10.x branch now that 11.0 is out.

As far as I can see, StreetComplete is also working on a switch to MapLibre, and they seem to be using v11 as well.

According to Google's statistics, GL ES 2.0 accounts for 4.1% of active Android devices. In the EVMap user base (those who installed from the Play Store), it's only about 1%. On the other hand, it may be higher for those who installed from F-Droid - there of course I don't have statistics.

So yeah, I guess we can downgrade back to 10.x for now - but if at some point there are changes that we need and won't be backported to 10.x, we will have to switch to 11.x.

Thank you for the revert.

I totally get that OpenGL ES 2.0 is quite outdated and there will be good reasons for dropping support. I don't expect anyone to go out of their way to support hardware that is nearly 10 years old. I won't hesitate to make my hands dirty by patching apps for myself so they will continue to run at some point in the future. But it was a bummer to see that a seemingly simple task like showing a map might be one of the first things that is no longer supported by my phone.