Search Issue Tracker

Third Party Issue

Votes

0

Found in

2022.3.10f1

Issue ID

UUM-68005

Regression

No

[Quest] EarlyUpdate.XRUpdate taking over 20ms when no intermediate textures are used in rendering on Quest 2/3

-

Steps to reproduce:
1. Download the attached project "Project.zip" from the Google Drive link
2. Ensure that you have a Meta Quest 2 headset attached to your PC
3. Go to File > Build Settings and switch to the Android platform. Enable the Development Build and Autoconnect Profiler options and select Build And Run to deploy the project to a headset
4. Wait until you have in-game control and look towards the cave entrance
5. Watch the Unity profiler after the build starts running on the headset and observe the long time (over 20ms on average) spent on EarlyUpdate.XRUpdate in the Timeline on the main thread
6. Go back to the Unity project and in the Project window, find the URP asset labelled "Universal Render Pipeline Asset-Quest" and in the Inspector, in the Quality settings enable "HDR"
7. In the Project window, find the URP Renderer labelled "Universal Render Pipeline Asset_Renderer", select this item and in the Inspector enable the Post Processing option
8. Save the project then go to File > Build and Run to deploy the project to the headset
9. Wait until you have in-game control and look towards the cave entrance
10. Watch the Unity profiler after the build starts running on the headset and observe only 10ms of time spent on average in EarlyUpdate.XRUpdate which is expected

Expected Results: The profiler results taken during step 5 show the call to EarlyUpdate.XRUpdate taking about 10ms, which is shown in the profiler results shown in step 10 when an intermediate texture is used
Actual Results: The profiler results taken during step 5 show the call to EarlyUpdate.XRUpdate taking over 20ms on average

Reproducible on: 2022.3.10f1
Could not test on 2021.3.36f1, 2022.3.22f1, 2023.2.16f1 and 6000.0.0b13 due to project errors after upgrading/downgrading

Reproducible on these devices:
VLNQA00609 - Oculus Quest 3 (Quest 3), CPU: Snapdragon XR2 Gen 2 (SM8550), GPU: Adreno 740, OS: 12
VLNQA00415 - Oculus Quest 2 (Quest 2), CPU: Snapdragon XR2, GPU: Adreno 650, OS: 12

Testing Environment: Windows 11
Not reproducible on: No other environment tested

Notes:
-Project uses OculusXR plugin, could not test on other XR plugins due to errors when switching plugins
-Intermediate renderbuffers such as CopyDepth and CopyColor have been disabled in the project by disabling HDR and Post processing
-Attached are profiler captures showing the difference, the capture named "GPUBound.data" shows the low perfromance which can be compared to the "notGPUBound.data" capture that shows better performance when intermediate textures are used

  1. Resolution Note:

    We have dived into this case pretty deep and couldn't spot anything wrong, hence the delay in moving this case forward.

    We have tested and the issue is Quest2 only. Quest3 doesn't have the issue and direct to eye renders faster as expected.

    This case is now also investigated by Meta engineer and is forwarded to QCOM for driver layer investigation.

    What can be helpful is to isolate the issue with a smaller scene (disable some drawcalls/effects/computes.... until you have a much smaller setup that still repros the issue). We've had some issues in the past with some applications that were doing a lot of compute so maybe trying to disable the particles/computes to see if the bug is still there could be an interesting data point.

    For now, we close this as third party issue because there is no action item on Unity side. If there is new data point that we can act upon, please feel free to reopen.

Add comment

Log in to post comment

All about bugs

View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.