Search Issue Tracker

By Design

Votes

0

Found in

2020.3

2020.3.32f1

Issue ID

1422925

Regression

No

[Android][OpenGL] Crash when reading and writing the same RWTexture in a Compute Shader

GLES

-

How to reproduce:
1. Open the user's attached "sspr.zip" project
2. Open the Build Settings (File->Build Settings...)
3. Switch Platform to "Android"
4. Open the Player Settings (Edit->Project Settings...->Player)
5. In the Android tab, "Other Settings" section change active Graphics API to "OpenGLES3"
6. Build and Run the "SampleScene" on an Android device

Expected results: Crash
Actual results: No crash

Reproducible with: 2020.3.34f1
Not reproducible with: 2021.3.2f1
Unable to test with: 2019.4.38f1 because of error CS0234, 2022.1.0f1, 2022.2.0a12 because of the error CS0122: x is inaccessible due to its protection level

Reproducible with:
VLNQA00391, Xiaomi Redmi 9A (M2006C3LG), Android 10, CPU: MediaTek Helio G25 (MT6762G), GPU: PowerVR Rogue GE8320
VLNQA00313, Huawei Y6 Ⅱ Compact (HUAWEI LYO-L01), Android 5.1, CPU: MediaTek MT6735, GPU: Mali-T720
----------, Oppo Reno Z 中国版 (PCDM10), Android 11, CPU: NOT FOUND, GPU: PowerVR Rogue GM9446
VLNQA00335, Samsung Galaxy S20+ 5G (SM-G986B), Android 10, CPU: Exynos 990, GPU: Mali-G77

Stacktrace:
#00 (wrapper managed-to-native) UnityEngine.Rendering.ScriptableRenderContext:Submit_Internal_Injected (UnityEngine.Rendering.ScriptableRenderContext&)
#01 UnityEngine.Rendering.ScriptableRenderContext:Submit_Internal () <0x13>
#02 UnityEngine.Rendering.ScriptableRenderContext:Submit () <0x13>
#03 UnityEngine.Rendering.Universal.UniversalRenderPipeline:RenderSingleCamera (UnityEngine.Rendering.ScriptableRenderContext,UnityEngine.Rendering.Universal.CameraData,bool) <0x807>
#04 UnityEngine.Rendering.Universal.UniversalRenderPipeline:RenderCameraStack (UnityEngine.Rendering.ScriptableRenderContext,UnityEngine.Camera) <0xb13>
#05 UnityEngine.Rendering.Universal.UniversalRenderPipeline:Render (UnityEngine.Rendering.ScriptableRenderContext,UnityEngine.Camera[]) <0x103>
#06 UnityEngine.Rendering.RenderPipeline:InternalRender (UnityEngine.Rendering.ScriptableRenderContext,UnityEngine.Camera[]) <0x3f>
#07 UnityEngine.Rendering.RenderPipelineManager:DoRenderLoop_Internal (UnityEngine.Rendering.RenderPipelineAsset,intptr,System.Collections.Generic.List`1<UnityEngine.Camera/RenderRequest>) <0xcb>
#08 (wrapper runtime-invoke) <Module>:runtime_invoke_void_object_intptr_object (object,intptr,intptr,intptr)

Note:
- Not reproducible on Windows when using OpenGLES3 Graphics API

  1. Resolution Note (2022.2.X):

    The shader is using a format that OpenGL ES 3.1 does not support for read and write access in the same shader.
    Only R32 formats can be used that way. (GLSL ES 3.1 spec chapter 4.9 "Except for image variables qualified with the format qualifiers r32f, r32i, and r32ui, image variables must specify either memory qualifier readonly or the memory qualifier writeonly")

    You should get the following warning in the Unity Editor's shader inspector: "Shader warning in 'SSPRReflectionColor': HLSLcc: The resource 'Result' uses an unsupported type/format for read/write access at kernel CSBlur (on gles3)"

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.