This tool is currently in its experimental phase. Meta is actively gathering feedback from users to shape its future.
The Meta Quest Runtime Optimizer helps developers identify and resolve performance bottlenecks in Meta Quest applications. This tool provides real-time analysis and actionable insights to optimize application performance, and runs without additional dependencies.
In Unity, select Window > Package Manager > + > My Assets and add the Meta Quest Runtime Optimizer package.
Setup and configuration
Step 1: Open the Meta Quest Runtime Optimizer
Navigate to Meta > Tools > Runtime Optimizer in Unity.
Step 2: Enable the Meta Quest Runtime Optimizer
Toggle Runtime Optimizer Enabled on. This updates your project to include all necessary configurations.
Disable this option when submitting your application for release candidate (RC) builds.
Step 3: Build your APK
Build your APK in development mode.
Step 4: Verify the APK path
Ensure that your APK’s Executable path looks correct. For example: com.unity.template.vr/com.unity3d.player.UnityPlayerGameActivity
Step 5: Connect the tool
Click Launch to start your application. The tool will automatically connect to your device.
Note: If you start the application a different way, connect to the tool by clicking Connect.
You should see the “Connected” status message if it successfully starts.
Step 6: Freeze the frame to start the analysis
Click Freeze Frame to freeze the current frame. This allows the tool to pause the current state of the application and a snapshot of the current frame is taken.
Once successfully frozen, you should see the Freeze Frame button update to Unpause and the Analyze button will be enabled.
Using the Meta Quest Runtime Optimizer
The Runtime Optimizer offers two analysis modes:
Bottleneck analysis
What if? analysis
1. Bottleneck analysis
This mode parses captured runtime data, highlights potential bottlenecks, and provides suggestions for improvement.
Ensure your headset remains active during the analysis. If the device enters sleep mode during capture, the analysis will be interrupted and you'll need to restart the capture.
Use the dropdown menu and select Bottleneck analysis. Then, click Analyze to start the analysis.
Once the analysis is complete, click the capture in the Captured Frames section to view the data in the Analysis section.
Analysis sections
Insights: Provides a summary of the captured metrics with actionable items for developers to further experiment with and reduce performance bottlenecks.
Render Breakdown: Organizes different runtime data (Mesh, Texture, Material) as Unity Entities and ranks their cost. This process integrates several different types of real-time metrics to create actionable suggestions.
The tool also allows developers to add custom rules catered to their specific needs, providing flexibility and customization.
2. What if? analysis
The “What if?” analysis helps you understand the cost of all game objects in your frustum at a high level of accuracy. This is achieved by performing a sweeping A/B experiment, which mimics a flow where developers manually disable an object and rebuild their APK to figure out its impact.
Use the dropdown menu and select What if? analysis then click Analyze to open the Select Game Objects to Test window.
The window displays all game objects in your frustum. You can select multiple game objects to test at once and use Search with keywords to filter the list.
Once you’ve selected the game objects you want to test, click Scan Selected Game Objects to begin the analysis.
The result will be shown in the Analysis section.
How it works
When starting the analysis by clicking Freeze Frame, the optimizer freezes the headset to guarantee experiment reproducibility.
Measures the baseline cost of what’s in view.
Iteratively disables all game objects in the frustum while measuring the before and after of a frame’s GPU time.
Ranks all GameObjects by their cost in descending order.
The tool takes measurements over several frames and later averages them. The test takes approximately 200ms per GameObject in your frustum.
Material and shader analysis
For more advanced usage, download and enable the Qualcomm Adreno Offline Compiler tool. This tool displays detailed material and shader analysis, enabling deeper discovery of graphics bottlenecks.
Known issues
OS V78:
Very rare kernel panics after What if? analysis
Dynamic objects are not supported and do not show up in What if? analysis or Bottleneck analysis