BXM-8-256 - Long list of driver issues

A few months ago I bought a smartphone, Moto G73; 8GB of ram paired with a recent Soc (MTK 930), I thought it was good enough for basic use, reading emails and accessing a few websites.

But I soon ran into a pile of bugs caused by the IMG driver, which proved that I was completely mistaken. Every now and then I see web pages being corrupted, texts being partially or completely unreadable. Missing interactive elements. Apps with WebGL acceleration close alone with error messages like “WebGL lost context”. The emulator (Dolphin) that I dared to test, using Vulkan as an API, doesn’t even open, but this would be tolerable if the basics were working.

What is the solution for this? How does IMG deliver to partners a driver incapable of properly performing the most basic of tasks? I’m going to attach some logs and images of corrupted apps, in addition to the long list of bugs and workarounds that Chrome reports, and it only increases with each new version. Maybe someone is interested in correcting and helping the millions of potentially affected users.

“Initializing gles2 renderer:
primary display bounds: (0, 0, 432, 960)
swap interval: 1 frames
Windowed mode.
UGUU couldn’t find glFlushMappedBufferRange: No OpenGL context has been made current
UGUU couldn’t find glGetBufferPointerv: No OpenGL context has been made current
UGUU couldn’t find glMapBufferRange: No OpenGL context has been made current
UGUU couldn’t find glUnmapBuffer: No OpenGL context has been made current
Vendor: ‘WebKit’
Renderer: ‘WebKit WebGL’
Version: ‘OpenGL ES 3.0 (WebGL 2.0 (OpenGL ES 3.0 Chromium))’
Display Info: None
Screen sizes: virtual=(1920, 1080) physical=(864, 1668) drawable=(2160, 4170)
Could not open ‘cache/shaders.txt’:
Maximum texture size: 4096x4096
Flip failed error(‘unable to show color buffer in an OS-native window (call to eglSwapBuffers failed, reporting an error of EGL_CONTEXT_LOST)’,)
Screen sizes: virtual=(1920, 1080) physical=(864, 1668) drawable=(2160, 4170)
Could not open ‘cache/shaders.txt’:
Maximum texture size: 4096x4234”

Hi Dante.M256 and welcome to the PowerVR Developer Forum!

First of all thanks for your message and for reporting the issues you are experiencing.

I would like to shed some light regarding those issues. PowerVR drivers pass all conformant tests in order to be used by our customers, who also test correct functionality on their side. Additionally, Web browsing, 2D and 3D applications and video games, multimedia and many other areas are tested in a large list of applications, including the most relevant ones on Android.

Graphical applications need to take each GPU architecture into account when being developed in order to support it. This applies to PowerVR as well and it might happen that some WebGL applications are not taking our GPUs into account. Regarding the Dolphin emulator not opening, it might be that Dolphin currently does not support our new Volcanic architecture present on BXM GPUs like the one on your phone (I can see plenty of examples of this emulator running fine on PowerVR GPUs from our previous architecture, like GE8300).

