Search Issue Tracker

By Design

Votes

0

Found in

2021.3.4f1

2022.1.1f1

2022.2.0a15

Issue ID

UUM-1764

Regression

Yes

[Android][URP][OpenGLES3] Render Texture memory increases by 50% when using OpenGLES 3

--

-

Steps to reproduce:
1. Open the attached project "1239000_2021.zip"
2. Switch to Android
3. Make sure that OpenGLES 3 is the selected Graphics API
4. Make Sure that Depth Texture and Opaque Texture are enabled in the URP asset
5. Build to a device
6. Open the Memory Profile and capture a snapshot, navigate to Treemap and inspect the Render Texture memory block

Expected results: Render texture memory is the same when using Vulkan and OpenGLES 3
Actual results: Render Texture memory is higher with OpenGLES 3 than Vulkan (See attached results.png)

Reproducible in: URP 12.1.7 - 14.0.3 (2021.3.4f1, 2022.1.1f1, 2022.2.0a15)
Not reproducible in: URP 7.7.1 - 10.9.0 (2019.4.39f1, 2020.3.34f1)

Could not test on 2021.1.28f1 and 2021.2.18f1 due to Gradle errors when trying to build

Reproducible with these devices (OpenGLES 3):
N/A, Huawei HUAWEI Mate 20 Pro (LYA-L29), Android 9, CPU: HiSilicon Kirin 980, GPU: Mali-G76

Not reproducible with these devices (OpenGLES 3):
N/A, Samsung Galaxy Z Flip3 5G (SM-F711B), Android 11, CPU: Snapdragon 888, GPU: Adreno (TM) 660
VLNQA00372 - Galaxy S21 5G (SM-G991U), CPU: Snapdragon 888, GPU: Adreno 660, OS: 11
N/A, Google Pixel 3 (Pixel 3), Android 12, CPU: Snapdragon 845, GPU: Adreno (TM) 630
N/A, Samsung Galaxy S9 (SM-G960F), Android 8.0.0, CPU: Exynos 9 Series 9810, GPU: Mali-G72
VLNQA00202 - Samsung Galaxy Note 9 USA (SM-N9600), CPU: Snapdragon 845 SDM845, GPU: Adreno 630, OS: 9.0.0
VLNQA00413 - Samsung Galaxy Note10+ (SM-N975F), OS: 9, CPU: Exynos 9 Series 9825, GPU: Mali-G76

Notes:
-Issue does not reproduce on Vulkan

  1. Resolution Note:

    By design: URP requests D32_SFloat_S8_UInt depth buffer for render texture.
    The affected device "HUAWEI Mate 20 Pro (LYA-L29), Android 9, CPU: HiSilicon Kirin 980, GPU: Mali-G76" supports it with GLES3, but does not support this format when using Vulkan, so the depth buffer fallbacks to using D24_UNorm_S8_UInt format, resulting in different memory consumption between Vulkan/GLES.

    D32_SFloat_S8_UInt uses 8 bytes per pixel.
    D24_UNorm_S8_UInt uses 4 bytes per pixel.

Add comment

Log in to post comment

All about bugs

View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.