Mesa (glsl-to-tgsi): glsl_to_tgsi: add each relative address to the previous
Bryan Cain
bryanc at kemper.freedesktop.org
Wed Jul 27 21:41:22 UTC 2011
Module: Mesa
Branch: glsl-to-tgsi
Commit: 36e90af8f88a92cafaac62f57c92aa03c61ce9f3
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=36e90af8f88a92cafaac62f57c92aa03c61ce9f3
Author: Bryan Cain <bryancain3 at gmail.com>
Date: Wed Jul 27 16:36:10 2011 -0500
glsl_to_tgsi: add each relative address to the previous
This is a glsl_to_tgsi port of commit d6e1a8f71437.
---
src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 12 ++++++++++++
1 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
index 0cbfc94..f66e240 100644
--- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
+++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
@@ -1741,6 +1741,18 @@ glsl_to_tgsi_visitor::visit(ir_dereference_array *ir)
this->result, st_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) {
+ st_src_reg accum_reg = get_temp(glsl_type::float_type);
+
+ emit(ir, TGSI_OPCODE_ADD, st_dst_reg(accum_reg),
+ index_reg, *src.reladdr);
+
+ index_reg = accum_reg;
+ }
+
src.reladdr = ralloc(mem_ctx, st_src_reg);
memcpy(src.reladdr, &index_reg, sizeof(index_reg));
}
More information about the mesa-commit
mailing list