Develop

Boosting CPU and GPU Levels

Updated: Jul 28, 2026
Quest devices provide running apps with the highest CPU and GPU speeds that are safely available at all times for all performance profiles. Additionally, apps can access even higher CPU and GPU speeds with the APIs described in this page.
Because these boosts push the boundaries of Quest performance, they require concessions, such as time limits, limited hardware availability, or lowered performance in other systems. Please read this page carefully to ensure your boost will actually improve your app’s performance.

GPU level 5

Applications that enable Dynamic Resolution (Unity, Unreal) can access GPU level 5.
The reason for tying GPU level 5 to dynamic resolution is that thermal throttling is much more common at GPU level 5. If the headset throttles down to GPU level 4, dynamic resolution allows the app to preserve framerate at a lower resolution rather than dropping frames. When GPU level 5 is available, resolution scales up automatically—no app-side logic required.
Additionally, GPU level 5 is restricted if the user has enabled Battery Saver mode.
  • Target GPU level 4 as your maximum GPU budget. GPU level 5 is only granted when the headset has sufficient thermal headroom. Treat it as an opportunistic quality bump—never rely on it for functionality or minimum framerate requirements.

Dual-Core Mode

Dual-core mode disables one CPU core in exchange for higher clock speeds on the remaining two. The unused core’s thermal budget is redistributed to the active cores, enabling faster clock speeds.
Only enable dual-core mode if your app is bounded by single-core performance—typically when most per-frame time is spent in one long sequential series of updates.
Use Perfetto to visualize per-core utilization and determine if your app is single-core bound. Distributing work across cores at lower clock speeds is generally more power-efficient, but dual-core mode is worth considering when parallelization isn’t feasible.

Requirements

  • Dual-core mode is only supported on Meta Quest 2 and Meta Quest Pro. No other headsets support dual-core mode, due to their hardware characteristics.
  • Apps must use the OpenXR backend. Apps built with the legacy OVRPlugin backend do not benefit from this enhancement.

To enable dual-core mode

To use dual-core mode, add the following metadata line to your app manifest, within your <application> element:
        <meta-data
            android:name="com.oculus.dualcorecpuset"
            android:value="true" />
With dual-core mode enabled, the CPU level range when CPU ProcessorPerformanceLevel is set to SustainedHigh will be 6 to 6.

Dual-core mode notes

  • With a ProcessorPerformanceLevel below SustainedHigh, the app may start at a lower CPU level and jump to 6 when utilization is high enough.
  • Dual-core mode’s higher frequencies mean workloads that don’t fit into two cores at level 4–5 may fit at level 6.
  • An app that uses all 3 cores at CPU level 4 will outperform a dual-core mode app at CPU level 6. Profile and review your codebase to determine whether your app benefits more from CPU level 5 (three cores) or dual-core mode (two cores, higher frequency).

Trading between CPU and GPU levels

When thermal throttling forces the governor to downclock, your app can indicate whether to preserve CPU or GPU speed. This is useful when your app is bottlenecked on one processor—trading a level from the other can improve overall performance.

Requirements

  • CPU/GPU level trading is only supported on Meta Quest 3 and Meta Quest 3S. No other headsets support level trading, due to their hardware characteristics.
  • Apps must use the OpenXR backend. Apps built with the legacy OVRPlugin backend can’t benefit from this enhancement.
CPU/GPU level trading is defined at build time, in your app manifest. Once you’ve chosen to trade a level, it can only be changed by releasing a new build of your app.

Enabling CPU and GPU level trading

To configure trading between CPU and GPU, add the following metadata line to your app manifest:
        <meta-data
            android:name="com.oculus.trade_cpu_for_gpu_amount"
            android:value="1" />
Where value is
  • 1 = +1 level to gpu, -1 level to cpu
  • 0 = no change.
  • -1 = -1 level to gpu, +1 level to cpu
In Unreal Engine, you can elect to trade levels in the Project Settings by changing the Processor Favor setting which configures the appropriate manifest settings described above. This setting is under Edit > Project Settings > Plugins - Meta XR:
Processor favor in UE5 settings

CPU Boost Hint

Apps can suggest a CPU Performance Level of Boost for a short burst of maximum CPU frequency (see CPU and GPU levels). This provides a significant CPU speed increase, depending on the Quest device:
 CPU level, boost disabled or inactiveCPU level, boost enabled and active% CPU speed increase
Meta Quest 2
4
8
64%
Meta Quest Pro
4
8
64%
Meta Quest 3 and 3S
4
8
23%
When Boost is inactive, the Boost CPU performance level behaves exactly like SustainedHigh, the default CPU performance level. Boost only activates under the following conditions:
  • Battery Saver mode is disabled
  • Thermal management is not throttling the system
  • Boost has not been active for longer than 45 seconds
  • Boost has not been active for 80% of your app’s total runtime
The constraints that Boost can only be active for up to 45 consecutive seconds, and for only 20% of your app’s runtime, mean that it is best used for rare CPU-intensive operations, such as loading screens.
In Unreal, you can enable the boost with the SetSuggestedCpuAndGpuPerformanceLevels function.
SetSuggestedCpuAndGpuPerformanceLevels(EOculusXRProcessorPerformanceLevel::Boost, /* desired gpu level */);
Once you no longer need the boost, be sure to disable it by changing the CPU boost level. Ex.
SetSuggestedCpuAndGpuPerformanceLevels(EOculusXRProcessorPerformanceLevel::SustainedHigh, /* desired gpu level */);

Troubleshooting CPU and GPU level adjustments

Use these diagnostic tools to verify your app is running at boosted CPU or GPU levels.

OVRMetrics CPU and GPU level display

The CPU L and GPU L indicators on the OVRMetrics Tool overlay display the current CPU and GPU levels of your app.
CPU GPU indicators in ovrmetrics

Logcat strings for CPU and GPU level

See XrPerformanceManager logcat logs to track the current, minimum and maximum GPU and CPU levels for your app.

Logcat strings for dual core mode

To determine if dual core mode is active, search adb logcat to find a string similar to the following printed on app startup:
CreateClient: Value of isCPUSingleThreadedBoost is 0 / 1

Logcat strings for trading CPU and GPU levels

To determine what degree of CPU and GPU trading is taking place, search adb logcat to find a string similar to the following printed on app startup:
CreateClient: Value of tradeCpuForGpu is 1