Bug 102200

Summary: Wrong shader preprocessor string with Intel HD620 graphic card
Product: Mesa Reporter: Max Perl <max.augsburg>
Component: Drivers/DRI/i965Assignee: Intel 3D Bugs Mailing List <intel-3d-bugs>
Status: RESOLVED NOTOURBUG QA Contact: Intel 3D Bugs Mailing List <intel-3d-bugs>
Severity: normal    
Priority: medium    
Version: 17.1   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:

Description Max Perl 2017-08-13 18:19:21 UTC
Hello,

I have an Intel HD620 graphic Card (Kaby Lake) and I wanted to use an OpenGL audio plugin. I run Mageia 6 with Mesa 17.1.5 on a 64-bit System.

Here is my Output of glxinfo | grep OpenGL:

"OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) HD Graphics 620 (Kaby Lake GT2) 
OpenGL core profile version string: 4.5 (Core Profile) Mesa 17.1.5
OpenGL core profile shading language version string: 4.50
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 3.0 Mesa 17.1.5
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 17.1.5
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
OpenGL ES profile extensions:"


When I try to load the OpenGL audio plugin obviously the wrong shader preprocessor string seems to be passed. The following error message is outputed:

"** INFO: AF210 - System GL Version is: 3.0 Mesa 17.1.5
** INFO: AF210 - System GLSL Version is: 1.30 : #version 100

AF210::GFX_renderer::GFX-VXSHDR-03 failed to compile
0:1(10): error: GLSL 1.50 is not supported. Supported versions are: 1.10, 1.20, 1.30, 1.00 ES, 3.00 ES, 3.10 ES, and 3.20 ES

[...]"


But the developer of the Audio plugin expected accordingly https://en.wikipedia.org/wiki/OpenGL_Shading_Language#Versions the following string at the beginning:

"** INFO: AF210 - System GLSL Version is: 1.30 : #version 130"


Because the System seems not to have Version 1.30 the Audio plugin falls back to GLSL Version 1.50 which the system doesn't support. 

I don't know whether this is a Mesa Bug. To be honest I have not a hunch about OpenGL. The audio plugin is OverToneDSP AF-210. A demo can be downloaded from https://www.overtonedsp.co.uk/download/download_af210/index.html
You can find my bug report at OvertoneDSP at http://www.kvraudio.com/forum/viewtopic.php?f=212&t=489394

It would be great if you could help me.

Thanks in advance,
Max
Comment 1 Kenneth Graunke 2017-08-14 04:00:15 UTC
Hi Max,

I doubt this is a Mesa bug - it's more likely an application issue.

If the application is using a "Core Profile" OpenGL context, it will get OpenGL 4.5 and can use:

- GLSL 1.50 (#version 150)
- GLSL 3.30 (#version 330)
- GLSL 4.00 (#version 400)
- GLSL 4.10 (#version 410)
- GLSL 4.20 (#version 420)
- GLSL 4.30 (#version 430)
- GLSL 4.40 (#version 440)
- GLSL 4.50 (#version 450)
- GLSL ES 1.00 (#version 100)
- GLSL ES 3.00 (#version 300 es)
- GLSL ES 3.10 (#version 310 es)
- GLSL ES 3.20 (#version 320 es)

If the application is not specifically requesting a core profile context, it will get a legacy GL context, which is OpenGL 3.0, which lets you use:

- GLSL 1.10 (#version 110 or no version line at all)
- GLSL 1.20 (#version 120)
- GLSL 1.30 (#version 130)
- GLSL ES 1.00 (#version 100)
- GLSL ES 3.00 (#version 300 es)
- GLSL ES 3.10 (#version 310 es)
- GLSL ES 3.20 (#version 320 es)

There is no GLSL 1.00 - "#version 100" actually refers to GLSL ES 1.00, which is the shading language of OpenGL ES 2.0.  OpenGL can use these shaders because we support GL_ARB_ES2_compatibility.

Likely the application expects to be able to use GLSL 1.50 in a legacy / compatibility profile, while we only support it in core profile.

It should certainly be able to use GLSL 1.30 / #version 130 though, and the fact that it doesn't work sounds like a bug in their fallback paths.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.