From: Francisco Jerez Date: Thu, 14 Jul 2016 19:52:51 +0000 (-0700) Subject: glsl/ast: Allow redeclaration of gl_LastFragData with different precision qualifier. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=6b3d23dcc07a584a7c6fcd64b025e88a92047c49;p=mesa.git glsl/ast: Allow redeclaration of gl_LastFragData with different precision qualifier. v2: No need to check the GLSL version. (Ken) Reviewed-by: Kenneth Graunke --- diff --git a/src/compiler/glsl/ast_to_hir.cpp b/src/compiler/glsl/ast_to_hir.cpp index c91ed539623..581367ba1cf 100644 --- a/src/compiler/glsl/ast_to_hir.cpp +++ b/src/compiler/glsl/ast_to_hir.cpp @@ -3979,6 +3979,18 @@ get_variable_being_redeclared(ir_variable *var, YYLTYPE loc, earlier->data.depth_layout = var->data.depth_layout; + } else if (state->has_framebuffer_fetch() && + strcmp(var->name, "gl_LastFragData") == 0 && + var->type == earlier->type && + var->data.mode == ir_var_auto) { + /* According to the EXT_shader_framebuffer_fetch spec: + * + * "By default, gl_LastFragData is declared with the mediump precision + * qualifier. This can be changed by redeclaring the corresponding + * variables with the desired precision qualifier." + */ + earlier->data.precision = var->data.precision; + } else if (allow_all_redeclarations) { if (earlier->data.mode != var->data.mode) { _mesa_glsl_error(&loc, state,