How to change Oculus Quest 2 display refresh rate with OpenXR?

Hello! I’m trying to change the display refresh rate on a Quest 2 through Blueprint. With the Oculus VR plugin there is a node that will do exactly what I need (Set Display Frequency) but with the OpenXR plugin I could not find anything to do so. Any ideas on how to solve this?

The refresh rate seems to be set with the XR_FB_display_refresh_rate OpenXR extension, and that doesn’t seem to be implemented currently for UE4. You will either have to wait for it to be implemented, or write a plugin for it yourself (check that Facebook has actually implemented the extension for the platform you are developing for first).

1 Like

Thanks for your answer! I guess I’ll wait for it to be implemented since writing a plugin isn’t anything near my programming skills.

I would also like to know how to do this.
Has some function like this been implemented since the original post?

I am developing for Oculus Quest. I just moved from the Oculus XR API “Legacy OVRPlugin” to the Oculus XR API “OVRPlugin OpenXR”. The Oculus functions GetDisplayFrequencies and SetDisplayFrequency no longer work in my app, so I assume I need to call some similar functions in the OpenXR API, but I have not found how to do this.

After investigating my problem further, it seems the Oculus library function SetDisplayFrequency does properly work with the “OVRPlugin OpenXR” API (at least as of v37 OS and Oculus Unreal Engine 4 integration). But, the function GetDisplayFrequencies is broken in that XR API.

I have made a post in the Oculus forum about this:
https://forums.oculusvr.com/t5/Unreal-VR-Development/GetAvailableDisplayFrequencies-Function-Broken-for-XR-API-quot/td-p/943965

1 Like

Hi Tim!

I have a question for you: are you using the SetDisplayFrequency function through Blueprint or C++ code?

I’m using it in Blueprint.

1 Like

Hi, do you guys had any success in changing the fixed 72Hz from blueprint?

Ok, it works, but only in 4.26.2.
Unreal Engine 5 has sent VR to oblivion for now.

2 Likes

I aplogize for necroing this thread, but I am quite stuck and would appreciate any pointers.
I’ve updated to 5.3.2, have the newest v62 Meta XR and Meta platform Plugins.
I’ve set it all up with the help of this guide:

But packaging was only successful after applyin this fix:

Now the app packages and runs on quest, but this is where my issue comes into play.
The main reason for migrating my project to 5.3.2 was to access the get and set Display Frequency functions.
These however, do not seem to work.
I’ve been at it for a long time, but my app, once packaged, has the limit of 72 FPS.
It would doubtlessly run higher, but it is capped. Before I resubmit it was requested to increase it to 80, but my every attempt has failed.
Any ideas would be greatly appreciated!

Hey @Sir_davis, if you run “GetAvailableDisplayFrequencies” and you don’t see 120 as the last index in that array, make sure you have quest3 in Project Settings → Android → Advanced APK Packaging → Extra Settings for <application>. In 5.3 it does not get added by default when you check “Package for Meta Quest devices”, but you can add it manually like so:

<meta-data android:name="com.oculus.supportedDevices" android:value="quest2|quest3|questpro" />

If you do see the function return 72/80/90/120 and you run Set Display Frequency with a value other than 72, but you’re not seeing the application run at a higher framerate, you’re bottlenecked by performance. I was able to get the VR Template to run at a steady 120 fps for reference.

I hope that helps!

1 Like