Develop

CPU and GPU levels

Updated: Nov 12, 2026
Your app can provide hints to increase or decrease the CPU and GPU clock speeds on Meta VR devices at runtime. Higher clock speeds increase power consumption, so these controls let you trade battery life for performance.
Rather than request clock frequencies directly, your app can suggest a range of CPU and GPU levels, from PowerSavings to Boost. This abstraction supports multiple chipsets and lets apps receive performance boosts (such as the 7% GPU boost for GPU level 4 in v49 OS) without rebuilding.
Select the lowest CPU and GPU levels that allow your application to run consistently at its target frame rate.

Profile CPU and GPU levels and frequencies

You can profile current CPU and GPU level, frequency, and utilization using the OVRMetrics Tool, the Performance Analyzer section of Meta VR Developer Hub, or the VrApi log stats.
Meta VR Developer Hub Performance Analyzer
In this image, MVDH is used to profile an application running on Quest 2 at CPU level 4 / 1.478GHz, and GPU level 3 / 490MHz.

Setting CPU and GPU levels

Set CPU and GPU levels using the ProcessorPerformanceLevel enum, exposed through these engine-specific functions:
EngineFunction
Unreal
UOculusXRFunctionLibrary::SetSuggestedCpuAndGpuPerformanceLevels (exposed in Blueprint)
Unity
OVRPlugin::suggestedCpuPerfLevel, OVRPlugin::suggestedGpuPerfLevel
Native
ovrp_SetSuggestedCpuPerformanceLevel, ovrp_SetSuggestedGpuPerformanceLevel
Spatial SDK
spatial.setPerformanceLevel
Rather than setting a specific CPU or GPU level, you select a ProcessorPerformanceLevel. The OS dynamically adjusts levels within a range, staying as low as possible while maintaining the target frame rate. This automatically extends battery life during less-demanding scenes.
CPU and GPU level ranges can also change based on enabled features. For instance, on Meta Quest 3 and Meta Quest 3S, passthrough caps the GPU at level 2, and rendering the Guardian boundary raises the cap to level 3. Refer to each headset’s “CPU/GPU level availability” section and Boosting CPU and GPU Levels for details.
ProcessorPerformanceLevelCPU level rangeGPU level range
PowerSavings
0 to 4
0 to 4
SustainedLow
2 to 4
1 to 4
SustainedHigh
4 to 4*
3 to 5
Boost
4 to a device-specific maximum**
3 to 5
Spatial SDK defaults to SustainedHigh. Prior to 0.7.0, the default was SustainedLow. This improves app performance at the cost of battery life.
*The SustainedHigh CPU level range can be increased, depending on the headset and enabled systems. See Boosting CPU and GPU Levels for details.
ConfigurationCPU level range
Default
4 to 4
Quest 2, Quest Pro, Quest 3 or 3S with CPU level trading
5 to 5
Quest 2 or Quest Pro with dual-core mode
6 to 6
**CPU ProcessorPerformanceLevel.Boost uses the same CPU level range as SustainedHigh, including its headset-dependent maximum. During short periods when higher CPU throughput is needed, the system boosts the clocks.
For more details, including when Boost is available, see CPU Boost Hint.

Clock limits that change at runtime

The OS changes the top of your CPU and GPU level range at runtime. The reported level does not always show the change.
DeviceConditionEffect on the maximum clock
Meta Quest 3, Meta Quest 3S
Passthrough is on (in your app, Home, or Guardian)
CPU capped at level 3, GPU capped at level 2
Meta Quest 3, Meta Quest 3S
Passthrough is on and the Guardian boundary is visible
GPU cap rises to level 3
Meta Quest 3, Meta Quest 3S
USB or AC power connected, when the charging boost is enabled for the device
GPU ceiling rises to 640 MHz and CPU ceiling to 2.21 GHz. The reported level does not change.
Meta Quest 2, Meta Quest Pro
Passthrough, eye tracking, face tracking, or body tracking is on
No cap: levels 0 to 4 stay available
Meta Quest 2, Meta Quest Pro
USB or AC power connected
No charging boost
Meta VR Glasses
USB or AC power connected
No charging boost
All
Thermal throttling
Clock ceilings drop by an amount that depends on the device and its temperature
Meta Quest 3, Meta Quest 3S
Thermal throttling
The charging boost and the CPU Boost hint turn off. Under severe throttling, the CPU and GPU maximum drops by one level.
Meta Quest 3, Meta Quest 3S
Battery Saver
The charging boost turns off
Hand tracking does not change these limits. For the charging boost conditions, see Charging boost.

