Copyright © 2026 Unity Technologies
Steps to reproduce:
1. Open the attached user's project "MyVRProject.zip" or create a VR Template
2. Enable Development Build and Build to the headset (either Android or Meta Quest Build Profile)
3. Connect the Memory Profiler to the headset
4. Capture a Snapshot then navigate to "Unity Objects" and expand "RenderTexture"
5. Put the headset to sleep by pressing the Power button, then wake it up
6. Capture a new Snapshot
7. Compare the RenderTexture entries under Unity Objects in both snapshots
Actual result: 3 additional XR Texture RenderTexture objects are allocated on every sleep/wake cycle and are never released
Expected result: RenderTexture allocation stays the same across sleep/wake cycles
Reproducible with: OpenXR 1.18.0-pre.1 - 1.19.0-pre.1 (6000.0.83f1, 6000.3.24f1, 6000.6.0f1, 6000.7.0b1, 7000.0.0a1)
Not reproducible with: OpenXR 1.17.1 (6000.0.83f1, 6000.3.24f1, 6000.6.0f1, 6000.7.0b1, 7000.0.0a1)
Reproducible with these devices:
VLNQA00417 - Oculus Quest 2 (Quest 2) - CPU: Snapdragon XR2, GPU: Adreno 650, OS: 14
VLNQA00609 - Oculus Quest 3 (Quest 3) - CPU: Snapdragon XR2 Gen 2 (SM8550), GPU: Adreno 740, OS: 14
VLNQA00644 - Oculus Quest 3S (Quest 3S) - CPU: Qualcomm Snapdragon XR2 Gen 2 (SXR2230P), GPU: Adreno 740, OS: 14
Testing Environment: Windows 11
Not reproducible on: no other environment tested
Notes:
-Reproducible with Vulkan and OpenGLES3 Graphics APIs
-Not reproducible with Windows Standalone Player and Editor Play Mode
-Vulkan leaks 3 XR Texture RenderTextures per sleep/wake cycle, OpenGLES3 leaks 6 (3 -> 9 -> 15 -> 21 across three cycles)
-The differing counts are likely a swapchain layout difference, a single texture array swapchain on Vulkan versus two per-eye swapchains on OpenGLES3, rather than a difference in severity
Issues you vote on will appear here