mesa/glsl: move redeclares_gl_fragcoord to gl_shader

This is never used in gl_linked_shader other than as a temp
during linking so just use a temp instead.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
This commit is contained in:
Timothy Arceri 2016-11-22 18:25:20 +11:00
parent cc7ecce253
commit 66a6050ad8
3 changed files with 11 additions and 16 deletions

View File

@ -1808,8 +1808,7 @@ set_shader_inout_layout(struct gl_shader *shader,
break; break;
case MESA_SHADER_FRAGMENT: case MESA_SHADER_FRAGMENT:
shader->info.redeclares_gl_fragcoord = shader->redeclares_gl_fragcoord = state->fs_redeclares_gl_fragcoord;
state->fs_redeclares_gl_fragcoord;
shader->info.uses_gl_fragcoord = state->fs_uses_gl_fragcoord; shader->info.uses_gl_fragcoord = state->fs_uses_gl_fragcoord;
shader->info.pixel_center_integer = state->fs_pixel_center_integer; shader->info.pixel_center_integer = state->fs_pixel_center_integer;
shader->info.origin_upper_left = state->fs_origin_upper_left; shader->info.origin_upper_left = state->fs_origin_upper_left;

View File

@ -1826,7 +1826,7 @@ link_fs_inout_layout_qualifiers(struct gl_shader_program *prog,
struct gl_shader **shader_list, struct gl_shader **shader_list,
unsigned num_shaders) unsigned num_shaders)
{ {
linked_shader->info.redeclares_gl_fragcoord = false; bool redeclares_gl_fragcoord = false;
linked_shader->info.uses_gl_fragcoord = false; linked_shader->info.uses_gl_fragcoord = false;
linked_shader->info.origin_upper_left = false; linked_shader->info.origin_upper_left = false;
linked_shader->info.pixel_center_integer = false; linked_shader->info.pixel_center_integer = false;
@ -1844,12 +1844,10 @@ link_fs_inout_layout_qualifiers(struct gl_shader_program *prog,
* it must be redeclared in all the fragment shaders in that program * it must be redeclared in all the fragment shaders in that program
* that have a static use gl_FragCoord." * that have a static use gl_FragCoord."
*/ */
if ((linked_shader->info.redeclares_gl_fragcoord if ((redeclares_gl_fragcoord && !shader->redeclares_gl_fragcoord &&
&& !shader->info.redeclares_gl_fragcoord shader->info.uses_gl_fragcoord)
&& shader->info.uses_gl_fragcoord) || (shader->redeclares_gl_fragcoord && !redeclares_gl_fragcoord &&
|| (shader->info.redeclares_gl_fragcoord linked_shader->info.uses_gl_fragcoord)) {
&& !linked_shader->info.redeclares_gl_fragcoord
&& linked_shader->info.uses_gl_fragcoord)) {
linker_error(prog, "fragment shader defined with conflicting " linker_error(prog, "fragment shader defined with conflicting "
"layout qualifiers for gl_FragCoord\n"); "layout qualifiers for gl_FragCoord\n");
} }
@ -1859,8 +1857,7 @@ link_fs_inout_layout_qualifiers(struct gl_shader_program *prog,
* "All redeclarations of gl_FragCoord in all fragment shaders in a * "All redeclarations of gl_FragCoord in all fragment shaders in a
* single program must have the same set of qualifiers." * single program must have the same set of qualifiers."
*/ */
if (linked_shader->info.redeclares_gl_fragcoord && if (redeclares_gl_fragcoord && shader->redeclares_gl_fragcoord &&
shader->info.redeclares_gl_fragcoord &&
(shader->info.origin_upper_left != (shader->info.origin_upper_left !=
linked_shader->info.origin_upper_left || linked_shader->info.origin_upper_left ||
shader->info.pixel_center_integer != shader->info.pixel_center_integer !=
@ -1874,10 +1871,8 @@ link_fs_inout_layout_qualifiers(struct gl_shader_program *prog,
* are multiple redeclarations, all the fields except uses_gl_fragcoord * are multiple redeclarations, all the fields except uses_gl_fragcoord
* are already known to be the same. * are already known to be the same.
*/ */
if (shader->info.redeclares_gl_fragcoord || if (shader->redeclares_gl_fragcoord || shader->info.uses_gl_fragcoord) {
shader->info.uses_gl_fragcoord) { redeclares_gl_fragcoord = shader->redeclares_gl_fragcoord;
linked_shader->info.redeclares_gl_fragcoord =
shader->info.redeclares_gl_fragcoord;
linked_shader->info.uses_gl_fragcoord = linked_shader->info.uses_gl_fragcoord =
linked_shader->info.uses_gl_fragcoord || linked_shader->info.uses_gl_fragcoord ||
shader->info.uses_gl_fragcoord; shader->info.uses_gl_fragcoord;

View File

@ -2243,7 +2243,6 @@ struct gl_subroutine_function
struct gl_shader_info struct gl_shader_info
{ {
bool uses_gl_fragcoord; bool uses_gl_fragcoord;
bool redeclares_gl_fragcoord;
bool PostDepthCoverage; bool PostDepthCoverage;
bool InnerCoverage; bool InnerCoverage;
@ -2435,6 +2434,8 @@ struct gl_shader
bool ARB_fragment_coord_conventions_enable; bool ARB_fragment_coord_conventions_enable;
bool redeclares_gl_fragcoord;
struct gl_shader_info info; struct gl_shader_info info;
}; };