Turn off the charging boost

This command turns off the charging boost while a USB cable stays connected:
adb shell setprop debug.crcs.disable_charging_boost 1
It takes effect within 2 seconds, without a restart, and affects only the charging boost. To turn the charging boost back on, clear the setting or restart the device:
adb shell setprop debug.crcs.disable_charging_boost ""
The reported GPU level does not show the charging boost. To read the current GPU frequency in Hz:
adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/cur_freq

Pin CPU and GPU levels during development

To profile at a fixed clock, pin a CPU or GPU level over ADB, and turn off the charging boost or keep the USB cable unplugged. The pin overrides the CPU and GPU level limits in the table above, including the passthrough cap, and resets when the headset restarts. It does not override the charging boost: while the boost is active, the clock can still rise above the pinned level. Use it only for development and profiling, never in a shipped app.
adb shell setprop debug.oculus.gpuLevel 2
adb shell setprop debug.oculus.cpuLevel 4
To remove the pin, set the value to an empty string:
adb shell setprop debug.oculus.gpuLevel ""
adb shell setprop debug.oculus.cpuLevel ""
The pin sets a level, not an arbitrary frequency. It also overrides the one-level reduction that the OS applies under severe thermal throttling.

Meta Quest 1

CPU levelClock speed
0
0.98 GHz
1
1.34 GHz
2
1.65 GHz
3
1.96 GHz
4
2.30 GHz
If possible, CPU level will increase when CPU utilization is 83% or greater, and decrease when CPU utilization is 77% or lesser.
Note: CPU and GPU levels above 4 were introduced after the Meta Quest 1 end-of-life.
Note: Although the Meta Quest 1 has a higher clock speed on its application cores than the Meta Quest 2, it uses a simpler CPU architecture. Internal tests on VR applications found that Meta Quest 2’s CPU architecture allowed it to run 80% more instructions per cycle.
GPU levelClock speed
0
257 MHz
1
342 MHz
2
414 MHz
3
515 MHz
4
670 MHz
If possible, GPU level will increase when GPU utilization is 91% or greater, and decrease when GPU utilization is 85% or lesser.
Note: CPU and GPU levels above 4 were introduced after the Meta Quest 1 end-of-life.
CPU levelAvailability
0-4
Always available
GPU levelAvailability
0-4
Always available
Note: Access to CPU/GPU levels is further restricted based on your set ProcessorPerformanceLevel.

Meta Quest 2

CPU levelClock speed
0
0.71 GHz
1
0.94 GHz
2
1.17 GHz
3
1.38 GHz
4
1.48 GHz
5
1.86 GHz
6
2.15 GHz
8
2.42 GHz
If possible, CPU level will increase when CPU utilization is 83% or greater, and decrease when CPU utilization is 77% or lesser.
GPU levelClock speed
0
305 MHz
1
400 MHz
2
442 MHz
3
490 MHz
4
525 MHz
5
587 MHz
If possible, GPU level will increase when GPU utilization is 87% or greater, and decrease when GPU utilization is 81% or lesser.
CPU levelAvailability
0-4
Always available
5
Available if dual-core mode is not enabled
6
Available if dual-core mode is enabled
8
Available if the CPU Boost is enabled. See CPU Boost Hint
GPU levelAvailability
0-4
Always available
5
Available if dynamic resolution is enabled
Note: Access to CPU/GPU levels is further restricted based on your set ProcessorPerformanceLevel, and may be overridden if certain OS features are running in the background (for example, casting). See Logcat stats definitions to learn how to track these behaviors.

Meta Quest Pro

