Copyright © 2026 Unity Technologies
Steps to reproduce:
1. Open the attached user's project "quest3-msaa-repro.zip"
2. Execute these adb commands on Quest 3 and enable GPU profiling:
adb shell setprop debug.oculus.sysPropDebug 1
adb shell setprop debug.oculus.gpuLevel 3
adb shell setprop debug.oculus.cpuLevel 3
adb shell setprop debug.oculus.headlock 1
adb shell ovrgpuprofiler -e
3. Build & Run on Quest 2/3/3S (Graphics API Vulkan, MSAA is 4x by default)
4. Wait about 30 seconds, then capture a GPU trace:
adb shell ovrgpuprofiler -t 2
5. Note the GPU time of the eye buffer surface (total, Binning, Render, StoreColor)
6. Repeat steps 3 to 5 for the other 3 combinations (Vulkan MSAA off, GLES MSAA 4x, GLES MSAA off)
7. Compare the results:
GLES MSAA off : total 9.7ms / Binning 4.5 / Render 4.2 / StoreColor 0.04
GLES MSAA 4x : total 13.0ms / Binning 5.1 / Render 6.3 / StoreColor 0.15
Vulkan MSAA off : total 9.1ms / Binning 4.5 / Render 3.7 / StoreColor 0.18
Vulkan MSAA 4x : total 14.1ms / Binning 5.1 / Render 7.0 / StoreColor 0.45
Actual result: MSAA 4x cost is +3.3ms on GLES but +5.0ms on Vulkan. Vulkan StoreColor is about 3x of GLES (0.45ms vs 0.15ms) with the same bin layout (63 bins of 192x256)
Expected result: MSAA 4x cost is similar on both Graphics APIs
Reproducible with: 6000.0.81f1, 6000.3.21f1, 6000.5.7f1, 6000.6.0b7, 6000.7.0a4
Reproducible with these devices:
VLNQA00644, Oculus Quest 3S (Quest 3S), Android 14, CPU: Google Tensor G2, GPU: Adreno (TM) 740 - Firmware v2.6 -
VLNQA00609 - Oculus Quest 3 (Quest 3) - CPU: Snapdragon XR2 Gen 2 (SM8550), GPU: Adreno 740, OS: 14 - Firmware 2.4.1031
VLNQA00417 - Oculus Quest 2 (Quest 2) - CPU: Snapdragon XR2, GPU: Adreno 650, OS: 14 - Firmware 2.1.1034
Testing Environment: Windows 11
Not reproducible on: no other environment tested
Notes:
-Performance is worse on 6000.0.0f1 (no matter what test configuration is used) so it's not possible to effectively test for a regression
-ovrgpuprofiler -e must be executed before the app starts. If you run it after, restart the app
-Optimized Buffer Discards was enabled during the tests
-No difference was observed when switching to Multi-pass or Multi-view/Single Pass Instanced Rendering modes
-On Quest 2, the GPU time for Vulkan with MSAA off is ~14ms, with MSAA 4x is ~21ms. Those numbers are similar when testing with OpenGLES (~1ms difference)
-On Quest 3, the GPU time for Vulkan with MSAA off is ~11ms, with MSAA 4x is ~16ms. On GLES with MSAA off is ~12ms, with MSAA 4x is ~15ms
-Driver information of Quest3S:
GLES: Adreno (TM) 740 - OpenGL ES 3.2, Qualcomm driver V@0837.0.7 (GIT@3dbacedba8, 2026-01-12)
Vulkan: Adreno (TM) 740 - Vulkan 1.3.295 (instance 1.3.0), driver 512.837.7 (raw 2150912007)
Issues you vote on will appear here