Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Performance regression on standalone XR headsets (pico, quest) in 4.3dev2 #94856

Closed
DanielKinsman opened this issue Jul 28, 2024 · 1 comment · Fixed by #94894
Closed

Performance regression on standalone XR headsets (pico, quest) in 4.3dev2 #94856

DanielKinsman opened this issue Jul 28, 2024 · 1 comment · Fixed by #94894

Comments

@DanielKinsman
Copy link
Contributor

DanielKinsman commented Jul 28, 2024

Tested versions

Present in:

Not present in:

System information

Godot v4.2.2.stable unknown - Arch Linux #1 SMP PREEMPT_DYNAMIC Wed, 24 Jul 2024 22:25:43 +0000 - Wayland - GLES3 (Compatibility) - AMD Radeon RX 6800 XT (radeonsi, navi21, LLVM 18.1.8, DRM 3.57, 6.10.1-arch1-1) () - AMD Ryzen 7 5800X3D 8-Core Processor (16 Threads)

Issue description

In 4.3dev1 my pico 4 is able to render ~360 sample 3D objects (blender monkey heads) before the framerate drops more than 10fps below the 90Hz refresh rate. In 4.3dev2 that drops to ~300 objects. I tried to bisect it but unfortunately many or even most of the commits in the middle fail to load on the device at all. The best I could narrow it down to was 407855b good, 9b522ac bad.

Steps to reproduce

Use the sample project, run it on the headset. It will start spawning objects until the frame rate drops 10 below the refresh rate at which point it will stop.

Keep your head pointed at same place between runs to make things consistent, I like to look at the monkey on the second from bottom row, that way most of the other monkeys are still rendered in the camera.

Minimal reproduction project (MRP)

https://gitlab.com/DanielKinsman/godot-standalone-xr-perf-test

@decacis
Copy link
Contributor

decacis commented Jul 28, 2024

I found out that the performance drop starts at #84244 (d6caa69)

I used a slightly different MRP, specifically made to reach 72fps on a Quest 2. Simply look forward and have both hands in view, for consistency. The project will start recording results (min, max fps) after a few seconds.

MRP: https://drive.google.com/file/d/1S-zFUpBVAtrE3eP_7M2zRNC_lirOf3X3/view?usp=sharing

I'm using the OpenXR vendors version 2.0.2 in that MRP.

My results:

commit description min fps max fps
9d1cbab dev1 71 72
d6caa69 #84244 55 61

Note that, in a good portion of the commits that I had to go through when bisecting, I had to cherry-pick #86792 because otherwise, the OpenXR vendors would not load.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Bad
Development

Successfully merging a pull request may close this issue.

4 participants