Problem with WebGL and MALI GPU

We are having a serious problem with a GLTF binary file not running on WebGL on devices with different versions of the MALI GPU.
The same file on devices with Adreno GPUs and iPhone works perfectly.

We’ve tested our code with several models from Khronos’ sample repository and all of them worked just fine.
Debugging the problem with our model is driving us crazy as we can’t find the problem.

Has anyone had a similar problem? Any recommendations?
The model was animated in Maya and exported with Sketchfab’s GLTF plugin.

Any suggestion will be greatly appreciated.
Happy to provide more information if my description is not enough.

Thanks!

Welcome to the forums!

Please read The Forum Posting Guidelines. In particular, Posting Guideline #4.

What have you tried? What did you find?
All you’ve told us is the “GLTF binary file [is] not running on WebGL on devices with different versions of the MALI GPU”.
What is the specific error or error condition you’re getting? What GPUs do you get it on? What GPUs do you not?
What glTF and WebGL viewer(s) and renderer(s) have you tried?
Did you try to pare back your model until it works on those platforms/viewers? What did you find?
Is there anything unusual or notable about your model?
Did you intend to link to the model you’re having a problem with?

1 Like

Hi! Dark_Photon. Thanks for your reply. I know my description was vague, to say the least. It was rushed out.

Let me tell you more about this project.

This is a mobile web-based AR project for a client of ours.
We used the following libraries:

During our development phase, while waiting for a third party provider to deliver the final assets, we used the “ Cessium Man ” GLTF file. The AR experience with that file worked perfectly on every device we tested it.

When we finally received the GLTF asset, we used Don McCurdy’s GLTF viewer to view the resulting animations.

The files were generated using Sketchfab’s plugin for Maya.

It has two clips. One with the “idle” animation and another with the main acting.

The main acting features one of the characters singing while playing the piano and another using the lighter like in a concert.

The export was in binary format with the json and textures in a separate folder.

Even though the file presented errors, the animation played without problems and we didn’t think much of it at the moment.

We continued testing with the asset and nothing led us to think that there was a problem. That was until we tested it on a Samsung Galaxy J7 Prime and found out that the animation didn’t load correctly.

Basically what happened was that the scene, composed of two characters, a piano and a lighter would load up wrong. All the assets appeared centered in the scene and the characters in T pose.

When trying to play the animation, the only object that would animate the way it supposed to, was the lighter.

Further testing the issue we found out that the issue before mentioned only happened on devices running different versions of the MALI GPU.

Trying to narrow down the problem we asked the provider that sent us the assets, to produce several GLTF files with different characteristics.

We asked for only one of the characters with:

  • Full animation cycle.
  • No facial expressions and keeping the rest of the animation cycle.
  • Only facial expressions.

None of these assets worked. We had the same result as with the main asset.

We asked the provider to try a different tool to create the GLTF file. We suggested this exporter

However, the file generated with that exporter didn’t work altogether on any device. The GLTF validator threw a lot of errors.

Then we decided to try the sample as many of the assets on Khrono’s repository and check if it had something to do with the complexity of our file or it was a generalized issue.

So far every sample asset we tested worked fine.

What follows is the list of the devices where we tested the experience:

Devices where the GLTF file DID work :

  • Xiaomi Mi A1 - Adreno ™ 506
  • Moto G6 Plus - Adreno ™ 508
  • iPhone 6
  • iPhone 7 Plus
  • iPhone 8

Devices where the GLTF file DIDN’T work :

  • Samsung Galaxy A8 (SM-A530F) - Mali-G71
  • Samsung Galaxy S8 (SM-G950F) - Mali-G71
  • Samsung J7 Prime (SM-G610M) - Mali-T830

This is so far what I can tell you about our problem. If I missed something, please let me know.

In the following link, you’ll find a sample of the code we wrote to set up the scene and load the model and the validation report from Don McCurdy’s GLTF viewer.

As for the model. Since we don’t hold the rights for that IP, I’ve asked for permission to attach it to this post. If the client is ok with it, I’ll share the assets with you.

Looking forward to your comments.

Hopefully someone with experience exporting and playing animations via glTF that might have hit something similar once will notice your post and follow-up here.

I’ve highlighted a few things that caught my eye in your message, in hopes that it might maximize the chance of that happening.

Based on what you’ve provided above, my only question would be did you get “the GLTF asset” fixed so that so that the file no longer “presented errors”. If not, I would start there.

Also, I would start paring down the asset to correlate the behavior you’re seeing with some specific component of the asset. For the glTF experts monitoring here, you haven’t really provided any specifics about the content of the asset that is triggering the erroneous behavior. Just that it might relate to its use of animations and seems to correlate with rendering the glTF asset/animations on a Mali GPU+driver.

Hi!
Let me answer some of your comments.

The extra assets we requested to the provider to help us sort this out didn’t seem to have errors when reviewed with the GLTF validator (Don McCurdy’s).
However, all of them behaved exactly the same as the original asset when loaded into the AR scene. Model in T pose and the animation clip wouldn’t work.

What specifics would be relevant? I’ll be happy to provide as much information as I possibly can. If there are any other tools that you’d recommend to debug the file, I’ll appreciate it.

Thanks!