glsl: use last_vert_prog to get last {clip,cull}_distance_array_size

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
This commit is contained in:
Timothy Arceri
2016-11-20 22:23:17 +11:00
parent fc707f570f
commit 64e201ab8f
3 changed files with 4 additions and 23 deletions

View File

@@ -745,10 +745,12 @@ tfeedback_decl::assign_location(struct gl_context *ctx,
unsigned actual_array_size; unsigned actual_array_size;
switch (this->lowered_builtin_array_variable) { switch (this->lowered_builtin_array_variable) {
case clip_distance: case clip_distance:
actual_array_size = prog->LastClipDistanceArraySize; actual_array_size = prog->last_vert_prog ?
prog->last_vert_prog->info.clip_distance_array_size : 0;
break; break;
case cull_distance: case cull_distance:
actual_array_size = prog->LastCullDistanceArraySize; actual_array_size = prog->last_vert_prog ?
prog->last_vert_prog->info.cull_distance_array_size : 0;
break; break;
case tess_level_outer: case tess_level_outer:
actual_array_size = 4; actual_array_size = 4;

View File

@@ -4775,20 +4775,6 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog)
} }
} }
if (num_shaders[MESA_SHADER_GEOMETRY] > 0) {
prog->LastClipDistanceArraySize = prog->_LinkedShaders[MESA_SHADER_GEOMETRY]->Program->info.clip_distance_array_size;
prog->LastCullDistanceArraySize = prog->_LinkedShaders[MESA_SHADER_GEOMETRY]->Program->info.cull_distance_array_size;
} else if (num_shaders[MESA_SHADER_TESS_EVAL] > 0) {
prog->LastClipDistanceArraySize = prog->_LinkedShaders[MESA_SHADER_TESS_EVAL]->Program->info.clip_distance_array_size;
prog->LastCullDistanceArraySize = prog->_LinkedShaders[MESA_SHADER_TESS_EVAL]->Program->info.cull_distance_array_size;
} else if (num_shaders[MESA_SHADER_VERTEX] > 0) {
prog->LastClipDistanceArraySize = prog->_LinkedShaders[MESA_SHADER_VERTEX]->Program->info.clip_distance_array_size;
prog->LastCullDistanceArraySize = prog->_LinkedShaders[MESA_SHADER_VERTEX]->Program->info.cull_distance_array_size;
} else {
prog->LastClipDistanceArraySize = 0; /* Not used */
prog->LastCullDistanceArraySize = 0; /* Not used */
}
/* Here begins the inter-stage linking phase. Some initial validation is /* Here begins the inter-stage linking phase. Some initial validation is
* performed, then locations are assigned for uniforms, attributes, and * performed, then locations are assigned for uniforms, attributes, and
* varyings. * varyings.

View File

@@ -2793,13 +2793,6 @@ struct gl_shader_program
*/ */
struct exec_list EmptyUniformLocations; struct exec_list EmptyUniformLocations;
/**
* Size of the gl_ClipDistance array that is output from the last pipeline
* stage before the fragment shader.
*/
unsigned LastClipDistanceArraySize;
unsigned LastCullDistanceArraySize;
/** /**
* Total number of explicit uniform location including inactive uniforms. * Total number of explicit uniform location including inactive uniforms.
*/ */