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:
@@ -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;
|
||||||
|
@@ -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.
|
||||||
|
@@ -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.
|
||||||
*/
|
*/
|
||||||
|
Reference in New Issue
Block a user