godot: Scenes with 3D nodes do not start on Android with Adreno 3xx and 5xx GPUs

Bugsquad edit:

Adreno GPU drivers have broken OpenGL ES 3.0 support, and there’s not much we can do about it without crippling Godot’s renderer for correct driver implementations from other GPU vendors.

The fix will come in Godot 3.1 with the new OpenGL ES 2.0 renderer, which should run fine on Adreno GPUs and will be enforced when such GPUs are detected (at least until we get test reports that Adreno eventually fixed their bogus drivers for OpenGL ES 3.0).

In the meantime, a potential workaround is documented in https://github.com/godotengine/godot/issues/12816#issuecomment-355991771


Operating system or device, Godot version, GPU Model and driver (if graphics related): Google Nexus 5 (Android 6.0.1), Godot Engine v3.0.alpha.build2, Qualcomm Adreno 330 (OpenGL ES 3.0).

Additional info: Godot Engine build and export templates were downloaded from here.

Issue description:

If scene contains some 3D-related nodes (e.g. MeshInstance with primitive mesh), then application freezes at Godot Engine splash screen.

adb logcat:

11-10 20:26:17.927 775 1392 I ActivityManager: START u0 {act=android.intent.action.MAIN flg=0x10000000 cmp=org.godotengine.nexus53dtest/org.godotengine.godot.Godot} from uid 2000 on display 0 11-10 20:26:17.950 29098 29098 D AndroidRuntime: Shutting down VM 11-10 20:26:17.978 775 4033 I ActivityManager: Start proc 29127:org.godotengine.nexus53dtest/u0a253 for activity org.godotengine.nexus53dtest/org.godotengine.godot.Godot 11-10 20:26:17.986 29127 29127 I art : Late-enabling -Xcheck:jni 11-10 20:26:18.029 775 1204 I ActivityManager: Config changes=480 {1.0 255mcc6mnc en_US ldltr sw360dp w592dp h336dp 480dpi nrml land finger -keyb/v/h -nav/h s.148} 11-10 20:26:18.038 775 874 I InputReader: Reconfiguring input devices. changes=0x00000004 11-10 20:26:18.038 775 874 I InputReader: Device reconfigured: id=4, name=‘touch_dev’, size 1080x1920, orientation 1, mode 1, display id 0 11-10 20:26:18.082 1389 1389 W Binder_6: type=1400 audit(0.0:432303): avc: denied { ioctl } for path=“socket:[1511054]” dev=“sockfs” ino=1511054 ioctlcmd=7704 scontext=u:r:system_server:s0 tcontext=u:r:system_server:s0 tclass=unix_stream_socket permissive=0 11-10 20:26:18.082 1389 1389 W Binder_6: type=1400 audit(0.0:432304): avc: denied { ioctl } for path=“socket:[1511054]” dev=“sockfs” ino=1511054 ioctlcmd=7704 scontext=u:r:system_server:s0 tcontext=u:r:system_server:s0 tclass=unix_stream_socket permissive=0 11-10 20:26:18.090 29127 29127 D GODOT : ** GODOT ACTIVITY CREATED HERE *** 11-10 20:26:18.129 29127 29127 D GODOT : command_line is null? yes 11-10 20:26:18.122 4046 4046 W Binder_10: type=1400 audit(0.0:432305): avc: denied { ioctl } for path=“socket:[1516672]” dev=“sockfs” ino=1516672 ioctlcmd=7704 scontext=u:r:system_server:s0 tcontext=u:r:system_server:s0 tclass=unix_stream_socket permissive=0 11-10 20:26:18.122 4046 4046 W Binder_10: type=1400 audit(0.0:432306): avc: denied { ioctl } for path=“socket:[1516672]” dev=“sockfs” ino=1516672 ioctlcmd=7704 scontext=u:r:system_server:s0 tcontext=u:r:system_server:s0 tclass=unix_stream_socket permissive=0 11-10 20:26:18.293 29127 29127 I godot : **INIT EVENT! - 0xb4d96a80 11-10 20:26:18.293 29127 29127 I godot : ***************** HELLO FROM JNI!!! 11-10 20:26:18.293 29127 29127 I godot : *******CLASS FOUND!!! 11-10 20:26:18.293 29127 29127 I godot : STEP2, 0x1004fe 11-10 20:26:18.293 29127 29127 I godot : STEP3 -1334633752 11-10 20:26:18.293 29127 29127 I godot : STEP4, 0x10001d 11-10 20:26:18.293 29127 29127 I godot : STEP4.5, 0x100502 11-10 20:26:18.294 29127 29127 I godot : STEP7 11-10 20:26:18.294 29127 29127 I godot : STEP8 11-10 20:26:18.294 29127 29127 I godot : *******GOT METHOD dir_open ok!! 11-10 20:26:18.294 29127 29127 I godot : *******GOT METHOD dir_next ok!! 11-10 20:26:18.294 29127 29127 I godot : *******GOT METHOD dir_close ok!! 11-10 20:26:18.294 29127 29127 I godot : *******GOT METHOD dir_is_dir ok!! 11-10 20:26:18.294 29127 29127 I godot : starting to attempt get methods 11-10 20:26:18.294 29127 29127 I godot : *******GOT METHOD init_audio ok!! 11-10 20:26:18.294 29127 29127 I godot : *******GOT METHOD write_buffer ok!! 11-10 20:26:18.294 29127 29127 I godot : *******GOT METHOD quit ok!! 11-10 20:26:18.294 29127 29127 I godot : *******GOT METHOD pause ok!! 11-10 20:26:18.294 29127 29127 I godot : test construction 5 11-10 20:26:18.294 29127 29127 I godot : running from dir / 11-10 20:26:18.309 29127 29158 I godot : **SETUP 11-10 20:26:18.309 29127 29158 I godot : CMDLINE LEN 0 - APK EXPANSION 0 11-10 20:26:18.312 1391 1391 W Binder_8: type=1400 audit(0.0:432307): avc: denied { ioctl } for path=“socket:[1516313]” dev=“sockfs” ino=1516313 ioctlcmd=7704 scontext=u:r:system_server:s0 tcontext=u:r:system_server:s0 tclass=unix_stream_socket permissive=0 11-10 20:26:18.312 1391 1391 W Binder_8: type=1400 audit(0.0:432308): avc: denied { ioctl } for path=“socket:[1516313]” dev=“sockfs” ino=1516313 ioctlcmd=7704 scontext=u:r:system_server:s0 tcontext=u:r:system_server:s0 tclass=unix_stream_socket permissive=0 11-10 20:26:18.312 495 495 W Binder_4: type=1400 audit(0.0:432309): avc: denied { ioctl } for path=“socket:[1517582]” dev=“sockfs” ino=1517582 ioctlcmd=7704 scontext=u:r:surfaceflinger:s0 tcontext=u:r:surfaceflinger:s0 tclass=unix_stream_socket permissive=0 11-10 20:26:18.312 495 495 W Binder_4: type=1400 audit(0.0:432310): avc: denied { ioctl } for path=“socket:[1517582]” dev=“sockfs” ino=1517582 ioctlcmd=7704 scontext=u:r:surfaceflinger:s0 tcontext=u:r:surfaceflinger:s0 tclass=unix_stream_socket permissive=0 11-10 20:26:18.331 29127 29159 D OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true 11-10 20:26:18.322 224 224 W Binder_1: type=1400 audit(0.0:432311): avc: denied { ioctl } for path=“socket:[1511059]” dev=“sockfs” ino=1511059 ioctlcmd=7704 scontext=u:r:surfaceflinger:s0 tcontext=u:r:surfaceflinger:s0 tclass=unix_stream_socket permissive=0 11-10 20:26:18.322 224 224 W Binder_1: type=1400 audit(0.0:432312): avc: denied { ioctl } for path=“socket:[1511059]” dev=“sockfs” ino=1511059 ioctlcmd=7704 scontext=u:r:surfaceflinger:s0 tcontext=u:r:surfaceflinger:s0 tclass=unix_stream_socket permissive=0 11-10 20:26:18.362 4038 4038 W Binder_D: type=1400 audit(0.0:432313): avc: denied { ioctl } for path=“socket:[1516315]” dev=“sockfs” ino=1516315 ioctlcmd=7704 scontext=u:r:system_server:s0 tcontext=u:r:system_server:s0 tclass=unix_stream_socket permissive=0 11-10 20:26:18.362 4038 4038 W Binder_D: type=1400 audit(0.0:432314): avc: denied { ioctl } for path=“socket:[1516315]” dev=“sockfs” ino=1516315 ioctlcmd=7704 scontext=u:r:system_server:s0 tcontext=u:r:system_server:s0 tclass=unix_stream_socket permissive=0 11-10 20:26:18.372 29127 29158 I godot : *****SETUP OK 11-10 20:26:18.372 2535 16326 I Icing : Indexing 318F571EA918ABF0F442A78012795AC8B9B9264C from com.google.android.gms 11-10 20:26:18.372 29127 29158 I godot : ANDROID MODULES: Nothing to load, aborting 11-10 20:26:18.419 29127 29159 I Adreno-EGL: <qeglDrvAPI_eglInitialize:379>: QUALCOMM Build: 10/21/15, 369a2ea, I96aee987eb 11-10 20:26:18.425 29127 29159 I OpenGLRenderer: Initialized EGL, version 1.4 11-10 20:26:18.429 2535 16326 I Icing : Indexing done 318F571EA918ABF0F442A78012795AC8B9B9264C 11-10 20:26:18.452 29127 29127 D GODOT : setVirtualKeyboardHeight: 0 11-10 20:26:18.459 29127 29158 W GodotView: creating OpenGL ES 3.0 context : 11-10 20:26:18.467 29127 29127 I godot : WARNING: not found: display/driver/keep_screen_on 11-10 20:26:18.471 29127 29158 I godot : ^^^^^ newcontext 0 11-10 20:26:18.471 29127 29158 I godot : ^^^^^ resize 0, 1920, 1080 11-10 20:26:18.471 29127 29158 I godot : **FIRST_STEP 11-10 20:26:18.494 29127 29158 I godot : OpenGL ES 3.0 Renderer: Adreno ™ 330 11-10 20:26:18.574 29127 29158 I godot : GLES3: max ubo light: 409 11-10 20:26:18.574 29127 29158 I godot : GLES3: max ubo reflections: 455, ubo size: 144 11-10 20:26:18.576 775 793 I ActivityManager: Displayed org.godotengine.nexus53dtest/org.godotengine.godot.Godot: +617ms 11-10 20:26:18.572 1204 1204 W Binder_4: type=1400 audit(0.0:432315): avc: denied { ioctl } for path=“socket:[1517591]” dev=“sockfs” ino=1517591 ioctlcmd=7704 scontext=u:r:system_server:s0 tcontext=u:r:system_server:s0 tclass=unix_stream_socket permissive=0 11-10 20:26:18.572 1204 1204 W Binder_4: type=1400 audit(0.0:432316): avc: denied { ioctl } for path=“socket:[1517591]” dev=“sockfs” ino=1517591 ioctlcmd=7704 scontext=u:r:system_server:s0 tcontext=u:r:system_server:s0 tclass=unix_stream_socket permissive=0 11-10 20:26:18.572 786 786 W Binder_2: type=1400 audit(0.0:432317): avc: denied { ioctl } for path=“socket:[1517590]” dev=“sockfs” ino=1517590 ioctlcmd=7704 scontext=u:r:system_server:s0 tcontext=u:r:system_server:s0 tclass=unix_stream_socket permissive=0 11-10 20:26:18.572 786 786 W Binder_2: type=1400 audit(0.0:432318): avc: denied { ioctl } for path=“socket:[1517590]” dev=“sockfs” ino=1517590 ioctlcmd=7704 scontext=u:r:system_server:s0 tcontext=u:r:system_server:s0 tclass=unix_stream_socket permissive=0 11-10 20:26:18.591 29127 29127 D GODOT : setVirtualKeyboardHeight: 0 11-10 20:26:18.603 775 793 I WindowManager: Screen frozen for +597ms due to Window{7e80055 u0 org.godotengine.nexus53dtest/org.godotengine.godot.Godot} 11-10 20:26:18.609 29127 29127 D GODOT : setVirtualKeyboardHeight: 0 11-10 20:26:18.625 29127 29158 I godot : OpenSL Init OK! 11-10 20:26:18.650 29127 29158 W AudioTrack: AUDIO_OUTPUT_FLAG_FAST denied by client; transfer 1, track 44100 Hz, output 48000 Hz 11-10 20:26:18.657 202 808 D audio_hw_primary: out_set_parameters: enter: usecase(1: low-latency-playback) kvpairs: routing=2 11-10 20:26:18.668 202 808 D audio_hw_primary: select_devices: out_snd_device(2: speaker) in_snd_device(0: none) 11-10 20:26:18.668 202 808 D msm8974_platform: platform_send_audio_calibration: sending audio calibration for snd_device(2) acdb_id(15) 11-10 20:26:18.668 202 808 D audio_hw_primary: enable_snd_device: snd_device(2: speaker) 11-10 20:26:18.671 202 808 D audio_hw_primary: enable_audio_route: apply and update mixer path: low-latency-playback 11-10 20:26:18.898 29127 29158 I godot : ARVR: Registered interface: Native mobile 11-10 20:26:19.398 29127 29158 E godot : ERROR: Error opening file: res://icon.png 11-10 20:26:19.398 29127 29158 E godot : At: core/io/image_loader.cpp:54:load_image() - Error opening file: res://icon.png 11-10 20:26:20.609 775 793 I art : Starting a blocking GC Explicit 11-10 20:26:20.686 775 793 I art : Explicit concurrent mark sweep GC freed 31273(2MB) AllocSpace objects, 1(20KB) LOS objects, 29% free, 38MB/54MB, paused 969us total 75.884ms 11-10 20:26:22.237 3193 3193 I WearableService: Wearable Services stopping 11-10 20:26:32.275 21643 21722 I Finsky : [8432] com.google.android.finsky.l.c.a(23): Completed 0 account content syncs with 0 successful. 11-10 20:26:32.275 21643 21643 I Finsky : [1] com.google.android.finsky.services.e.a(5): Installation state replication succeeded. 11-10 20:26:39.276 212 325 I ThermalEngine: TM Id ‘SKIN_THERMAL_management_1’ Sensor ‘xo_therm_pu2’ - alarm raised 1 at 40.0 degC 11-10 20:26:39.276 212 325 I ThermalEngine: ACTION: CPU - Setting CPU[0] to 1958400 11-10 20:26:39.276 212 325 I ThermalEngine: ACTION: CPU - Setting CPU[1] to 1958400 11-10 20:26:39.276 212 325 I ThermalEngine: ACTION: CPU - Setting CPU[2] to 1958400 11-10 20:26:39.276 212 325 I ThermalEngine: ACTION: CPU - Setting CPU[3] to 1958400 11-10 20:26:39.276 212 325 I ThermalEngine: ACTION: LCD - Setting max LCD brightness to 229

