Hi,
We use Unity to publish our games, and a pattern we have found is that the top ANRs occur on devices with the PowerVR 8320 GPU, most often with a 700x1600 screen resolution. The games are developed using Unity 2020 LTS and the default texture compression used is ETC2.
Could texture conversion be playing a role in the ANRs, or leading to excessive memory usage? The technical specifications at IMG GE8320 GPU - Imagination mention the GPU supports ETC2 / ASTC, but any confirmation from the community would help.
Thank you,
Mahesh
Hi Mahesh,
Welcome to the PowerVR Developer Forum!
We would need a development build (with debug flag enabled) of one of the games reportedly experiencing the ANR issue so we can try to reproduce and diagnose the problem.
You can raise a ticket in our Internal Support System by sending an email to devtech.portal@imgtec.com We will follow up with you privately.
Best regards,
Alejandro
Hard to say what’s the problem in your specific case, but the most common cause of ANRs on PowerVR is shader load time. The recommended solution is to reduce number of shader combinations, or simplify shaders. You should be able to measure the time it takes to load each shader to find the worst offenders. I’ve personally found that inline constants have a disproportionate effect over compile time and it may be helpful to replace them with uniform buffers or SSBOs, so that the compiler is not able to “optimize them out”.
It’d be good to know whether you are using Vulkan or OpenGL. ANRs on Vulkan are still a problem, because shaders are compiled at shader load time, not at pipeline creation time, so pipeline caching does not really help.
Hope that helps!
Hi Castano,
Apologies for the delayed response.
Thank you for this tip.
We are using OpenGL, and use Unity as our game engine with Vulcan disabled.
In the off-chance you are familiar with Unity, I did notice the following is disabled in our Unity settings.
Will keep this on in a upcoming build and try this out on a small subset of users.

Thank you,
Mahesh
I’m not familiar with Unity specifically, but I’ve run into this issue myself on previous projects. The solution we used was to limit the quality of the shaders on GLES/PVR and ensure the high quality variants were not loaded. Hopefully other Unity developers may be able to provide additional advice.