When I open any kind of samples from threejs, I get this error :
For example, when I use https://threejs.org/examples/#webgl_water this is the output that I get :
On Chrome :
THREE.WebGLShader: gl.getShaderInfoLog() fragment 0:109(188): error: invalid input layout qualifier used
0:117(170): error: invalid input layout qualifier used
0:120(205): error: invalid input layout qualifier used
On FireFox :
gl.getProgramInfoLog Must have an compiled fragment shader attached. 0:2(12): warning: extension GL_ARB_gpu_shader5' unsupported in vertex shader 0:2(12): warning: extensionGL_ARB_gpu_shader5' unsupported in fragment shader
0:115(188): error: invalid input layout qualifier used
0:123(170): error: invalid input layout qualifier used
0:126(205): error: invalid input layout qualifier used
| Name | Value |
| --- | --- |
| Platform | Linux x86_64 |
| Browser User Agent | Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36 |
| Context Name | webgl |
| GL Version | WebGL 1.0 (OpenGL ES 2.0 Chromium) |
| Shading Language Version | WebGL GLSL ES 1.0 (OpenGL ES GLSL ES 1.0 Chromium) |
| Vendor | WebKit |
| Renderer | WebKit WebGL |
| Unmasked Vendor | Intel Open Source Technology Center |
| Unmasked Renderer | Mesa DRI Intel(R) HD Graphics 530 (Skylake GT2) |
| Antialiasing | Available |
| ANGLE | No |
| Major Performance Caveat | No |
Tested it on an intel i7 8700k, to the same results
I'm not able to reproduce the mentioned warning with Chrome and FF on macOS. Also tested with Ubuntu 16.04 LTS, Intel Ivybridge Mobile and Chrome 69. Same result.
@kenrussell What is the meaning of the following warning? Do we have to care about it?
error: invalid input layout qualifier used
I'm using Fedora 29, if that matters.
I'm not 100% sure. I think it means that the shader is using the syntax:
layout(location=0) in vec4 inColor;
which is OpenGL ES 3.0 / WebGL 2.0 syntax, and the driver is rejecting it for some reason.
Would need to see the text of the failing shader to know for sure.
@gyagp or @Richard-Yunchao from Intel may be able to help route this problem report to the Mesa team, but first we need to confirm the driver version on which it's happening.
So here are some more info
Extended renderer info (GLX_MESA_query_renderer):
Vendor: Intel Open Source Technology Center (0x8086)
Device: Mesa DRI Intel(R) HD Graphics 530 (Skylake GT2) (0x1912)
Version: 18.2.3
Accelerated: yes
Video memory: 3072MB
Unified memory: yes
Preferred profile: core (0x1)
Max core profile version: 4.5
Max compat profile version: 3.0
Max GLES1 profile version: 1.1
Max GLES[23] profile version: 3.2
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) HD Graphics 530 (Skylake GT2)
OpenGL core profile version string: 4.5 (Core Profile) Mesa 18.2.3
OpenGL core profile shading language version string: 4.50
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
This was running the water sample directly from threejs website.
Reported error is :
THREE.WebGLShader: gl.getShaderInfoLog() fragment 0:109(188): error: invalid input layout qualifier used
0:117(170): error: invalid input layout qualifier used
0:120(205): error: invalid input layout qualifier used
I'm not even sure lines are correct as there is nothing in this shader that looks like layout declaration.
The water example definitely uses no WebGL 2.
Can confirm it come from Fedora 29, we upgraded another computer with a 8700k, and we have the same error. Another 8700k on Fedora 28 works perfectly fine. So I guess it is a driver issue :/
Well, that is becoming interesting. Just plugged my Vega56, same error. So it has to come from mesa I think ?
I suspect that it is the layer that transform GLES to GL shaders that is not working. Maybe it is Mesa that does that ?
Let's wait what the folks of Intel think about this issue 馃槉
I used mesa 18.3.2 to run the test https://threejs.org/examples/#webgl_water in Chromium on Ubuntu with Intel HD 630 Graphics card, it was OK. I upgraded mesa to the latest version (mesa 19.0.0-dev), it was OK too. Maybe there was a bug in mesa 18.2.3 but fixed in newer mesa version. We will test it on more machines with more mesa versions to reproduce the issue.
The only trace in mesa where I can find "invalid input layout qualifier used" is in ast_type.cpp:451. Will see if I can find something in the commit log about it.
For reference, run chrome with MESA_DEBUG=1, linked the output of what MESA is telling ( contains the converted shader ). From the log, I think the converter is working just fine (as far as I can read shaders)
, but it seems to be still marked as invalid.
Just got an update of mesa on fedora 29 and it fixed the issue. All good now. Closing it. Thanks for the quick support !
It was great!
Thanks to all for the support 馃槉
Most helpful comment
Just got an update of mesa on fedora 29 and it fixed the issue. All good now. Closing it. Thanks for the quick support !