diff options
author | Vadim Girlin <[email protected]> | 2013-02-26 20:50:25 +0400 |
---|---|---|
committer | Vincent Lejeune <[email protected]> | 2013-03-03 21:38:49 +0100 |
commit | 138b5b9a12b7e1537494aac556589ac9981b557b (patch) | |
tree | ad286be653a0f0f4e39c600afc05573e6b9dfcab | |
parent | 0b6e72f8d75a31ef233ad5be0c9f59497880657f (diff) |
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>
-rw-r--r-- | 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 3632aa5763c..b5a29cbb003 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; } } } |