How to reproduce:
1. Open the attached “IN-142812.zip” Project
2. Build and Run the “SceneB_DrawProceduralLoad” Scene on Apple Vision Pro (AVPFramePacingRepro/Scenes)
3. Observe the FPS Counter in the Player
4. Minimize the App via the Digital Crown Button or the Home Button
5. Re-open the App, observe the FPS Counter in the Player
Actual result: Frame Rate rises after re-opening the App with each refocus of the Application
Expected result: Consistent Frame Rate regardless if minimizing or refocusing the Application
Reproducible with: 2.4.3 (6000.0.75f1), 3.1.5 (6000.3.16f1, 6000.4.8f1, 6000.5.0b9, 6000.6.0a5)
Testing environment: macOS 26.4.1 (M3 Pro), Apple Vision Pro 26.4
Notes:
- 2.1.4 VisionOS 6000.0.75f1 seems not to open the Application however the Xcode Console still is printing the information regarding frames
- Additional useful user foundings:
With the same scene and same instance count, the app consistently shows the following behavior:
- Cold launch: approximately 49-50 FPS
- After one pause/resume cycle: approximately 95-100 FPS
This is a useful data point because the exact same rendering workload can run at around 100 FPS after resume, so this does not look like a simple GPU workload limit.
Frame timing observations at 500,000 instances:
Cold launch, stable samples:
- cpuMain is low, usually around 2-4 ms
- gpuFrame, when reported, is around 15-20 ms
- cpuPresentWait is around 8-11 ms
- ProfilerRecorder marker profWaitTargetFps is around 9-12 ms
- Actual frame rate is around 50 FPS
After pause/resume, stable samples:
- cpuMain remains low
- cpuPresentWait drops to around 0.3-0.9 ms
- profWaitTargetFps drops to around 0.2-0.9 ms
- Actual frame rate becomes approximately 95-100 FPS
The main difference appears to be extra present / frame pacing wait time during cold launch. After resume, the wait time almost disappears.