Opened 5 months ago

Closed 5 months ago

#14769 closed defect (fixed)

Scummvm android fails on Nexus 7 2012

Reported by: eingrossfilou Owned by: lephilousophe
Priority: normal Component: Port: Android
Version: Keywords: GLSL
Cc: eingrossfilou Game:

Description

I try to run ScummVM 2.7.x and 2.8 on a Nexus 7 2012 grouper running AOSP 7.1 (20231212): https://xdaforums.com/t/rom-nzh54d-2023-12-05-asus-nexus-7-2012-wifi-3g-f2fs-ext4-android-7-x-aosp.3467514/

ScummVM crash silently when starting. The 2.6.1 version is the last version that runs successfully on this device.

I use adb logcat to get the error message. Look like ScummVM is unable to get the Tegra 3 GLSL version since version 2.7.

Is there a way to force detection? Tegra 3 GPU is GL ES 2.0 and if I look at GL ES compatibility matrix GL ES 2.0 implies GLSL ES 1.00 https://stackoverflow.com/questions/27407774/get-supported-glsl-versions#27410925

12-26 14:59:06.477  8041  8063 D ScummVM : initializing 2D surface
12-26 14:59:06.493  8041  8063 I ScummVM : Using EGL 1.4 Android META-EGL (Android); GL OpenGL ES 2.0 14.01003/NVIDIA Tegra 3 (NVIDIA Corporation)
12-26 14:59:07.046  8041  8063 W ScummVM : WARNING: Could not parse GLSL version 'OpenGL ES GLSL 1.00'!
12-26 14:59:07.047  8041  8063 W ScummVM : WARNING: Shader: createCompatShader(): Required GLSL version 100 is not supported (0 maximum)!
12-26 14:59:07.047  8041  8063 E ScummVM : Required GLSL version 100 is not supported (0 maximum)!
12-26 14:59:07.624   510  4771 D GraphicsStats: Buffer count: 4
12-26 14:59:07.624   510  4771 I WindowManager: WIN DEATH: Window{283be87 u0 org.scummvm.scummvm/org.scummvm.scummvm.ScummVMActivity}
12-26 14:59:07.625   510  4771 W WindowManager: Force-removing child win Window{5d3bc23 u0 SurfaceView - org.scummvm.scummvm/org.scummvm.scummvm.ScummVMActivity} from container Window{283be87 u0 org.scummvm.scummvm/org.scummvm.scummvm.ScummVMActivity}
12-26 14:59:07.629   510  3215 I ActivityManager: Process org.scummvm.scummvm (pid 8041) has died
12-26 14:59:07.629   510  3215 D ActivityManager: cleanUpApplicationRecord -- 8041
12-26 14:59:07.630   510  3215 W ActivityManager: Force removing ActivityRecord{7654197 u0 org.scummvm.scummvm/.ScummVMActivity t444}: app died, no saved state
12-26 14:59:07.631   510  2246 I powerHAL::common: dealing with POWER_HINT_VSYNC -> boosting CPU for 100ms
12-26 14:59:07.641   510  4771 I powerHAL::common: dealing with POWER_HINT_INTERACTION -> boosting CPU for 100ms
12-26 14:59:07.787   189   189 I Zygote  : Process 8041 exited cleanly (1)
12-26 14:59:08.027   510  5489 W WindowManager: Failed looking up window
12-26 14:59:08.027   510  5489 W WindowManager: java.lang.IllegalArgumentException: Requested window android.os.BinderProxy@6000152 does not exist
12-26 14:59:08.027   510  5489 W WindowManager: 	at com.android.server.wm.WindowManagerService.windowForClientLocked(WindowManagerService.java:9444)
12-26 14:59:08.027   510  5489 W WindowManager: 	at com.android.server.wm.WindowManagerService.windowForClientLocked(WindowManagerService.java:9435)
12-26 14:59:08.027   510  5489 W WindowManager: 	at com.android.server.wm.WindowState$DeathRecipient.binderDied(WindowState.java:1807)
12-26 14:59:08.027   510  5489 W WindowManager: 	at android.os.BinderProxy.sendDeathNotice(Binder.java:690)
12-26 14:59:08.028   510  5489 I WindowManager: WIN DEATH: null

Change History (7)

comment:1 by antoniou79, 5 months ago

Could you please clarify what the 2.8.0 build you've tried was? Assuming it was a development build, what was the date (the build string after 2.8.0git would be helpful).

comment:2 by eingrossfilou, 5 months ago

You assume wrongly.

I used this build https://downloads.scummvm.org/frs/scummvm/2.8.0/scummvm-2.8.0-android-arm-v7a.apk, published on 2023-12-23 12:52, with following sha256: 69c971e8af8b31754e4efb7beee2fe97d54494fcc6710a5adad5593f529cc605

comment:3 by antoniou79, 5 months ago

I think I see the issue in the code, but I'm probably not the person to fix it.

We expect a certain format for the "GL_SHADING_LANGUAGE_VERSION" string that your case is not conforming to. I think it's probably because of it being very early (1.00).

So we expect something like:
"OpenGL ES GLSL ES 3.20"

But your device provides:
"OpenGL ES GLSL 1.00"

Note the missing extra "ES" after "GLSL".

We could add a fallback format for catching this case, but I don't think I have a device to test for it, so it would be sort of a blind fix.

Someone more familiar with the opengl context code would have to confirm/verify whether this is a proper solution or not.

comment:4 by eingrossfilou, 5 months ago

If there is a git branch for fixing this issue, I can build it following https://wiki.scummvm.org/index.php?title=Compiling_ScummVM/Android and test it on the device

Last edited 5 months ago by eingrossfilou (previous) (diff)

comment:5 by lephilousophe, 5 months ago

Owner: set to lephilousophe
Resolution: fixed
Status: newpending

Thanks for the report.

I believe this is now fixed by 03a53b1a1ece130d379a81dff614793b8fbc6719 and ac60a35a38b331a1cdb0d3684c1df71a0db9b4b7.

The next daily packages (in 24h or so) available at https://buildbot.scummvm.org/#/dailybuilds will have the fix.
Else, you can build from branches master (unstable) or branch-2-8 (future 2.8.1 version as 2.8.0 is already tagged).

comment:6 by eingrossfilou, 5 months ago

I get the branch-2-8 branch and build a debug build.

It works now. Many thanks!

Regards.

comment:7 by lephilousophe, 5 months ago

Status: pendingclosed
Note: See TracTickets for help on using tickets.