Search Issue Tracker
By Design
Under Consideration for 2021.3.X, 2022.3.X, 6000.0.X, 6000.1.X
Votes
0
Found in
2021.3.46f1
2022.3.53f1
6000.0.31f1
6000.1.0a8
Issue ID
UUM-90475
Regression
No
[Android] Gfx.WaitForGfxCommandsFromMainThread high performance usage and inconsistency when built Player scene has Canvas GameObject on a specific Project
How to reproduce:
1. Open the attached “IN-83694” Project
2. Open the Profiler Window (Window → Analysis → Profiler)
3. Change the “Module Details panel” to Timeline
4. Connect a mobile device and Build and Run on it
5. In the Profiler target the connected device
6. Wait for the Profiler to receive CPU usage data
7. Select any point in the “Frame Chart”
8. Observe the “Render Thread” sections “Gfx.WaitForGfxCommandsFromMainThread” performance usage
9. Back out to the Home section in the device (Send the app to the Foreground)
10. Re-open the Player in the device and re-target the device in the Profiler
11. Observe the “Render Thread” sections “Gfx.WaitForGfxCommandsFromMainThread” performance usage
Expected result: Consistent performance and or low usage
Actual result: Significant performance usage (~24.5ms) and inconsistent
Reproducible with: 2021.3.46f1, 2022.3.53f1, 6000.0.31f1, 6000.1.0a8
Testing environment: Windows 11
Reproducible on:
VLNQA00499, Google Pixel 7 (Pixel 7), Android 15, CPU: Google Tensor G2, GPU: Mali-G710
VLNQA00498, Google Pixel 7 (Pixel 7), Android 13, CPU: Google Tensor G2, GPU: Mali-G710
VLNQA00517 - OnePlus 10 Pro 5G (NE2213), CPU: Snapdragon 8 Gen 1 (SM8450), GPU: Adreno 730, OS: 12
VLNQA00411 - Galaxy Z Fold3 5G (SM-F926B), CPU: Snapdragon 888, GPU: Adreno 660, OS: 11
VLNQA00374 - Galaxy S21 Plus 5G (SM-G996U), CPU: Snapdragon 888, GPU: Adreno 660, OS: 11
VLNQA00218 - Samsung Galaxy Note 9 USA (SM-N960U), CPU: Snapdragon 845 SDM845, GPU: Adreno 630, OS: 8.1.0
VLNQA00122 - Samsung Galaxy S9 (SM-G960F), CPU: Exynos 9 Series 9810, GPU: Mali-G72, OS: 10.0.0
Not reproducible on:
VLNQA00557 - Google Pixel XL (Pixel XL), CPU: Snapdragon 821 MSM8996 Pro, GPU: Adreno 530, OS: 10
Notes:
- Note that user reported the performance degradation with Gfx.WaitForPresentOnGfxThread, however this was not observed and the issue was not only reproducible on Google Pixel 7 phones
- Using OpenGLES3 Graphics API appears to lower the Gfx.WaitForGfxCommandsFromMainThread usage but raises the RenderLoop usage from ~1.00-3.00ms to ~20.00ms
- Not reproducible on Standalone and Editor Play Mode
Comments (1)
-
chalon4
Jan 09, 2025 07:29
This case is a glitch from our point of view.
This glitch occurs about 1~2 times out of 10 times and can be resolved by returning the USB to the terminal.
If targetFrameRate is set to 20 in a game project with some load, the FPS drops to single digits, such as 8-10, which is a noticeable glitch. This is probably why there are so few reports of this problem. In the game we are working on, targetFrameRate is sometimes set to 20, which is problematic.
Add comment
All about bugs
View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.
Latest issues
- Undoing Animator Parameter name change breaks references to it
- Crash on BV4_OverlapBoxAll when moving in play mode
- Custom mesh water surface normal map fades out when Y Position increases
- Sprite renderer does not issue draw calls correctly when using SRP Batcher
- [Android] Flickering artifacts when using "ScriptableRenderer.EnqueuePass(RenderPassEvent.BeforeRenderingPostProcessing)" multiple times
Resolution Note:
This is not a bug or performance issue, but rather both the Gfx.WaitForGfxCommandsFromMainThread and WaitForLastPresentationAndUpdateTime are part of the normal idle waiting for application target fps / screen v-sync etc. If you set the Application.targetFrameRate to something like 90 and disable v-sync, you will see that the wait time can be brought down to 7ms when nothing is being rendered, and it is still there to compensate for target framerate. On a side note, it is not recommended to go unlimited fps on mobile devices as that would quickly chew through the battery.