diff options
author | Eric Anholt <eric@anholt.net> | 2010-10-26 09:35:34 -0700 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2010-10-26 10:34:10 -0700 |
commit | 1732a8bc72fe0a8eaf7449eda65eba1a017ae909 (patch) | |
tree | 42e0f2921e0d1648a18cea0657a2888750dfff1c /src/mesa/drivers/dri/i965/brw_disasm.c | |
parent | 748f3744bebc37cc753a5ea1c321854c580a7317 (diff) |
i965: Use SENDC on the first render target write on gen6.
This is apparently required, as the thread will be initiated while it
still has dependencies, and this is what waits for those to be
resolved before writing color.
Diffstat (limited to 'src/mesa/drivers/dri/i965/brw_disasm.c')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_disasm.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_disasm.c b/src/mesa/drivers/dri/i965/brw_disasm.c index 12b8f2e467..5797262612 100644 --- a/src/mesa/drivers/dri/i965/brw_disasm.c +++ b/src/mesa/drivers/dri/i965/brw_disasm.c @@ -72,6 +72,7 @@ struct { [BRW_OPCODE_CMPN] = { .name = "cmpn", .nsrc = 2, .ndst = 1 }, [BRW_OPCODE_SEND] = { .name = "send", .nsrc = 1, .ndst = 1 }, + [BRW_OPCODE_SENDC] = { .name = "sendc", .nsrc = 1, .ndst = 1 }, [BRW_OPCODE_NOP] = { .name = "nop", .nsrc = 0, .ndst = 0 }, [BRW_OPCODE_JMPI] = { .name = "jmpi", .nsrc = 1, .ndst = 0 }, [BRW_OPCODE_IF] = { .name = "if", .nsrc = 2, .ndst = 0 }, @@ -876,7 +877,8 @@ int brw_disasm (FILE *file, struct brw_instruction *inst, int gen) string (file, " "); err |= control (file, "function", math_function, inst->header.destreg__conditionalmod, NULL); - } else if (inst->header.opcode != BRW_OPCODE_SEND) + } else if (inst->header.opcode != BRW_OPCODE_SEND && + inst->header.opcode != BRW_OPCODE_SENDC) err |= control (file, "conditional modifier", conditional_modifier, inst->header.destreg__conditionalmod, NULL); @@ -907,7 +909,8 @@ int brw_disasm (FILE *file, struct brw_instruction *inst, int gen) err |= src1 (file, inst); } - if (inst->header.opcode == BRW_OPCODE_SEND) { + if (inst->header.opcode == BRW_OPCODE_SEND || + inst->header.opcode == BRW_OPCODE_SENDC) { int target; if (gen >= 6) @@ -1070,7 +1073,8 @@ int brw_disasm (FILE *file, struct brw_instruction *inst, int gen) err |= control (file, "thread control", thread_ctrl, inst->header.thread_control, &space); if (gen >= 6) err |= control (file, "acc write control", accwr, inst->header.acc_wr_control, &space); - if (inst->header.opcode == BRW_OPCODE_SEND) + if (inst->header.opcode == BRW_OPCODE_SEND || + inst->header.opcode == BRW_OPCODE_SENDC) err |= control (file, "end of thread", end_of_thread, inst->bits3.generic.end_of_thread, &space); if (space) |