Search Issue Tracker

Won't Fix

Votes

0

Found in

2019.1.4f1

Issue ID

1166128

Regression

No

[Android][GLES] Shader is not compling on Samsung S3 devices when application is ran on Adreno 225

Mobile

-

To reproduce:
1. Open attached project "ShaderFail.2019.1.4f1.zip"
2. Build for Android on an eligible device
3. Observe the build on the device

result: shader is not compiled properly due to errors

Reproduced in: 2018.4.3f1 2019.1.9f1, 2019.2.0b8, 2019.3.0a4

Note1: 2018.4 build produces black screen, 2017.4 is unable to build the project due to errors
Note2: could not check on latest 2019.3 as ever since 2019.3.0a5, the minimum API level is 19
Note3: not reproducible on Vulkan (on devices that supports it)

Not reproduced on devices:
VLNQA00016, Samsung Galaxy S4 Mini (GT-I9195), Android 4.4.2, CPU: Snapdragon S4 Plus MSM8960, GPU: Adreno (TM) 305
VLNQA00114, Samsung Galaxy S3 Mini (GT-I8190), Android 4.1.2, CPU: NovaThor U8500, GPU: Mali-400 MP
VLNQA00111, Samsung Galaxy J5(2016) (SM-J510FN), Android 7.1.1, CPU: Snapdragon 410 MSM8916, GPU: Adreno (TM) 306
VLNQA00255, Samsung Galaxy Note3 Neo (SM-N7505), Android 4.4.2, CPU: Exynos 5 Hexa 5260, GPU: Mali-T624
VLNQA00230, Oneplus OnePlus6T (ONEPLUS A6013), Android 9, CPU: Snapdragon 845 SDM845, GPU: Adreno (TM) 630
VLNQA00270, Samsung Galaxy S10e (SM-G970F), Android 9, CPU: Exynos 9 9820, GPU: Mali-G76
VLNQA00031, Lge Nexus 5 (Nexus 5), Android 6.0.1, CPU: Snapdragon 800 MSM8974, GPU: Adreno (TM) 330
VLNQA00035, Motorola DROID MAXX 2 (XT1021), Android 4.4.4, CPU: NOT FOUND, GPU: Adreno (TM) 305

Reprodiced on devices:
VLNQA00020, Samsung Galaxy S3 (SGH-T999), Android 4.3, CPU: Snapdragon S4 Plus MSM8960, GPU: Adreno (TM) 225
VLNQA00055, Samsung Galaxy S3 (SC-06D), Android 4.1.2, CPU: Snapdragon S4 Plus MSM8960, GPU: Adreno (TM) 225
VLNQA00040, Htc ONE S (HTC One S), Android 4.1.1, CPU: Snapdragon S4 MSM8290, GPU: Adreno (TM) 225

  1. Resolution Note (2019.3.X):

    The shader in question fails to compile due to two issues:
    - It uses unsigned integer maths that is not natively supported by OpenGL ES 2 GLSL
    - It uses texture sampling functions with explicit derivatives, which require and extension on OpenGL ES 2 GLSL to work

    Workaround for the first issue: don't use integer math. The shader can be easily converted to using floating-point calculations (e.g. 'float2 uv0 = float2(index.r % 4, index.r / 4) / 4.0;' -> 'float2 uv0 = float2(index.r - floor(index.r / 4.0) * 4.0, index.r / 4.0) / 4.0;').
    There is no workaround for the second issue, the device in question doesn't support the required extension, so this behaviour is by design.

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.