Text file format: logcat.txt

Possible references: #12117 #11693

Steps to reproduce:

  1. Open project with 3D node(s) in the main scene in Godot Engine editor.
  2. Make one-click deploy.

Link to minimal example project:

nexus-5-3d-test.zip

About this issue

  • Original URL
  • State: closed
  • Created 7 years ago
  • Comments: 49 (20 by maintainers)

Most upvoted comments

The bug reads more like “Godot doesn’t support some Adreno GPUs”, not “GLES3 backend doesn’t support <…>”. This should be fixed in 3.1 with GLES2 backend, so I think it needs to be tested and closed - otherwise people will think Godot still doesn’t support mobile.

Was reading some other troubleshooting references related to this and I noted that in many of the cases the Device Manufacturer’s ended up fixing this through Webview updates before Android 7. Since Webview is tied to Chrome version now, I thought I’d try updating the Pixel 2 to Android P beta and the issue is gone.

Thanks, closing as “fixed” (as best as we can, i.e. by providing a different renderer).

Specific bugs with the GLES2 renderer on such hardware should be reported in new issues, if not done already.

Confirm. The lighting doesn’t work but at least it doesn’t crash.

Kicking to 3.2, where it will probably be closed due GLES3 renderer being removed.

On gpaid, I got this incomplete frame: image

the ultimate call opengl : image

in render thread: image