All Oculus Quest developers MUST PASS the concept review prior to gaining publishing access to the Quest Store and additional resources. Submit a concept document for review as early in your Quest application development cycle as possible. For additional information and context, please see Submitting Your App to the Oculus Quest Store.
RenderDoc is a graphics debugger tool that supports multiple graphics APIs and development platforms. It is used for frame capture and analysis during development. RenderDoc shows how a running application’s engine determined a scene should be rendered on Oculus Quest hardware for a single frame. This information can often be used to find optimization opportunities and potential sources or performance issues.
RenderDoc is available for Windows at the RenderDoc website.
RenderDoc can be used to study an app’s rendering scheme to verify developer expectations and identify irregularities. In game engine development, the actual rendering code can be hidden, or complex with various built-in subsystems, making it difficult to isolate or understand problems. When RenderDoc analyzes a frame, it can provide enough information to begin addressing rendering issues affecting your app.
This topic describes how to use RenderDoc with Oculus Quest for frame capture and basic analysis during app development.
RenderDoc is used to capture API usage data from a single frame of an app, and to replay captured frames later for analysis. When a frame is captured, RenderDoc also captures all referenced input and output resources in memory for closer analysis, such as textures and meshes.
RenderDoc is useful for examining the operations of your app’s rendering scheme and verifying that the results are as expected. RenderDoc records all graphics API calls and referenced resources in the order they are issued so they can be replayed to study behavior and performance. It also times how long draw calls (and groups of draw calls) are taking to execute on the GPU relative to each other to help identify those that may require optimization. Textures in the capture can be examined at their current state for the selected event. Other information captured for analysis includes graphics pipeline data, meshes and mesh data, shader bytecode, and general statistics such as draw count and memory usage.
The following sections describe how to set up RenderDoc, connect it to your Oculus Quest, and take a frame capture.
The Oculus Quest being used with RenderDoc must be in Developer Mode. The Android SDK must be installed and configured on the computer running RenderDoc in order to establish an ADB connection with the Oculus Quest. If you have followed the instructions in Device Setup – Oculus Quest and Android Development Software Setup, you should be ready to use RenderDoc.
The RenderDoc installer for Windows can be downloaded from the RenderDoc website. Run the installer and when prompted, choose a Typical installation.
After it’s been installed, open RenderDoc and look at the main screen. The following image highlights notable elements of the interface that are referenced in this guide.
Note: Some of these tabs may not be present when you first open RenderDoc. Missing tabs can be added from the Window drop-down menu on the menu bar.
A wired USB-C connection is required between the computer running RenderDoc and the target Oculus Quest on which the app being analyzed will run. To set up the connection between RenderDoc and Oculus Quest, follow these steps:
adb devicesto confirm the Oculus Quest is properly connected to the PC. If the device is connected properly, its device ID will be listed as shown in this example:
List of devices attached ce0551e7 device
Note: If the Oculus Quest is not displaying the access prompt or is not showing up in the ADB device list, the most likely issue is that the correct USB driver is not installed (see Device Setup – Oculus Quest for more information). Another recommendation is to try a different USB cable or port on the computer. See ADB for more information on using ADB with Oculus Quest.
Note: If you do not see the device listed, make sure you’ve followed the steps in Device Setup – Oculus Quest and Android Development Software Setup. The device is most likely not set up or not in Developer Mode.
RenderDoc works by launching an app APK file on the Oculus Quest, and the remote server installed on the device during connection sends capture data back to RenderDoc. Development APKs can be installed on the Oculus Quest by building in either Unreal, Unity, or Android Studio, or by directly pushing a build using ADB.
To launch a development APK from RenderDoc, follow these steps:
Once the app is running on the connected Oculus Quest and RenderDoc is displaying its tab, follow these steps to take a frame capture:
.rdccapture file on the Oculus Quest.
.rdcfile from the Oculus Quest to the host computer and may take a few seconds.
Note: When opening a capture taken from an Oculus Quest, the RenderDoc and the PC must still be connected to an Oculus Quest as described earlier in this guide. Other Oculus Android devices may be able to open Oculus Quest
.rdccaptures, but this is not supported and may result in unpredictable behavior.
Note: If the Oculus Quest app crashes when a capture is attempted, it typically means the device is out of system memory. To take a RenderDoc capture on the Oculus Quest, there must be enough memory available on the device to support the following:
- Memory used by the app.
- Memory used by the RenderDoc capture layer.
.rdcfiles generated during the capture process.
A RenderDoc frame capture contains a lot of data, and it can be difficult to know where to start when analyzing a capture. This section contains recommendations for initial analysis on a new frame capture.
When opening a saved capture taken from an app on an Oculus Quest, the PC running RenderDoc must have an Oculus Quest connected to it as described in the “Connect Oculus Quest to RenderDoc” section of this topic.
After you have opened a capture, we recommend getting started by selecting the Statistics tab. Information on this tab applies to the entire frame, not just the currently selected call in the Event Browser. For initial analysis, look at the following information:
If the draw call count or GPU memory use are not in line with recommendations or expectations, reducing the number of calls and optimizing assets to minimize memory usage can be considered key optimization goals before you even begin looking at individual draw calls. In situations where both the call count and memory usage could use optimization, greater performance gains typically come from reducing the call count.
Once you have an overview of the frame, you can move on to examining individual draw calls. Select the Texture Viewer tab. From here, you can select individual draw calls in the Event Browser and examine the associated inputs and outputs.
To begin examining draw calls, you can follow these recommendations:
Following these steps, we recommend investigating draw calls that that have longer durations than others for optimization opportunities. Typical sources of long draw calls include complex shaders, issues with input resources or their properties, and rendering order issues.