OpenGL dual source blending not working on Renoir 4800H.
Brief summary of the problem:
When rendering triangles using dual source blending, nothing appears on screen. When the same binary is run on NVidia GPU (via off-loading) the result is as expected.
Hardware description:
- CPU: Ryzen 4800H
- GPU: Renoir 4800H + NVidia GTX 2060
- System Memory: 32GB
- Display(s): 1 (just notebook)
- Type of Diplay Connection: eDP
System infomration:
- Distro name and Version: Open Suse 15.2
- Kernel version: 5.10.10
- Custom kernel: from https://download.opensuse.org/repositories/Kernel:/stable/standard/
- AMD package version:
- X.Org X Server 1.20.10
- OpenGL renderer string: AMD RENOIR (DRM 3.40.0, 5.10.10-2.g46d7a79-default, LLVM 9.0.1)
- OpenGL core profile version string: 4.6 (Core Profile) Mesa 20.3.3
How to reproduce the issue:
Attached source can be used to reproduce the issue. Source is based on tutorial from http://www.opengl-tutorial.org/download/ to make it as short as possible. It can be compiled in this project (simply replace some tutorial with attached source and compile it). I have tried to specify fragment shader outputs bindings by either layout modifier in GLSL or by glBindFragDataLocationIndexed call, both methods produced the same result. When inspecting linked shader by glGetFragDataLocation and glGetFragDataIndex, the returned values seems to be ok.
The attached images show results on Renoir and on NVidia (produced by the same binary).