mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 07:08:04 +02:00
nir/validate: Use the type from the tail of call parameter derefs
Otherwise, if what gets passed into the function call is a deref chain longer than just a variable deref, we would use the type of the entire variable rather than the type of the thing being dereferenced. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106980 Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> (Unique to 18.1)
This commit is contained in:
parent
d96eecbdd7
commit
bc67499beb
1 changed files with 4 additions and 2 deletions
|
|
@ -567,14 +567,16 @@ validate_call_instr(nir_call_instr *instr, validate_state *state)
|
|||
if (instr->return_deref == NULL) {
|
||||
validate_assert(state, glsl_type_is_void(instr->callee->return_type));
|
||||
} else {
|
||||
validate_assert(state, instr->return_deref->deref.type == instr->callee->return_type);
|
||||
validate_assert(state, instr->callee->return_type ==
|
||||
nir_deref_tail(&instr->return_deref->deref)->type);
|
||||
validate_deref_var(instr, instr->return_deref, state);
|
||||
}
|
||||
|
||||
validate_assert(state, instr->num_params == instr->callee->num_params);
|
||||
|
||||
for (unsigned i = 0; i < instr->num_params; i++) {
|
||||
validate_assert(state, instr->callee->params[i].type == instr->params[i]->deref.type);
|
||||
validate_assert(state, instr->callee->params[i].type ==
|
||||
nir_deref_tail(&instr->params[i]->deref)->type);
|
||||
validate_deref_var(instr, instr->params[i], state);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue