Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mesh with skeleton and animation crashes on Android (PowerVR) #93406

Closed
shahriarlabib000 opened this issue Jun 20, 2024 · 28 comments · Fixed by #94835
Closed

Mesh with skeleton and animation crashes on Android (PowerVR) #93406

shahriarlabib000 opened this issue Jun 20, 2024 · 28 comments · Fixed by #94835

Comments

@shahriarlabib000
Copy link
Contributor

shahriarlabib000 commented Jun 20, 2024

Tested versions

  • Reproducible in: 4.3.beta2,
  • probably Reproducible in: 4.2
  • Not Reproducible in: 3.6.beta5

System information

Android 11 - Godot V.4.3.beta2-compatibility renderer

Issue description

so i have a glb file which has a character with a skeleton and some animation.
when i try to run the scene godot crashes

Steps to reproduce

so have a file with some skeleton and animation. add a camera . run the program

Minimal reproduction project (MRP)

https://github.com/shahriarlabib000/godot_robot_crash_project
godot_robot_crash_project-main.zip

@Zireael07
Copy link
Contributor

what is your Android device? What GPU?

@shahriarlabib000
Copy link
Contributor Author

@Zireael07
Realme RMX2189

this is what i found on the internet
CPU Octa-core (4x2.3 GHz Cortex-A53 & 4x1.8 GHz Cortex-A53)
GPU PowerVR GE8320

@clayjohn
Copy link
Member

This reminds me of #90459 which we traced to a specific Adreno driver bug. Maybe the GE8320 has a similar bug.

@Calinou Calinou changed the title mesh with skeleton and animation crashes on android Mesh with skeleton and animation crashes on Android (PowerVR GPU) Jun 20, 2024
@shahriarlabib000
Copy link
Contributor Author

shahriarlabib000 commented Jun 21, 2024

I'd like to mention that the animation works fine in the editor when i play it before ever running the program. In a rare case i got the program to run. but if I try to run it again it crashes.If close godot and try to open the project again it kicks me back out of godot. If i delete ".godot" i can play the animation player in the editor again
https://youtu.be/IE6Chknj4yE?si=aLrSpOCthU-GgMNC

@shahriarlabib000
Copy link
Contributor Author

shahriarlabib000 commented Jun 21, 2024

I'd like to add that I tested the same animated glb on
godot 3.6.beta5 in GLES 2.0 renderer and it seems to work fine

@shahriarlabib000
Copy link
Contributor Author

this might be similar/duplicate of issue #89011

@b3ll-4rt
Copy link

b3ll-4rt commented Jul 5, 2024

My game crashs too, but it doesn't crash the first time I open the app. If i clear the app data it won't crash, if i close the app and reopen then it crashs

@b3ll-4rt
Copy link

b3ll-4rt commented Jul 5, 2024

this has only happened to me with the skeleton3d node, if I deactivate the node, the game doesn't crash, i have also noticed that the loading time increases a lot with the node active

@shahriarlabib000
Copy link
Contributor Author

@b3ll-4rt your specs? do you have a powerVR gpu as well?

@shahriarlabib000
Copy link
Contributor Author

shahriarlabib000 commented Jul 9, 2024

can confirm what @b3ll-4rt said.
tested with the same 3D model in my MRP.
Android specs:

CPU Octa-core (2x2.0 GHz Cortex-A75 & 6x1.8 GHz Cortex-A55)
GPU Mali-G52 MC2

in compatibility renderer
godot version:4.3.beta2

Edit: This crash behavior isn't consistent

@akien-mga akien-mga changed the title Mesh with skeleton and animation crashes on Android (PowerVR GPU) Mesh with skeleton and animation crashes on Android (PowerVR / Mali) Jul 12, 2024
@b3ll-4rt
Copy link

hi, i have test a scene with the new version 4.3 beta3 and the error/crash is still present

@shahriarlabib000
Copy link
Contributor Author

@b3ll-4rt please write your device gpu as it may help with debugging the issue

@Alex2782
Copy link
Contributor

Alex2782 commented Jul 12, 2024

maybe usefull for you

GdScript - System-Info
func _ready():
	# Labels
	$video_adapter_api_version.text = RenderingServer.get_video_adapter_api_version()
	$video_adapter_info.text = RenderingServer.get_video_adapter_vendor() + ", " + RenderingServer.get_video_adapter_name()
	$os_info.text = OS.get_name() + ", " + OS.get_model_name()

	print("video_adapter_api_version: ", RenderingServer.get_video_adapter_api_version())
	print("video_adapter_name: ", RenderingServer.get_video_adapter_name())
	print("video_adapter_type: ", RenderingServer.get_video_adapter_type())
	print("video_adapter_vendor: ", RenderingServer.get_video_adapter_vendor())
	print("video_adapter_driver_info: ", OS.get_video_adapter_driver_info())
	print("OS.model_name: ", OS.get_model_name())
	print("OS.name:",  OS.get_name())
	print("OS.processor_name: ", OS.get_processor_name())
	print("OS.get_video_adapter_driver_info: ", OS.get_video_adapter_driver_info())
	
	# example: OpenGL ES (Compatibility) on Adreno 650
	# ============================================================
	#video_adapter_api_version: OpenGL ES 3.2 V@0502.0 (GIT@193b2ee, I593c16c433, 1633593732) (Date:10/07/21)
	#video_adapter_name: Adreno (TM) 650
	#video_adapter_type: 0
	#video_adapter_vendor: Qualcomm
	#video_adapter_driver_info: []
	#OS.model_name: SM-T870
	#OS.name:Android
	#OS.processor_name:
	#OS.get_video_adapter_driver_info: []
	# ------------------------------------------------------------
	# Vulkan
	# ============================================================
	#video_adapter_api_version: 1.1.128
	#video_adapter_name: Adreno (TM) 650
	#video_adapter_type: 1
	#video_adapter_vendor: Qualcomm
	#video_adapter_driver_info: []
	#OS.model_name: SM-T870
	#OS.name:Android
	#OS.processor_name: 
	#OS.get_video_adapter_driver_info: []

if Remote Debug is possible, Developer-Mode / connected via USB cable: adb logcat > logs.txt

print outputs, crashes are also included

07-12 23:58:11.578  2326  2408 I godot   : video_adapter_api_version: 1.1.128
07-12 23:58:11.578  2326  2408 I godot   : video_adapter_name: Adreno (TM) 650

Vulkan: Realme RMX2189, OpenGL ES: RMX2189

@shahriarlabib000 shahriarlabib000 changed the title Mesh with skeleton and animation crashes on Android (PowerVR / Mali) Mesh with skeleton and animation crashes on Android (PowerVR) Jul 13, 2024
@MileyHollenberg
Copy link
Contributor

MileyHollenberg commented Jul 27, 2024

Got the same issue here as well, my device is an Oppo a57s running Android 12 which has the Imagination Technologies - PowerVR Rogue GE8320 GPU. As others have mentioned as well, on a first launch it works fine and the character renders as expected but any subsequent launches instantly crash the game.

Here's the full log from adb logcat, I didn't use any filters and I cutout the parts before I started the test game to reduce noise but keep as much data in there as possible:
3D Skeleton Crash.txt

In 4.2.2 the game wouldn't quite crash, it would simply freeze with a black screen and be very difficult to close on device, now in 4.3.rc1 it straight up crashes and this is the main crash log that's part of the attached log file:

2024-07-27 08:58:44.684 11754-11754 DEBUG pid-11754 A *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
2024-07-27 08:58:44.684 11754-11754 DEBUG pid-11754 A Build fingerprint: 'OPPO/CPH2385EEA/OP5353L1:12/SP1A.210812.016/S.GDPR.106c12c-2d78c:user/release-keys'
2024-07-27 08:58:44.684 11754-11754 DEBUG pid-11754 A Revision: '0'
2024-07-27 08:58:44.684 11754-11754 DEBUG pid-11754 A ABI: 'arm64'
2024-07-27 08:58:44.684 11754-11754 DEBUG pid-11754 A Timestamp: 2024-07-27 08:58:44.257284259+0200
2024-07-27 08:58:44.684 11754-11754 DEBUG pid-11754 A Process uptime: 0s
2024-07-27 08:58:44.684 11754-11754 DEBUG pid-11754 A Cmdline: com.example.charactertest
2024-07-27 08:58:44.684 11754-11754 DEBUG pid-11754 A pid: 11687, tid: 11732, name: GLThread 4079 >>> com.example.charactertest <<<
2024-07-27 08:58:44.684 11754-11754 DEBUG pid-11754 A uid: 10277
2024-07-27 08:58:44.685 11754-11754 DEBUG pid-11754 A signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x58
2024-07-27 08:58:44.685 11754-11754 DEBUG pid-11754 A Cause: null pointer dereference
2024-07-27 08:58:44.685 11754-11754 DEBUG pid-11754 A x0 b40000749b952ce0 x1 0000000000000000 x2 0000000000000050 x3 0000000000000005
2024-07-27 08:58:44.685 11754-11754 DEBUG pid-11754 A x4 000000749cd93600 x5 00000074ac703900 x6 0001000000000c80 x7 000100404c000f84
2024-07-27 08:58:44.685 11754-11754 DEBUG pid-11754 A x8 b40000752c187354 x9 b40000749b952cf0 x10 0000000000000000 x11 0000000000000000
2024-07-27 08:58:44.685 11754-11754 DEBUG pid-11754 A x12 00000074b4e75eb8 x13 0000000000001790 x14 000000000000002e x15 0000000000000000
2024-07-27 08:58:44.685 11754-11754 DEBUG pid-11754 A x16 00000075d5be9bd8 x17 00000075d5bdac88 x18 00000074ab940000 x19 0000000000000000
2024-07-27 08:58:44.685 11754-11754 DEBUG pid-11754 A x20 0000000000000003 x21 b4000074a4a13880 x22 0000000000000001 x23 0000000000000002
2024-07-27 08:58:44.685 11754-11754 DEBUG pid-11754 A x24 0000000000000000 x25 b40000752c187300 x26 b40000752c0c2a70 x27 b4000074a4a19d68
2024-07-27 08:58:44.685 11754-11754 DEBUG pid-11754 A x28 0000000000000000 x29 00000074ac707480
2024-07-27 08:58:44.685 11754-11754 DEBUG pid-11754 A lr 000000751298d0c8 sp 00000074ac7039b0 pc 000000751298d100 pst 0000000020000000
2024-07-27 08:58:44.685 11754-11754 DEBUG pid-11754 A backtrace:
2024-07-27 08:58:44.685 11754-11754 DEBUG pid-11754 A #00 pc 0000000000165100 /vendor/lib64/egl/libGLESv2_mtk.so (BuildId: b14fb91eaa8b167c27be07528a7299fe)
2024-07-27 08:58:44.685 11754-11754 DEBUG pid-11754 A #1 pc 000000000006c594 /vendor/lib64/egl/libGLESv2_mtk.so (BuildId: b14fb91eaa8b167c27be07528a7299fe)
2024-07-27 08:58:44.686 11754-11754 DEBUG pid-11754 A #2 pc 00000000000b39e4 /vendor/lib64/egl/libGLESv2_mtk.so (BuildId: b14fb91eaa8b167c27be07528a7299fe)
2024-07-27 08:58:44.686 11754-11754 DEBUG pid-11754 A #3 pc 00000000000b1fb4 /vendor/lib64/egl/libGLESv2_mtk.so (glDrawArrays+2880) (BuildId: b14fb91eaa8b167c27be07528a7299fe)
2024-07-27 08:58:44.686 11754-11754 DEBUG pid-11754 A #4 pc 0000000001a42b48 /data/app/~~D8cXgJXq8CcU9TbHfhwh8w==/com.example.charactertest-Aq-RE-2XJs9MRGTIfLZZiA==/lib/arm64/libgodot_android.so
2024-07-27 08:58:44.686 11754-11754 DEBUG pid-11754 A #5 pc 0000000001a46ea0 /data/app/~~D8cXgJXq8CcU9TbHfhwh8w==/com.example.charactertest-Aq-RE-2XJs9MRGTIfLZZiA==/lib/arm64/libgodot_android.so
2024-07-27 08:58:44.686 11754-11754 DEBUG pid-11754 A #6 pc 0000000002f89d1c /data/app/~~D8cXgJXq8CcU9TbHfhwh8w==/com.example.charactertest-Aq-RE-2XJs9MRGTIfLZZiA==/lib/arm64/libgodot_android.so
2024-07-27 08:58:44.686 11754-11754 DEBUG pid-11754 A #7 pc 0000000002f889f8 /data/app/~~D8cXgJXq8CcU9TbHfhwh8w==/com.example.charactertest-Aq-RE-2XJs9MRGTIfLZZiA==/lib/arm64/libgodot_android.so
2024-07-27 08:58:44.686 11754-11754 DEBUG pid-11754 A #8 pc 0000000002f53464 /data/app/~~D8cXgJXq8CcU9TbHfhwh8w==/com.example.charactertest-Aq-RE-2XJs9MRGTIfLZZiA==/lib/arm64/libgodot_android.so
2024-07-27 08:58:44.686 11754-11754 DEBUG pid-11754 A #9 pc 0000000002f53938 /data/app/~~D8cXgJXq8CcU9TbHfhwh8w==/com.example.charactertest-Aq-RE-2XJs9MRGTIfLZZiA==/lib/arm64/libgodot_android.so
2024-07-27 08:58:44.686 11754-11754 DEBUG pid-11754 A #10 pc 0000000002f55ca4 /data/app/~~D8cXgJXq8CcU9TbHfhwh8w==/com.example.charactertest-Aq-RE-2XJs9MRGTIfLZZiA==/lib/arm64/libgodot_android.so
2024-07-27 08:58:44.686 11754-11754 DEBUG pid-11754 A #11 pc 0000000002efed24 /data/app/~~D8cXgJXq8CcU9TbHfhwh8w==/com.example.charactertest-Aq-RE-2XJs9MRGTIfLZZiA==/lib/arm64/libgodot_android.so
2024-07-27 08:58:44.686 11754-11754 DEBUG pid-11754 A #12 pc 0000000000f1d0c4 /data/app/~~D8cXgJXq8CcU9TbHfhwh8w==/com.example.charactertest-Aq-RE-2XJs9MRGTIfLZZiA==/lib/arm64/libgodot_android.so
2024-07-27 08:58:44.686 11754-11754 DEBUG pid-11754 A #13 pc 0000000000ed5648 /data/app/~~D8cXgJXq8CcU9TbHfhwh8w==/com.example.charactertest-Aq-RE-2XJs9MRGTIfLZZiA==/lib/arm64/libgodot_android.so
2024-07-27 08:58:44.686 11754-11754 DEBUG pid-11754 A #14 pc 0000000000ee9c08 /data/app/~~D8cXgJXq8CcU9TbHfhwh8w==/com.example.charactertest-Aq-RE-2XJs9MRGTIfLZZiA==/lib/arm64/libgodot_android.so (Java_org_godotengine_godot_GodotLib_step+356)
2024-07-27 08:58:44.686 11754-11754 DEBUG pid-11754 A #15 pc 0000000000351e30 /apex/com.android.art/lib64/libart.so (art_quick_generic_jni_trampoline+144) (BuildId: ddcc440d4609d2099db9d20895487a78)
2024-07-27 08:58:44.686 11754-11754 DEBUG pid-11754 A #16 pc 000000000033b680 /apex/com.android.art/lib64/libart.so (art_quick_invoke_static_stub+640) (BuildId: ddcc440d4609d2099db9d20895487a78)
2024-07-27 08:58:44.686 11754-11754 DEBUG pid-11754 A #17 pc 00000000005117dc /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, bool, art::JValue*)+2364) (BuildId: ddcc440d4609d2099db9d20895487a78)
2024-07-27 08:58:44.687 11754-11754 DEBUG pid-11754 A #18 pc 0000000000491434 /apex/com.android.art/lib64/libart.so (void art::interpreter::ExecuteSwitchImplCpp(art::interpreter::SwitchImplContext*)+1892) (BuildId: ddcc440d4609d2099db9d20895487a78)
2024-07-27 08:58:44.687 11754-11754 DEBUG pid-11754 A #19 pc 00000000003545d8 /apex/com.android.art/lib64/libart.so (ExecuteSwitchImplAsm+8) (BuildId: ddcc440d4609d2099db9d20895487a78)
2024-07-27 08:58:44.687 11754-11754 DEBUG pid-11754 A #20 pc 000000000001fd2c [anon:dalvik-classes2.dex extracted in memory from /data/app/~~D8cXgJXq8CcU9TbHfhwh8w==/com.example.charactertest-Aq-RE-2XJs9MRGTIfLZZiA==/base.apk!classes2.dex] (org.godotengine.godot.gl.GodotRenderer.onDrawFrame+0)
2024-07-27 08:58:44.687 11754-11754 DEBUG pid-11754 A #21 pc 000000000036e6ec /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.__uniq.112435418011751916792819755956732575238.llvm.9545667076320299271)+232) (BuildId: ddcc440d4609d2099db9d20895487a78)
2024-07-27 08:58:44.687 11754-11754 DEBUG pid-11754 A #22 pc 0000000000512324 /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, bool, art::JValue*)+5252) (BuildId: ddcc440d4609d2099db9d20895487a78)
2024-07-27 08:58:44.687 11754-11754 DEBUG pid-11754 A #23 pc 0000000000491f74 /apex/com.android.art/lib64/libart.so (void art::interpreter::ExecuteSwitchImplCpp(art::interpreter::SwitchImplContext*)+4772) (BuildId: ddcc440d4609d2099db9d20895487a78)
2024-07-27 08:58:44.687 11754-11754 DEBUG pid-11754 A #24 pc 00000000003545d8 /apex/com.android.art/lib64/libart.so (ExecuteSwitchImplAsm+8) (BuildId: ddcc440d4609d2099db9d20895487a78)
2024-07-27 08:58:44.687 11754-11754 DEBUG pid-11754 A #25 pc 000000000001eb98 [anon:dalvik-classes2.dex extracted in memory from /data/app/~~D8cXgJXq8CcU9TbHfhwh8w==/com.example.charactertest-Aq-RE-2XJs9MRGTIfLZZiA==/base.apk!classes2.dex] (org.godotengine.godot.gl.GLSurfaceView$GLThread.guardedRun+0)
2024-07-27 08:58:44.687 11754-11754 DEBUG pid-11754 A #26 pc 000000000036e6ec /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.__uniq.112435418011751916792819755956732575238.llvm.9545667076320299271)+232) (BuildId: ddcc440d4609d2099db9d20895487a78)
2024-07-27 08:58:44.687 11754-11754 DEBUG pid-11754 A #27 pc 0000000000512324 /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, bool, art::JValue*)+5252) (BuildId: ddcc440d4609d2099db9d20895487a78)
2024-07-27 08:58:44.687 11754-11754 DEBUG pid-11754 A #28 pc 00000000004914fc /apex/com.android.art/lib64/libart.so (void art::interpreter::ExecuteSwitchImplCpp(art::interpreter::SwitchImplContext*)+2092) (BuildId: ddcc440d4609d2099db9d20895487a78)
2024-07-27 08:58:44.687 11754-11754 DEBUG pid-11754 A #29 pc 00000000003545d8 /apex/com.android.art/lib64/libart.so (ExecuteSwitchImplAsm+8) (BuildId: ddcc440d4609d2099db9d20895487a78)
2024-07-27 08:58:44.687 11754-11754 DEBUG pid-11754 A #30 pc 000000000001f4ac [anon:dalvik-classes2.dex extracted in memory from /data/app/~~D8cXgJXq8CcU9TbHfhwh8w==/com.example.charactertest-Aq-RE-2XJs9MRGTIfLZZiA==/base.apk!classes2.dex] (org.godotengine.godot.gl.GLSurfaceView$GLThread.run+0)
2024-07-27 08:58:44.687 11754-11754 DEBUG pid-11754 A #31 pc 000000000036e6ec /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.__uniq.112435418011751916792819755956732575238.llvm.9545667076320299271)+232) (BuildId: ddcc440d4609d2099db9d20895487a78)
2024-07-27 08:58:44.687 11754-11754 DEBUG pid-11754 A #32 pc 000000000036dfe4 /apex/com.android.art/lib64/libart.so (artQuickToInterpreterBridge+964) (BuildId: ddcc440d4609d2099db9d20895487a78)
2024-07-27 08:58:44.688 11754-11754 DEBUG pid-11754 A #33 pc 0000000000351f68 /apex/com.android.art/lib64/libart.so (art_quick_to_interpreter_bridge+88) (BuildId: ddcc440d4609d2099db9d20895487a78)
2024-07-27 08:58:44.688 11754-11754 DEBUG pid-11754 A #34 pc 000000000033b3a4 /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+612) (BuildId: ddcc440d4609d2099db9d20895487a78)
2024-07-27 08:58:44.688 11754-11754 DEBUG pid-11754 A #35 pc 000000000023a5d0 /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+144) (BuildId: ddcc440d4609d2099db9d20895487a78)
2024-07-27 08:58:44.688 11754-11754 DEBUG pid-11754 A #36 pc 0000000000539bf4 /apex/com.android.art/lib64/libart.so (art::Thread::CreateCallback(void*)+1600) (BuildId: ddcc440d4609d2099db9d20895487a78)
2024-07-27 08:58:44.688 11754-11754 DEBUG pid-11754 A #37 pc 00000000000dc188 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+264) (BuildId: f24f65acf653c409ca4332aced817a71)
2024-07-27 08:58:44.688 11754-11754 DEBUG pid-11754 A #38 pc 000000000007a438 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64) (BuildId: f24f65acf653c409ca4332aced817a71)

