Unity 6 Android URP Baseline Frametime 50ms / 20 fps

The current baseline URP performance on Android is unacceptable.
I use a Redmi Note 10, I created a new URP project, switch to Android, create a build in this is what i get:

In unity 2022 i already used this device with URP and got good performance, so it must be a setup issue.
Things I already tried without any improvement:
swtich to release build (no profiler)
Disable Multithreaded rendering
Set target fps to 60
disable V-Sync

edit:
also tried disabling bloom and all other post processing effects.
helped a bit, but even disabling any graphics option an using 0.1 as resolution factor i cant get past 30 fps.

this is the result i get on the built in render Pipeline - 60fps:

Are you using opengl or vulkan?

Your graph is showing way more than 60fps, maybe you should use an in build FPS tracker or enable the render debugger in a development build?

Unity - Manual: Enable the Rendering Debugger in URP

You enable it in build with a three finger double tap, this also has FPS info in it.

i tried vulkan and OpenGL, no significant difference.

now i also tried the base URP 3D sample with Unity 2022.3, with that the frametime is around 20ms.

So just by switching from Unity 2022.3 to unity 6 the frametime increases from 20 to 50ms.

I also noticed that the graph in the profile indicate that the framerate is higher, but i also tested with an manual framecounter and a moving cube, the framrate really is that bad.

You have Rendering disabled in your CPU usage graph, that’s why it looks wrong. You can mess around in the render debugger on the android device to maybe find out what’s causing this.

What version of Unity 6 btw?

ahh right, disabled rendering in the graph makes sense.

Unfortunately also depp profiling does not tell anything about the inside of GfxDeviceVK.Present()

Its unity 6.0.23f1.

Semaphore Wait for signal accounts for 80% of total cpu usage. - Questions & Answers - Unity Discussions

This seems like a similar problem to here, one suggestion is disable multithreaded rendering.

In my testing this seems to solve the issue aswell, maybe it’s a bug with that feature?

i tried to disable multi threaded rendering, still same frame rate…

Hi, I am sorry that I could not help with the situation, but I just want to report I am facing the exact same situation:

  • Game was built in 2022.3 and upgraded to 6000.0.29f1.
  • In 2022.3, I was getting consistent 60fps on mid-Android devices (Samsung A21s)
  • Upgraded to 6000.0.29f1, fps dropped to 15 on mid-Android devices, and barely 50fps on Pixel 8.

Issue must be GPU-bound, since I am also getting Semaphore.WaitForSignal in profiler.

I have tried:

  • Enabling Render Graph API
  • Switching between OpenGLES3 and Vulkan: makes no difference.
  • Disable basically all options in URP Render Pipeline Asset

Just like OP, I am certain the performance issue has nothing to do with my game, but how Android setting was set up in Unity. I am certain of this because I have tested on all other platforms (windows, mac, iOS) and gotten consistent framerate on those devices, even devices older than Samsung A21S.

Has OP made any progress on this issue?

Thank you!

sorry no progress, im also sure that is a bug, so im just waiting that unity will hopefully resolve the issue:

https://unity3d.atlassian.net/servicedesk/customer/portal/2/IN-90790

Were you testing Vulkan or OpenGL?

I tried both, no significant difference between the 2.

Hello,

I had the same problem and found out after hours of searching that disabling “Post-Processing” on the camera get me from nearly 30fps to 60fps Permanent without making my game look bad or whatever.

Don’t forget this : " Application.targetFrameRate = 60; "

Hope this helps.

Hi,

I ran into the same problem after migrating a URP-project(using Vulkan) from 2021.3.26 to 6.0.48.

Building the Android package with Unity2021 and using a SamsungS22 resulted in ~60-80fps however an Android build with Unity6 with the same hardware and render-settings resulted in unusable 30fps.
(Running the game in the editor still worked fine with both versions)

After hours of analyzing with Profiler, trying all render settings possible and reading through countless discussion I found this page Unity - Scripting API: Application.targetFrameRate which suggests to also set QualitySettings.vSyncCount = 0; in addition to Application.targetFrameRate = 60; which was already mentioned by UDN_134595fe-bd46-4dff-a107-d7

After adding this to the Start() method of the first scene, the Android build from Unity6 started to behave (finally!!!) like the builds created with Unity2021 - getting again ~60-70fps with Post-Processing and Multithreading enabled.

Interestingly, for me it was not necessary to set .vSyncCount and .targetFrameRate manually via script in Unity2021 to get 60fps with an Android build.

can anyone fix this issue - pls tell me
on my testing use realme 9i can’t enable Post-Processing on camera

result on test (realme 9i)
on Post-Processing on camera | fps : < 20
off Post-Processing on camera | fps : 40++++

result on test (ipad air 10.9)
on Post-Processing on camera fps 40++++

thanks

That sounds about right looking at the specs on GSMArena. It’s a pretty budget tier phone. In my tests with the iPad 9th I’m constantly having to run the tablet at a very reduced resolution (typically 50% of base) with low-ish quality settings (shadows almost turned off) and it’s much more powerful than the Realme 9i.

https://www.gsmarena.com/realme_9i-11259.php

You’re going to need to tweak the asset for the quality settings, and I would start with a 0.5 render scale set to either automatic or FSR 1.

https://docs.unity3d.com/6000.0/Documentation/Manual/urp/universalrp-asset.html

Realistically though you’re simply never going to achieve more than 30 FPS with post processing, and that’s very normal with most mobile devices.

i found some solution for this , follow to setting tuning graphics by
Chapter | 7.1.1 DPI Settings just only setting Resolution Scaling Mode to Fixed DPI 300 and Resolution Scaling DPI Scale Factor to 0.8 , my game performance is good and can tick enable Post-Processing!!

tested from realmi 9i fps from <20 to 50++++

hope it help someone.

thanks a lot CyberAgent ref by : UnityPerformanceTuningBible/README_EN.md at main · CyberAgentGameEntertainment/UnityPerformanceTuningBible · GitHub

I don’t recommend a fixed DPI because different mobile devices have different DPIs. Some will have higher than 300 and some will have lower than 300. This can lead to cases where the game will perform very badly for some devices.

My earlier recommendation of 0.5 scale factor is still the best one in the thread because it’s a percentage decrease and not a fixed value.

In your case the fixed DPI of 300 (down from the 400 of your phone) and the scale factor of 0.8 are dropping you down to an effective DPI of 240 or 0.6 scale factor.