Mesa (master): r600: disallow negative offsets for relative addressing for now

Andre Maasikas andrem at kemper.freedesktop.org
Mon Dec 21 05:30:04 PST 2009


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

Author: Andre Maasikas <amaasikas at gmail.com>
Date:   Mon Dec 21 11:47:12 2009 +0200

r600: disallow negative offsets for relative addressing for now

otherwise for example const[ADDR-3] gets us 253 - ALU_SRC_LITERAL which
expects immediate floats to follow and hangs

---

 src/mesa/drivers/dri/r600/r700_assembler.c |   10 +++++++++-
 1 files changed, 9 insertions(+), 1 deletions(-)

diff --git a/src/mesa/drivers/dri/r600/r700_assembler.c b/src/mesa/drivers/dri/r600/r700_assembler.c
index e10b23b..51692a1 100644
--- a/src/mesa/drivers/dri/r600/r700_assembler.c
+++ b/src/mesa/drivers/dri/r600/r700_assembler.c
@@ -1262,7 +1262,15 @@ GLboolean assemble_src(r700_AssemblerBase *pAsm,
             }
 
             pAsm->S[fld].src.rtype = SRC_REG_CONSTANT;
-            pAsm->S[fld].src.reg   = pILInst->SrcReg[src].Index;
+            if(pILInst->SrcReg[src].Index < 0)
+            {
+                WARN_ONCE("Negative register offsets not supported yet!\n");
+                pAsm->S[fld].src.reg  = 0;
+            } 
+            else
+            {
+                pAsm->S[fld].src.reg = pILInst->SrcReg[src].Index;
+            }
             break;      
         case PROGRAM_INPUT:
             setaddrmode_PVSSRC(&(pAsm->S[fld].src), ADDR_ABSOLUTE); 



More information about the mesa-commit mailing list