r600g: add support for streams to the assembler.

This just adds support to the assembler dumper and allows
stream instructions to be generated. Also fix up the stream
debugging to add stream info.

Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
Dave Airlie 2015-07-09 16:30:26 +10:00
parent 90ac5fb6bb
commit d503bbbf30
5 changed files with 11 additions and 2 deletions

View File

@ -115,6 +115,7 @@ int eg_bytecode_cf_build(struct r600_bytecode *bc, struct r600_bytecode_cf *cf)
S_SQ_CF_WORD1_BARRIER(1) |
S_SQ_CF_WORD1_COND(cf->cond) |
S_SQ_CF_WORD1_POP_COUNT(cf->pop_count) |
S_SQ_CF_WORD1_COUNT(cf->count) |
S_SQ_CF_WORD1_END_OF_PROGRAM(cf->end_of_program);
}
}

View File

@ -2029,6 +2029,8 @@ void r600_bytecode_disasm(struct r600_bytecode *bc)
fprintf(stderr, "CND:%X ", cf->cond);
if (cf->pop_count)
fprintf(stderr, "POP:%X ", cf->pop_count);
if (cf->count && (cfop->flags & CF_EMIT))
fprintf(stderr, "STREAM%d ", cf->count);
if (cf->end_of_program)
fprintf(stderr, "EOP ");
fprintf(stderr, "\n");

View File

@ -149,6 +149,7 @@ struct r600_bytecode_cf {
unsigned id;
unsigned cond;
unsigned pop_count;
unsigned count;
unsigned cf_addr; /* control flow addr */
struct r600_bytecode_kcache kcache[4];
unsigned r6xx_uses_waterfall;

View File

@ -93,8 +93,10 @@ static void r600_dump_streamout(struct pipe_stream_output_info *so)
for (i = 0; i < so->num_outputs; i++) {
unsigned mask = ((1 << so->output[i].num_components) - 1) <<
so->output[i].start_component;
fprintf(stderr, " %i: MEM_STREAM0_BUF%i[%i..%i] <- OUT[%i].%s%s%s%s%s\n",
i, so->output[i].output_buffer,
fprintf(stderr, " %i: MEM_STREAM%d_BUF%i[%i..%i] <- OUT[%i].%s%s%s%s%s\n",
i,
so->output[i].stream,
so->output[i].output_buffer,
so->output[i].dst_offset, so->output[i].dst_offset + so->output[i].num_components - 1,
so->output[i].register_index,
mask & 1 ? "x" : "",

View File

@ -182,6 +182,9 @@ void bc_dump::dump(cf_node& n) {
if (n.bc.pop_count)
s << " POP:" << n.bc.pop_count;
if (n.bc.count && (n.bc.op_ptr->flags & CF_EMIT))
s << " STREAM" << n.bc.count;
}
if (!n.bc.barrier)