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