Bug 445485

Summary: QOpenGLShader::link: error: fragment shader uses too many input components (52 > 40)
Product: [Applications] plasma-systemmonitor Reporter: Phenom <retrosharephenom>
Component: generalAssignee: KSysGuard Developers <ksysguard-bugs>
Status: RESOLVED UPSTREAM    
Severity: normal CC: ahiemstra, plasma-bugs
Priority: NOR    
Version: 5.23.3   
Target Milestone: ---   
Platform: Arch Linux   
OS: Linux   
Latest Commit: Version Fixed In:

Description Phenom 2021-11-14 13:57:33 UTC
Hello,

Since some times, journalctl fill with these error:
> nov. 14 14:24:16 Arch plasmashell[584]: QOpenGLShader::link: error: fragment shader uses too many input components (52 > 40)
> nov. 14 14:24:16 Arch plasmashell[584]: shader compilation failed: 
>                                         "error: fragment shader uses too many input components (52 > 40)\n"
> nov. 14 14:24:16 Arch plasmashell[584]: QOpenGLShader::link: error: fragment shader uses too many input components (52 > 40)
> nov. 14 14:24:16 Arch plasmashell[584]: QOpenGLShaderProgram::uniformLocation(matrix): shader program is not linked
> nov. 14 14:24:16 Arch plasmashell[584]: QOpenGLShaderProgram::uniformLocation(opacity): shader program is not linked
> nov. 14 14:24:16 Arch plasmashell[584]: QOpenGLShaderProgram::uniformLocation(lineWidth): shader program is not linked
> nov. 14 14:24:16 Arch plasmashell[584]: QOpenGLShaderProgram::uniformLocation(aspect): shader program is not linked
> nov. 14 14:24:16 Arch plasmashell[584]: QOpenGLShaderProgram::uniformLocation(smoothing): shader program is not linked

With
> $ glxinfo | grep version
> server glx version string: 1.4
> client glx version string: 1.4
> GLX version: 1.4
>     Max core profile version: 0.0
>     Max compat profile version: 2.1
>     Max GLES1 profile version: 1.1
>     Max GLES[23] profile version: 2.0
> OpenGL version string: 2.1 Mesa 21.2.5
> OpenGL shading language version string: 1.20
> OpenGL ES profile version string: OpenGL ES 2.0 Mesa 21.2.5
> OpenGL ES profile shading language version string: OpenGL ES GLSL ES 1.0.16

It's on VirtualBox VM with 3D acceleration activated.
Comment 1 Arjen Hiemstra 2021-11-15 17:59:33 UTC
The implementation of Line charts was changed to use vertex attributes for passing data, as that allows for several improvements to rendering performance.

According to the OpenGL documentation, the minimum amount of vertex attribute components an implementation should support is 16*4, or 64. This is even true for OpenGL 2.1, see https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glGet.xml . That means that your OpenGL driver is not conformant, as it claims to only support 10*4 vertex attribute components. There isn't much we can do about this on our end, I don't really want to hurt other drivers because of one non-conformant driver and there's no easy way to fall back here. 

You should really report this to the upstream driver.