broadcom/compiler: disallow reading two uniforms in the same instruction
The simulator asserts on this, which can happen if we merge a ldunif (or any other instruction that reads a uniform implicitly) and ldunifa in the same instruction. Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8980>
This commit is contained in:
committed by
Marge Bot
parent
e8e4bdae8d
commit
efc75e13ea
@@ -791,6 +791,22 @@ choose_instruction_to_schedule(const struct v3d_device_info *devinfo,
|
||||
dag.link) {
|
||||
const struct v3d_qpu_instr *inst = &n->inst->qpu;
|
||||
|
||||
/* Simulator complains if we have two uniforms loaded in the
|
||||
* the same instruction, which could happen if we have a ldunif
|
||||
* or sideband uniform and we pair that with ldunifa.
|
||||
*/
|
||||
if (prev_inst) {
|
||||
if (vir_has_uniform(prev_inst->inst) &&
|
||||
(inst->sig.ldunifa || inst->sig.ldunifarf)) {
|
||||
continue;
|
||||
}
|
||||
if ((prev_inst->inst->qpu.sig.ldunifa ||
|
||||
prev_inst->inst->qpu.sig.ldunifarf) &&
|
||||
vir_has_uniform(n->inst)) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
/* Don't choose the branch instruction until it's the last one
|
||||
* left. We'll move it up to fit its delay slots after we
|
||||
* choose it.
|
||||
|
||||
Reference in New Issue
Block a user