Mesa (asm-shader-rework-3): ARB prog parser: Properly track address register bindings

Ian Romanick idr at kemper.freedesktop.org
Tue Oct 13 22:19:54 UTC 2009


Module: Mesa
Branch: asm-shader-rework-3
Commit: 8c7b09c8e1443f6216770f988c5ff3b652d22dff
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=8c7b09c8e1443f6216770f988c5ff3b652d22dff

Author: Ian Romanick <ian.d.romanick at intel.com>
Date:   Fri Oct  2 22:34:00 2009 -0700

ARB prog parser: Properly track address register bindings

---

 src/mesa/shader/program_parse.y |   12 ++++++------
 1 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/mesa/shader/program_parse.y b/src/mesa/shader/program_parse.y
index 704382c..79a5bc9 100644
--- a/src/mesa/shader/program_parse.y
+++ b/src/mesa/shader/program_parse.y
@@ -782,7 +782,7 @@ instResultAddr: addrReg optionalMask optionalCcMask
 
 	   init_dst_reg(& $$);
 	   $$.File = PROGRAM_ADDRESS;
-	   $$.Index = 0;
+	   $$.Index = $1->binding;
 	   $$.WriteMask = $2.mask;
 	   $$.CondMask = $3.CondMask;
 	   $$.CondSwizzle = $3.CondSwizzle;
@@ -799,6 +799,7 @@ addrUseVNS: addrReg
 	{
 	   init_src_reg(& $$);
 	   $$.Base.File = PROGRAM_ADDRESS;
+	   $$.Base.Index = $1->binding;
 	   $$.Symbol = $1;
 	}
 	;
@@ -977,6 +978,8 @@ srcReg: USED_IDENTIFIER /* temporaryReg | progParamSingle */
 
 	      $$.Base.RelAddr = 1;
 	      $$.Base.Index = $3.Base.Index;
+	      $$.Base.AddrReg = $3.Base.AddrReg;
+	      $$.Base.AddrComponent = $3.Base.AddrComponent;
 	      $$.Symbol = $1;
 	   } else {
 	      $$.Base.Index = $1->param_binding_begin + $3.Base.Index;
@@ -1057,12 +1060,10 @@ progParamArrayAbs: INTEGER
 
 progParamArrayRel: addrReg addrComponent addrRegRelOffset
 	{
-	   /* FINISHME: Add support for multiple address registers.
-	    */
 	   init_src_reg(& $$);
 	   $$.Base.RelAddr = 1;
 	   $$.Base.Index = $3;
-	   $$.Base.AddrReg = 0;
+	   $$.Base.AddrReg = $1->binding;
 	   $$.Base.AddrComponent = $2;
 	}
 	;
@@ -2531,8 +2532,7 @@ declare_variable(struct asm_parser_state *state, char *name, enum asm_type t,
 	    return NULL;
 	 }
 
-	 /* FINISHME: Add support for multiple address registers.
-	  */
+	 s->binding = state->prog->NumAddressRegs;
 	 state->prog->NumAddressRegs++;
 	 break;
 




More information about the mesa-commit mailing list