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.