CPU levelClock speed
0
0.71 GHz
1
0.94 GHz
2
1.17 GHz
3
1.38 GHz
4
1.48 GHz
5
1.86 GHz
6
2.15 GHz
8
2.42 GHz
If possible, CPU level will increase when CPU utilization is 83% or greater, and decrease when CPU utilization is 77% or lesser.
GPU levelClock speed
0
305 MHz
1
400 MHz
2
442 MHz
3
490 MHz
4
525 MHz
5
587 MHz
If possible, GPU level will increase when GPU utilization is 87% or greater, and decrease when GPU utilization is 81% or lesser.
CPU levelAvailability
0-4
Always available
5
Available if dual-core mode is not enabled
6
Available if dual-core mode is enabled
8
Available if the CPU Boost is enabled. See CPU Boost Hint
GPU levelAvailability
0-4
Always available
5
Available if dynamic resolution is enabled
Note: Access to CPU/GPU levels is further restricted based on your set ProcessorPerformanceLevel, and may be overridden if certain OS features are running in the background (for example, casting). See Logcat stats definitions to learn how to track these behaviors.

Meta Quest 3 & Meta Quest 3S

CPU levelClock speed
0
0.69 GHz
1
1.09 GHz
2
1.38 GHz
3
1.65 GHz
4
1.92 GHz
5
2.05 GHz
6
2.21 GHz
8
2.36 GHz
If possible, CPU level will increase when CPU utilization is 83% or greater, and decrease when CPU utilization is 77% or lesser.
GPU levelClock speed
0
285 MHz
1
350 MHz
2
456 MHz
3
492 MHz
4
545 MHz
5
599 MHz
6
640 MHz
If possible, GPU level will increase when GPU utilization is 87% or greater, and decrease when GPU utilization is 81% or lesser.
CPU levelAvailability
0-3
Always available
4
Available if the application does not enable passthrough features
5
Available if CPU level 4 is available, and CPU and GPU level trading is set to -1
6
Available if the CPU Boost is enabled. See CPU Boost Hint
GPU levelAvailability
0-2
Always available
3-4
Available if the application does not enable passthrough features
5
Available if GPU level 4 is available, and CPU and GPU level trading is set to +1, or dynamic resolution is enabled
6
Available if GPU level 4 is available, and CPU and GPU level trading is set to +1, and dynamic resolution is enabled
Note: Access to CPU/GPU levels is further restricted based on your set ProcessorPerformanceLevel, and may be overridden if certain OS features are running in the background (for example, casting). See Logcat stats definitions to learn how to track these behaviors.

Meta VR Glasses

Meta VR Glasses do not require a device-specific performance-level API. Use your engine or SDK’s performance-level API. Performance settings are hints, not requests for fixed clock frequencies. The runtime can adjust CPU and GPU performance based on factors such as thermal and power conditions and enabled features.
Matching numeric levels across headset models do not guarantee the same clock speed, throughput, or sustained thermal behavior. Profile frame timing and the resulting performance levels and frequencies on each target device. See Profile CPU and GPU levels and frequencies for available tools.
CPU levelClock speed
0
0.81 GHz
1
1.23 GHz
2
1.52 GHz
3
1.79 GHz
4
2.09 GHz
5
2.15 GHz
6
2.29 GHz
8
2.71 GHz
If possible, CPU level will increase when CPU utilization is 83% or greater, and decrease when CPU utilization is 77% or lesser.
GPU levelClock speed
0
318 MHz
1
366 MHz
2
495 MHz
3
576 MHz
4
633 MHz
5
690 MHz
If possible, GPU level will increase when GPU utilization is 87% or greater, and decrease when GPU utilization is 81% or lesser.
CPU levelAvailability
0-3
Always available
4
Available if the application does not enable passthrough features
8
Available if the CPU Boost is enabled. See CPU Boost Hint
GPU levelAvailability
0-2
Always available
3-4
Available if the application does not enable passthrough features
Note: Unlike Meta Quest 3 and Meta Quest 3S, this device does not support CPU and GPU level trading or dual-core mode.
Note: Access to CPU/GPU levels is further restricted based on your set ProcessorPerformanceLevel, and may be overridden if certain OS features are running in the background (for example, casting). See Logcat stats definitions to learn how to track these behaviors.