Mesa (master): ir_to_mesa: set IndirectRegisterFiles

Marek Olšák mareko at kemper.freedesktop.org
Tue Aug 24 17:44:55 PDT 2010


Module: Mesa
Branch: master
Commit: 5755d1d6a7ff68c7d690d67c4cd64ef8e01ec2ed
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=5755d1d6a7ff68c7d690d67c4cd64ef8e01ec2ed

Author: Marek Olšák <maraeo at gmail.com>
Date:   Sun Aug 22 03:15:00 2010 +0200

ir_to_mesa: set IndirectRegisterFiles

This fixes relative addressing of temporaries (and maybe others)
in all gallium drivers.

Acked on irc by Eric Anholt.

---

 src/mesa/program/ir_to_mesa.cpp |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/src/mesa/program/ir_to_mesa.cpp b/src/mesa/program/ir_to_mesa.cpp
index da69d26..fc145b4 100644
--- a/src/mesa/program/ir_to_mesa.cpp
+++ b/src/mesa/program/ir_to_mesa.cpp
@@ -2569,6 +2569,14 @@ get_mesa_program(GLcontext *ctx, struct gl_shader_program *shader_program,
       mesa_inst->TexShadow = inst->tex_shadow;
       mesa_instruction_annotation[i] = inst->ir;
 
+      /* Set IndirectRegisterFiles. */
+      if (mesa_inst->DstReg.RelAddr)
+         prog->IndirectRegisterFiles |= 1 << mesa_inst->DstReg.File;
+
+      for (unsigned src = 0; src < 3; src++)
+         if (mesa_inst->SrcReg[src].RelAddr)
+            prog->IndirectRegisterFiles |= 1 << mesa_inst->SrcReg[src].File;
+
       if (ctx->Shader.EmitNoIfs && mesa_inst->Opcode == OPCODE_IF) {
 	 shader_program->InfoLog =
 	    talloc_asprintf_append(shader_program->InfoLog,



More information about the mesa-commit mailing list