What's the use-case for applying a different version to a shader with an explicit #version?
On Fri, Mar 27, 2015 at 2:13 PM, Brian Paul <bri...@vmware.com> wrote: > Previously, the ctx->Const.ForceGLSLVersion setting only worked if > the shader lacked a #version directive. Now, the ForceGLSLVersion > setting will override the #version directive too. > > This change should be safe since it should be rare to have an app > that has a mix of shader versions and we only wanted to override > the #version for shaders which lacked the #version directive. > --- > src/glsl/glsl_parser_extras.cpp | 11 +++++++---- > src/glsl/glsl_parser_extras.h | 1 + > src/mesa/main/mtypes.h | 4 ++-- > 3 files changed, 10 insertions(+), 6 deletions(-) > > diff --git a/src/glsl/glsl_parser_extras.cpp b/src/glsl/glsl_parser_extras.cpp > index 79624bc..0aa3c54 100644 > --- a/src/glsl/glsl_parser_extras.cpp > +++ b/src/glsl/glsl_parser_extras.cpp > @@ -73,8 +73,8 @@ _mesa_glsl_parse_state::_mesa_glsl_parse_state(struct > gl_context *_ctx, > this->uses_builtin_functions = false; > > /* Set default language version and extensions */ > - this->language_version = ctx->Const.ForceGLSLVersion ? > - ctx->Const.ForceGLSLVersion : 110; > + this->language_version = 110; > + this->forced_language_version = ctx->Const.ForceGLSLVersion; > this->es_shader = false; > this->ARB_texture_rectangle_enable = true; > > @@ -320,11 +320,14 @@ > _mesa_glsl_parse_state::process_version_directive(YYLTYPE *locp, int version, > this->ARB_texture_rectangle_enable = false; > } > > - this->language_version = version; > + if (this->forced_language_version) > + this->language_version = this->forced_language_version; > + else > + this->language_version = version; > > bool supported = false; > for (unsigned i = 0; i < this->num_supported_versions; i++) { > - if (this->supported_versions[i].ver == (unsigned) version > + if (this->supported_versions[i].ver == this->language_version > && this->supported_versions[i].es == this->es_shader) { > supported = true; > break; > diff --git a/src/glsl/glsl_parser_extras.h b/src/glsl/glsl_parser_extras.h > index 0975c86..1f5478b 100644 > --- a/src/glsl/glsl_parser_extras.h > +++ b/src/glsl/glsl_parser_extras.h > @@ -226,6 +226,7 @@ struct _mesa_glsl_parse_state { > > bool es_shader; > unsigned language_version; > + unsigned forced_language_version; > gl_shader_stage stage; > > /** > diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h > index 8e1dba6..f718768 100644 > --- a/src/mesa/main/mtypes.h > +++ b/src/mesa/main/mtypes.h > @@ -3527,8 +3527,8 @@ struct gl_constants > GLboolean ForceGLSLExtensionsWarn; > > /** > - * If non-zero, forces GLSL shaders without the #version directive to > behave > - * as if they began with "#version ForceGLSLVersion". > + * If non-zero, forces GLSL shaders to behave as if they began > + * with "#version ForceGLSLVersion". > */ > GLuint ForceGLSLVersion; > > -- > 1.9.1 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev