Copyright © 2026 Unity Technologies
This bug was actually coming from Qualcomm drivers. Fetching the lightmap Texture2DArray dynamically makes the total GPU time about 35% slower on Quest 2 with the attached repro scene. And it seems that Adreno GPUs in general were impacted at different degrees. Here's a recap of the perf characteristics: textureName.Sample(samplerName, float3(uv, slicesFromConstantBuffer[instanceIndex + X])) -> Slow textureName.Sample(samplerName, float3(uv, slicesFromConstantBuffer[0])) -> Fast textureName.Sample(samplerName, float3(uv, 0)) -> Fast The bug has been forwarded to Qualcomm and they fixed it in driver version 761 and later.
This bug was actually coming from Qualcomm drivers. Fetching the lightmap Texture2DArray dynamically makes the total GPU time about 35% slower on Quest 2 with the attached repro scene. And it seems that Adreno GPUs in general were impacted at different degrees. Here's a recap of the perf characteristics: textureName.Sample(samplerName, float3(uv, slicesFromConstantBuffer[instanceIndex + X])) -> Slow textureName.Sample(samplerName, float3(uv, slicesFromConstantBuffer[0])) -> Fast textureName.Sample(samplerName, float3(uv, 0)) -> Fast The bug has been forwarded to Qualcomm and they fixed it in driver version 761 and later.
Steps to reproduce:
1. Open the attached project "URPBRG.zip"
2. Go to Player Settings and make sure that the Graphics API is set to Vulkan
3. Make sure that in the Build Settings, only the scene YRD_A1_Yard_Day_Env_Scene_Entities is enabled for the Scenes In Build.
4. Make sure that the Development Build and Autoconnect Profiler options are enabled
5. Build and deploy the app to an Oculus Quest 2 device
6. When the app is deployed, open up the Profiler and start recording
7. Save the profiler data and also take note that the frame rate is around 60-70 fps.
8. Now switch the Graphics API under Player Settings to OpenGLES 3
9. Build and deploy the same scene to the quest 2 device and capture a profile of the app running on the quest 2 device. You will see that the frame rate fluctuates around 72 FPS.
10. Compare the profiler data (OpenGLES 3) captured in Step 9 and the profiler data (Vulkan) in Step 7. You will see that the frame rate for OpenGLES 3 is higher overall compared to Vulkan when BRG/Entities Graphics is beign in used.
Expected results: Running Entities Graphics/BatchRendererGroup under Vulkan does not result in a frame rate drop compared to OpenGLES 3 and does not cause Tile Binning to cost more
Actual Results: Running Entities Graphics/BatchRendererGroup under Vulkan results in a frame rate drop compared to OpenGLES 3 and causes Tile Binning to cost more
Reproducible in: Entities Graphics 1.0.0 - pre.65 (2022.2.19f1, 2023.1.0b18, 2023.2.0a16)
Could not test on: 2020.3.48f1, 2021.3.26f1 due to package errors when downgrading
Reproducible on these devices:
VLNQA00415 - Oculus Quest 2 (Quest 2), CPU: Snapdragon XR2, GPU: Adreno 650, OS: 10
Environment tested on: Windows 10
Notes:
-You can find a more complete conversation here: https://forum.unity.com/threads/entities-graphics-on-mobile-tile-binning-cost-is-higher-compared-to-not-using-entities-graphics.1437022/
Issues you vote on will appear here