mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-23 22:00:13 +01:00
ir_to_mesa: Add each relative address to the previous
This fixes many cases of accessing arrays of matrices using
non-constant indices at each level.
Fixes i965 piglit:
vs-temp-array-mat[234]-index-col-rd
vs-temp-array-mat[234]-index-col-row-rd
vs-temp-array-mat[234]-index-col-wr
vs-uniform-array-mat[234]-index-col-rd
Fixes swrast piglit:
fs-temp-array-mat[234]-index-col-rd
fs-temp-array-mat[234]-index-col-row-rd
fs-temp-array-mat[234]-index-col-wr
fs-uniform-array-mat[234]-index-col-rd
fs-uniform-array-mat[234]-index-col-row-rd
fs-varying-array-mat[234]-index-col-rd
fs-varying-array-mat[234]-index-col-row-rd
vs-temp-array-mat[234]-index-col-rd
vs-temp-array-mat[234]-index-col-row-rd
vs-temp-array-mat[234]-index-col-wr
vs-uniform-array-mat[234]-index-col-rd
vs-uniform-array-mat[234]-index-col-row-rd
vs-varying-array-mat[234]-index-col-rd
vs-varying-array-mat[234]-index-col-row-rd
vs-varying-array-mat[234]-index-col-wr
Reviewed-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
parent
601428d2bb
commit
d6e1a8f714
1 changed files with 12 additions and 0 deletions
|
|
@ -1496,6 +1496,18 @@ ir_to_mesa_visitor::visit(ir_dereference_array *ir)
|
||||||
this->result, src_reg_for_float(element_size));
|
this->result, src_reg_for_float(element_size));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* If there was already a relative address register involved, add the
|
||||||
|
* new and the old together to get the new offset.
|
||||||
|
*/
|
||||||
|
if (src.reladdr != NULL) {
|
||||||
|
src_reg accum_reg = get_temp(glsl_type::float_type);
|
||||||
|
|
||||||
|
emit(ir, OPCODE_ADD, dst_reg(accum_reg),
|
||||||
|
index_reg, *src.reladdr);
|
||||||
|
|
||||||
|
index_reg = accum_reg;
|
||||||
|
}
|
||||||
|
|
||||||
src.reladdr = ralloc(mem_ctx, src_reg);
|
src.reladdr = ralloc(mem_ctx, src_reg);
|
||||||
memcpy(src.reladdr, &index_reg, sizeof(index_reg));
|
memcpy(src.reladdr, &index_reg, sizeof(index_reg));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue