Mesa (master): r600g: fix check_and_set_bank_swizzle for cayman

Vincent Lejeune vlj at kemper.freedesktop.org
Sun Mar 3 20:39:37 UTC 2013


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

Author: Vadim Girlin <vadimgirlin at gmail.com>
Date:   Tue Feb 26 20:50:25 2013 +0400

r600g: fix check_and_set_bank_swizzle for cayman

Tested-by: Vincent Lejeune <vljn at ovi.com>
Reviewed-by: Vincent Lejeune <vljn at ovi.com>

---

 src/gallium/drivers/r600/r600_asm.c |   10 +++-------
 1 files changed, 3 insertions(+), 7 deletions(-)

diff --git a/src/gallium/drivers/r600/r600_asm.c b/src/gallium/drivers/r600/r600_asm.c
index 3632aa5..b5a29cb 100644
--- a/src/gallium/drivers/r600/r600_asm.c
+++ b/src/gallium/drivers/r600/r600_asm.c
@@ -475,12 +475,6 @@ static int check_and_set_bank_swizzle(struct r600_bytecode *bc,
 	bank_swizzle[4] = SQ_ALU_SCL_210;
 	while(bank_swizzle[4] <= SQ_ALU_SCL_221) {
 
-		if (max_slots == 4) {
-			for (i = 0; i < max_slots; i++) {
-				if (bank_swizzle[i] == SQ_ALU_VEC_210)
-				  return -1;
-			}
-		}
 		init_bank_swizzle(&bs);
 		if (scalar_only == false) {
 			for (i = 0; i < 4; i++) {
@@ -512,8 +506,10 @@ static int check_and_set_bank_swizzle(struct r600_bytecode *bc,
 					bank_swizzle[i]++;
 					if (bank_swizzle[i] <= SQ_ALU_VEC_210)
 						break;
-					else
+					else if (i < max_slots - 1)
 						bank_swizzle[i] = SQ_ALU_VEC_012;
+					else
+						return -1;
 				}
 			}
 		}




More information about the mesa-commit mailing list