@MileyHollenberg
Copy link
Contributor

charactertest.zip
Here's a super simple reproduction project, it literally just has the X-Bot character from Mixamo in the base scene with a simple world environment for some basic lighting and a camera. First launch on devices with a low end PowerVR chip work fine, any launch after that will crash (exported APK also included in the zip file)

@MileyHollenberg
Copy link
Contributor

Currently debugging this issue and found the offending line at least, https://github.com/godotengine/godot/blob/master/drivers/gles3/storage/mesh_storage.cpp#L1235 this is where the crash happens for me. Already checked and the p_mi->mesh->surface[p_surface]->vertex_count is both valid and has a proper value (around 21K for my model). Also added a debug message after this call and that never got called so I'm 100% sure it's this line that's causing the issue at least.

So far I've not been able to find a clear cause plus I can't seem to print a stacktrace to see the entire chain of method calls. Seems this was only added in c++23 and Godot still uses c++17

@shahriarlabib000
Copy link
Contributor Author

@MileyHollenberg maybe chatting with the people on chat.godotengine.org will be more helpful.

@MileyHollenberg
Copy link
Contributor

Ah good call, will have a look

@MileyHollenberg
Copy link
Contributor

#94835 Here's the PR which fixes this issue

@shahriarlabib000
Copy link
Contributor Author

