[Mesa-dev] ARB_shading_language_include

Karol Herbst nouveau at karolherbst.de
Sat Mar 12 21:51:14 UTC 2016


Hi all,

the game "Divinity: Original Sin - Enhanced Edition" uses
ARB_shading_language_include whenever it detects a non catalyst driver on Linux.

Apitraces from the game running on catalyst show that the shaders are simply
included within the game engine and replay fine with all mesa drivers as long as

"glShaderSource(shader = 216, count = 1, string =
[6BB0788BA6DFF7F4204CCFE5139E8AE6], length = [-1])"
calls are ignored

so there are two issues:

1. The game just uses ARB_shading_language_include without checking if it's
actually there.
    I have a WIP branch here:
https://github.com/karolherbst/mesa/commits/ARB_shading_language_include
    that branch contains everything needed to run the game, but also hacks
around the glShaderSource calls I mentioned above.
    The big question is now: Would a proper implemention be accepted in mesa,
even when only one game actually requires it?

2. glShadersource calls invalidate the compile Status of shaders and linking
fails
    I have _no_ idea what the spec say about this, but the game actually creates
shader, compiles them, links them, uises them, then calls those glShaderSource
calls, and links them again. Mesa fails with an linking error indicating that a
shader is uncompiled (because glShaderSource marks a shader as uncompiled)
    So what is going on there?

Many Thanks

Karol


More information about the mesa-dev mailing list