mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 18:18:06 +02:00
glsl: remove redundant record_compare check when linking globals
Unnamed struct types are now equal across stages based on the fields they
contain, so overriding the type to make sure names match has become
unnecessary.
The check was originally introduced in commit 955c93dc08 ("glsl: Match
unnamed record types across stages.")
v2: clarify the commit message
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
This commit is contained in:
parent
835b1435f2
commit
f97c92ae11
1 changed files with 17 additions and 22 deletions
|
|
@ -907,28 +907,23 @@ cross_validate_globals(struct gl_shader_program *prog,
|
|||
/* Check if types match. */
|
||||
if (var->type != existing->type) {
|
||||
if (!validate_intrastage_arrays(prog, var, existing)) {
|
||||
if (var->type->is_record() && existing->type->is_record()
|
||||
&& existing->type->record_compare(var->type)) {
|
||||
existing->type = var->type;
|
||||
} else {
|
||||
/* If it is an unsized array in a Shader Storage Block,
|
||||
* two different shaders can access to different elements.
|
||||
* Because of that, they might be converted to different
|
||||
* sized arrays, then check that they are compatible but
|
||||
* ignore the array size.
|
||||
*/
|
||||
if (!(var->data.mode == ir_var_shader_storage &&
|
||||
var->data.from_ssbo_unsized_array &&
|
||||
existing->data.mode == ir_var_shader_storage &&
|
||||
existing->data.from_ssbo_unsized_array &&
|
||||
var->type->gl_type == existing->type->gl_type)) {
|
||||
linker_error(prog, "%s `%s' declared as type "
|
||||
"`%s' and type `%s'\n",
|
||||
mode_string(var),
|
||||
var->name, var->type->name,
|
||||
existing->type->name);
|
||||
return;
|
||||
}
|
||||
/* If it is an unsized array in a Shader Storage Block,
|
||||
* two different shaders can access to different elements.
|
||||
* Because of that, they might be converted to different
|
||||
* sized arrays, then check that they are compatible but
|
||||
* ignore the array size.
|
||||
*/
|
||||
if (!(var->data.mode == ir_var_shader_storage &&
|
||||
var->data.from_ssbo_unsized_array &&
|
||||
existing->data.mode == ir_var_shader_storage &&
|
||||
existing->data.from_ssbo_unsized_array &&
|
||||
var->type->gl_type == existing->type->gl_type)) {
|
||||
linker_error(prog, "%s `%s' declared as type "
|
||||
"`%s' and type `%s'\n",
|
||||
mode_string(var),
|
||||
var->name, var->type->name,
|
||||
existing->type->name);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue