Develop

Optimize your app for Meta VR Glasses

Updated: Sep 19, 2026
Meta VR Glasses hardware runs your existing Meta Quest 3 app without code changes. This guide describes how to move past parity and get the best performance the device offers, from the performance level you design against to the foveation method you choose.

Design against the nominal performance level

Design your steady-state workload to the nominal performance level: CPU level 4 and GPU level 4. Nominal is the performance the operating system sustains under worst-case thermal and battery conditions, so a workload that fits inside it holds its frame rate for the length of a session.
An app that runs well at nominal on Quest 3 reaches the same frame rate on Meta VR Glasses hardware, net of the device’s higher display resolution and narrower field of view. For the per-level clock frequencies and which levels your app can reach, see CPU and GPU levels.

Let the operating system manage clocks

Meta VR Glasses hardware raises and lowers CPU and GPU clocks in real time based on utilization. Clocks rise above nominal when thermal and battery headroom exist, for example when the headset is charging, and return toward nominal as that headroom runs out. Your app reaches this behavior without setting fixed clock levels.
Because the operating system scales clocks for you, treat nominal as a design target rather than a hard ceiling. The headroom above nominal is real performance your app can use, but only if your app is built to use it.

Turn headroom into resolution and frame rate

Headroom above nominal improves the experience only when your app spends it. Add adaptive scaling so the app converts spare CPU and GPU time into visible quality:
  • Enable dynamic resolution so render resolution rises when GPU headroom exists and falls under load.
  • Scale quality settings from the measured CPU and GPU level: level-of-detail bias, view distance, MSAA sample count, and shadow and post-processing quality.
An app that scales turns favorable conditions into higher fidelity. An app pinned to fixed settings leaves that headroom unused.

Use CPU Boost for short spikes

CPU Boost raises the CPU above its sustained level for brief, demanding work. On Meta VR Glasses hardware, boost draws from a refilling budget rather than the fixed time limits used on Quest 3, and Meta VR Glasses hardware does not support dual-core mode or CPU and GPU level trading. Reserve boost for finite work such as loading screens and scene transitions, and keep your app smooth when the budget runs out. For the budget model and the code to request boost, see Boosting CPU and GPU levels.

Know where the GPU gain comes from

Meta VR Glasses hardware holds more on-chip GPU memory (GMEM) than Quest 3, so its tiled renderer splits each frame into fewer tiles. Each tile has a bin: the triangles that overlap it. Fewer tiles therefore means fewer bins, and the two counts are the same number.
Tiled forward passes gain the most. Tiled rendering causes every triangle in your frame’s geometry to be processed once for binning, then once for each bin that contains the triangle. Fewer, larger tiles put each triangle in fewer bins, so that second step runs fewer times, with less per-tile setup and teardown. Geometry-heavy scenes see the largest gain. Among those passes, the ones with a large render-target footprint gain most: high MSAA sample counts, additional subpass attachments, or wide color formats. Footprint decides how many pixels fit in a tile, so those passes are cut into the most tiles, and therefore into the most bins.
Full-screen passes gain little. Post-processing and buffer resolves cost about the same on both headsets. They draw no scene geometry, so a smaller tile count has nothing to stop replaying. Their cost scales with the frame instead of with the tile count. A wide color format raises what a full-screen pass costs, but it does not make that pass gain from the larger GMEM budget. Adding a full-screen pass adds its own cost; it does not change the cost of the tiled passes around it.
Your whole-frame gain therefore depends on the split between the two. The larger the share of frame time your full-screen work takes, the smaller that gain, because the speedup applies only to the tiled portion. To measure that share, capture a render stage trace in RenderDoc Meta Fork. The Tile Timeline lists each surface your frame renders to, in order. Click one to open Surface Information, which reports its duration in microseconds, its render mode, and its bin count. Add up the durations of the surfaces your tiled forward passes write to, then compare that against the surfaces your full-screen passes write to. For the capture steps, see Performing a Render Stage Trace. For how passes and their loads and stores map to GPU cost, see Advanced GPU pipelines.

Choose the right foveation method

Foveated rendering lowers shading cost in the viewer’s peripheral vision. Fixed foveated rendering (FFR) lowers the resolution of the periphery using a fragment density map applied across the render tiles. Because Meta VR Glasses hardware uses larger tiles, a fragment density map covers more of each tile, so fixed foveated rendering returns a smaller saving than it does on Quest 3.
On headsets with eye tracking, eye-tracked foveated rendering recovers that saving: it keeps full resolution on the point the user looks at and lowers it everywhere else.
Set a foveation level, and let the system raise it toward that maximum based on GPU load:
OVRManager.foveatedRenderingLevel = OVRManager.FoveatedRenderingLevel.High;
OVRManager.useDynamicFoveatedRendering = true;