In order to diagnose whether the issues you are experiencing are driver errors or application-related errors I would ask please to provide the information below per issue so we can try to reproduce the exact error:

  • Web browser used, version and URL in case of a web-based issue. APK link in the Play Store in case of an application-related issue.
  • Description of the issue or an explanatory picture.
  • Reproduction steps.
  • Logcat output as a text file.
  • Android OS version.
  • PowerVR driver version (you can see how to obtain that information with the Aida64 apk, see more information in Vulkan: vkGetImageMemoryRequirements2 crashes on PowerVR 8300 - #4 by AlejandroC ).

Could you also please provide this information for the Copilot screenshot where there are wrongly displayed icons?

Also, even if developers target a specific platform, there might be particularities they are not aware which can lead to errors that look like a driver issue. For instance, some GPUs add a layer of driver robustness, transparent to the developer and the application, which avoids common errors like buffer access out of bounds. If that layer is not present in other GPUs like PowerVR, an application can fail on PowerVR and give the impression that it is a driver error while it is really an application error.

Lastly, regarding the information in chrome://gpu, the errors listed are not being missed, our engineers are working on fixing them in more recent versions of our drivers.

Best regards,
Alejandro

Driver: OpenGL ES 3.2 build 1.15@6133109
Chrome v 121.0.6167.178
OS: Android 13 T1TNS33.14-90-9-3
Copilot: v 27.8.420205670

Any webGL application that uses the RenPy engine causes the “WebGL lost context” error after a few minutes of gameplay.

*Bootstrap to the start of init.init. took 0.00s
Early init. took 0.03s
Loader init. took 0.28s
Loading error handling. took 0.21s
Loading script. took 6.90s
Loading save slot metadata. took 0.23s
Loading persistent. took 0.00s
import tarfile # precompiled from /lib/python2.7/tarfile.pyo
Failed to initialize steam: ImportError(‘No module named ctypes’,)
Set script version to: (7, 6, 3)

  • Init at renpy/common/00images.rpy:55 took 0.92100 s.
  • Init at renpy/common/00director.rpy:1378 took 0.40500 s.
    Running init code. took 4.81s
    Loading analysis data. took 1.54s
    Analyze and compile ATL. took 3.38s
    Reloading save slot metadata. took 0.15s
    Index archives took 0.01s
    Dump and make backups. took 0.01s
    Cleaning cache. took 0.01s
    Making clean stores. took 0.01s
    Initial gc. took 0.58s
    DPI scale factor: 1.000000
    Creating interface object. took 0.01s
    Cleaning stores took 0.00s
    Init translation took 0.70s
    Build styles took 0.03s
    Load screen analysis took 0.00s
    Analyze screens took 0.07s
    Save screen analysis took 0.15s
    Prepare screens took 0.41s
    Save pyanalysis. took 0.34s
    Save bytecode. took 0.31s
    Running _start took 0.01s

./renpy/audio/webaudio.pyo has bad mtime

import renpy.audio.webaudio # from ./renpy/audio/webaudio.py

wrote ./renpy/audio/webaudio.pyo

Interface start. took 0.72s
import renpy.gl.gldraw # builtin
import renpy.gl.gltexture # builtin

./renpy/gl/glfunctions.pyo has bad mtime

import renpy.gl.glfunctions # from ./renpy/gl/glfunctions.py

wrote ./renpy/gl/glfunctions.pyo

import renpy.gl.glrtt_copy # builtin
import renpy.gl.glrtt_fbo # builtin
import renpy.gl.glenviron_shader # builtin

Initializing gles2 renderer:
primary display bounds: (0, 0, 432, 960)
swap interval: 1 frames
Windowed mode.
UGUU couldn’t find glFlushMappedBufferRange: No OpenGL context has been made current
UGUU couldn’t find glGetBufferPointerv: No OpenGL context has been made current
UGUU couldn’t find glMapBufferRange: No OpenGL context has been made current
UGUU couldn’t find glUnmapBuffer: No OpenGL context has been made current
Vendor: ‘WebKit’
Renderer: ‘WebKit WebGL’
Version: ‘OpenGL ES 3.0 (WebGL 2.0 (OpenGL ES 3.0 Chromium))’
Display Info: None
Screen sizes: virtual=(1920, 1080) physical=(864, 1668) drawable=(2160, 4170)
Could not open ‘cache/shaders.txt’:
Maximum texture size: 4096x4096
Flip failed error(‘unable to show color buffer in an OS-native window (call to eglSwapBuffers failed, reporting an error of EGL_CONTEXT_LOST)’,)
Screen sizes: virtual=(1920, 1080) physical=(864, 1668) drawable=(2160, 4170)
Could not open ‘cache/shaders.txt’:
Maximum texture size: 4096x4234

I don’t know if I trust that IMG cares about fixing bugs, in the Chrome dev conversations, whose links are in that list, there are bugs dating back about 10 years ago that are still unresolved.

Chrome ends up maintaining several workarounds to try to avoid some of the driver bugs.
https://issues.chromium.org/issues/41006691

Hi Dante.M256,

Thanks a lot for providing all this information. We will look into the RenPy engine, Dolphin emulator and Copilot issues reported. Your details will make it easier to try reproduce the issues and diagnose them.

Best regards,
Alejandro

1 Like

More reports of the same problem I found.

1 Like

Hi Dante.M256,

I reviewed the issues reported.

  • Regarding RenPy engine failing on a Chrome web browser, I was able to reproduce the same issue you are experiencing, using the same device with the same driver version (1.15@6133109). I was able to verify the issues have been fixed internally and RenPy engine works fine in more recent driver versions. Unfortunately, IMG does not decide when GPU drivers are updated on retail devices, but the manufacturer does. In this case you will need to contact MediaTek to ask in this regard (as your device has a Dimensity 930 SoC).

  • Regarding the Copilot screen corruption, I was able to test build v27.9.420227014 with the same device and driver version you are using (1.15@6133109) and it showed correct results. Perhaps you could try updating / reinstalling the app?

  • Regarding the Dolphin emulator not starting in Vulkan, this does not seem a IMG driver-related issue but a Dolphin Emulator issue. As it is pointed out in Vukan issue - I can't run any game have you tried switching to using the stable version of the emulator? Vulkan API seems to be still not fully implemented in the emulator, using OpenGL ES might be the best idea if you can change the settings to optimize performance.

Best regards,
Alejandro

Hi, thanks for the update.

In the latest Android update my device received a new driver* that fixed the corruption of icons in the copilot. Chrome still has some bugs that are fixed by disabling hardware acceleration.

*OpenGL ES 3.2 build 1.15@6133110