glsl: fix compat shaders in GLSL 1.40
authorTimothy Arceri <tarceri@itsqueeze.com>
Wed, 11 Apr 2018 23:23:02 +0000 (09:23 +1000)
committerTimothy Arceri <tarceri@itsqueeze.com>
Thu, 12 Apr 2018 01:51:08 +0000 (11:51 +1000)
The compatibility and core tokens were not added until GLSL 1.50,
for GLSL 1.40 just assume all shaders built with a compat profile
are compat shaders.

Fixes rendering issues in Dawn of War II on radeonsi which has
enabled OpenGL 3.1 compat support.

Fixes: a0c8b49284ef "mesa: enable OpenGL 3.1 with ARB_compatibility"
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105807

src/compiler/glsl/glsl_parser_extras.cpp

index 0cc57f5a8872717f620f54ae87db298b047cad20..5dd362b3e38707661a80a24a32eca7947f42917e 100644 (file)
@@ -429,6 +429,8 @@ _mesa_glsl_parse_state::process_version_directive(YYLTYPE *locp, int version,
       this->language_version = version;
 
    this->compat_shader = compat_token_present ||
+                         (this->ctx->API == API_OPENGL_COMPAT &&
+                          this->language_version == 140) ||
                          (!this->es_shader && this->language_version < 140);
 
    bool supported = false;