mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-30 01:20:17 +01:00
glsl: allow ForceGLSLVersion to override #version directives
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. Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
This commit is contained in:
parent
c519c4d85e
commit
dbe67d76e0
3 changed files with 10 additions and 6 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -226,6 +226,7 @@ struct _mesa_glsl_parse_state {
|
|||
|
||||
bool es_shader;
|
||||
unsigned language_version;
|
||||
unsigned forced_language_version;
|
||||
gl_shader_stage stage;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue