On Sat, May 13, 2017 at 1:55 AM, John Brooks <j...@fastquake.com> wrote:
> On Sat, May 13, 2017 at 09:04:05AM +1000, Timothy Arceri wrote:
>> On 13/05/17 00:11, John Brooks wrote:
>> >On Fri, May 12, 2017 at 03:56:26PM +0200, Samuel Pitoiset wrote:
>> >>
>> >>
>> >>On 05/12/2017 03:39 PM, John Brooks wrote:
>> >>>Since release, Dying Light and Dead Island Definitive Edition have been 
>> >>>broken
>> >>>on Mesa, producing at best only a black screen after loading. I found 
>> >>>that the
>> >>>root of the problem is that their vertex shaders redeclare the GLSL 
>> >>>builtin
>> >>>gl_VertexID, which Mesa's compiler considers to be an error:
>> >>>
>> >>>     error: `gl_VertexID' redeclared
>> >>>
>> >>>These patches make the compiler more lenient so that the shaders compile.
>> >>>Because such redeclarations are not explicitly valid in the spec, this
>> >>>behaviour is selectively activated by the new 
>> >>>allow_glsl_builtin_redeclaration
>> >>>driconf option, which has been enabled for both games in the default 
>> >>>drirc.
>> >>>
>> >>>With this change, both games work on Mesa and render correctly. Note that 
>> >>>the
>> >>>games require OpenGL 4.4+, and so it is necessary to launch them with
>> >>>MESA_GL_VERSION_OVERRIDE and MESA_GLSL_VERSION_OVERRIDE set to OpenGL 4.4 
>> >>>(GLSL
>> >>>440) or higher.
>> >>>
>> >>>Contrary to popular belief, this problem actually had nothing whatsoever 
>> >>>to do
>> >>>with compatibility profiles. Forcing Mesa to create a higher version
>> >>>compatibility profile with MESA_GL_VERSION_OVERRIDE=4.5COMPAT or
>> >>>allow_higher_compat_version results in graphical glitches, so don't use 
>> >>>that.
>> >>
>> >>I wonder if there is multiple versions of Dying Light, but using
>> >>MESA_GL_VERSION_OVERRIDE=4.4 and MESA_GLSL_VERSION_OVERRIDE=440 doesn't 
>> >>work
>> >>for me (game crash at launching). Also it requests some unsupported GL
>> >>functions (compat?).
>> >>
>> >>IIRC, Dying Light wants a GL 4.4 compat profile, I guess Timothy can
>> >>confirm?
>> >>
>> >>What's your steam app ID?
>> >>
>> >>Btw, you probably don't need to override the GL/GLSL versions, it should be
>> >>backward compatible.
>> >>
>> >
>> >Steam App ID 239140. The use of legacy functions (such as glBegin) in frame >> >0
>> >is SDL's doing:
>> ><https://github.com/spurious/SDL-mirror/blob/master/src/render/opengl/SDL_render_gl.c#L1334>
>> >
>> >I don't know why your game would crash on launch. My first thought would be
>> >steam runtime issues though. Make sure Steam runtime is enabled and remove
>> >~/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/libstdc++.so.6
>> >
>> >The version override is necessary since the game will not render at all 
>> >with a
>> >3.0 compat profile, which is what it gets without an override.
>>
>> Right but isn't that is because the game is requesting a compat profile?
>>
>> How do you know that the rendering issues you see when using the compat
>> override are not because of missing compat support for higher GL versions?
>>
>> For example a feature/behavior supported in an eariler GL version may have
>> been changed to be more like core and it just happens that overriding to use
>> core makes the rendering problems go away.
>>
>
> Nope, it's not requesting a compat profile or anything specific at all. I
> checked with ltrace and the game calls SDL_GL_CreateContext without calling
> SDL_GL_SetAttribute to specify a version or type. Thus, SDL just calls
> glXCreateContext:
> https://hg.libsdl.org/SDL/file/tip/src/video/x11/SDL_x11opengl.c#l620
>
> The spec says nothing of what version you're supposed to get with
> glXCreateContext, but the result with Mesa is a 3.0 compatibility profile
> unless you override it.

glXCreateContext is supposed to return a context that's compatible
with GL 1.x. The Core profile is not compatible with GL 1.x.
Therefore, glXCreateContextAttribsARB has to be used to get the Core
profile.

Marek
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to