diff options
-rw-r--r-- | src/gallium/drivers/r600/sb/sb_bc_parser.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/gallium/drivers/r600/sb/sb_bc_parser.cpp b/src/gallium/drivers/r600/sb/sb_bc_parser.cpp index a7e712816b1..67e6c3a582d 100644 --- a/src/gallium/drivers/r600/sb/sb_bc_parser.cpp +++ b/src/gallium/drivers/r600/sb/sb_bc_parser.cpp @@ -385,6 +385,11 @@ int bc_parser::prepare_alu_group(cf_node* cf, alu_group_node *g) { } else if (src.sel == ALU_SRC_PS || src.sel == ALU_SRC_PV) { unsigned pgroup = !cgroup, prev_slot = src.sel == ALU_SRC_PS ? SLOT_TRANS : src.chan; + + // XXX shouldn't happen but llvm backend uses PS on cayman + if (prev_slot == SLOT_TRANS && ctx.is_cayman()) + prev_slot = SLOT_X; + alu_node *prev_alu = slots[pgroup][prev_slot]; assert(prev_alu); |