Hopefully it'll fix mine issue too 🤞

@Alex2782
Copy link
Contributor

Alex2782 commented Jul 30, 2024

https://github.com/shahriarlabib000/godot_robot_crash_project

On Firebase Redmi 6A, PowerVR Rogue GE8320 v4.3.rc1.official [e343dbb]
It looks as if the animations are not played cleanly. (CPU usage only up to 25%)

activated for autoplay and loop
image

Video: PowerVR Rogue GE8320

In the video it looks like the animation is not playing correctly. However, this could also be due to the hardware or Firebase itself.

web-build_20240730_ekvf_cactus-27-en_US-landscape_video.mp4
Video: better on F-01L Fujitsu, `Adreno (TM) 506`
web-build_20240730_ekvf_F01L-27-en_US-landscape_video.mp4

Maybe PowerVR Rogue is overwhelmed recording a video at the same time, faulty video codecs or something.

@MileyHollenberg
Copy link
Contributor

I'll have a quick look on my device here

@MileyHollenberg
Copy link
Contributor

Most likely the Firebase device or how they record the screen, runs at around 30FPS here which is very low for just 1 model but it looks way less choppy than that video. My Samsung Galaxy A54 runs it at a perfect 120FPS. For reference, my entire game, with lighting and shadows and such, runs at ~37FPS and has both 3D models and UI plus the game loop itself, so this model and animation is somehow quite heavy (though my game only has Tween animations and no actual character meshes, they're all static meshes exported in the desired pose as I didn't know how to fix the bug when I first started on this game :P )

@MileyHollenberg
Copy link
Contributor

MileyHollenberg commented Jul 30, 2024

Yeah 100% the model and environment setup. Just downloaded an animation from Mixamo with their Y Bot character and that's running at 60FPS with ease in a separate project

@shahriarlabib000
Copy link
Contributor Author

Did you try the MRP? It was heavy?

@MileyHollenberg
Copy link
Contributor

I just tried the one Alex posted

@shahriarlabib000
Copy link
Contributor Author

shahriarlabib000 commented Jul 31, 2024

Hmm the MRP robo model gets 37 fps in 4.2.2 after i export it as apk without shader cache.
In 3.6.0.beta.5 gles2 however i get stable 60 fps with the same model

@clayjohn
Copy link
Member

I think that is expected with such a low end device. We need to implement CPU skinning (which is what we use for GLES2 in 3.6) to get comparable speed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment