mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-19 11:00:42 +01:00
r600g/sb: add support for multiple streams to SB backend
This adds a peephole and removes an assert that isn't actually valid with some of the stream emit instructions. Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
d503bbbf30
commit
3d497e0d91
2 changed files with 15 additions and 5 deletions
|
|
@ -764,8 +764,6 @@ void bc_finalizer::finalize_cf(cf_node* c) {
|
|||
mask |= (1 << chan);
|
||||
}
|
||||
|
||||
assert(reg >= 0 && mask);
|
||||
|
||||
if (reg >= 0)
|
||||
update_ngpr(reg);
|
||||
|
||||
|
|
|
|||
|
|
@ -757,10 +757,22 @@ int bc_parser::prepare_ir() {
|
|||
c->bc.end_of_program = eop;
|
||||
|
||||
} else if (flags & CF_EMIT) {
|
||||
c->flags |= NF_DONT_KILL | NF_DONT_HOIST | NF_DONT_MOVE;
|
||||
/* quick peephole */
|
||||
cf_node *prev = static_cast<cf_node *>(c->prev);
|
||||
if (c->bc.op == CF_OP_CUT_VERTEX &&
|
||||
prev && prev->is_valid() &&
|
||||
prev->bc.op == CF_OP_EMIT_VERTEX &&
|
||||
c->bc.count == prev->bc.count) {
|
||||
prev->bc.set_op(CF_OP_EMIT_CUT_VERTEX);
|
||||
prev->bc.end_of_program = c->bc.end_of_program;
|
||||
c->remove();
|
||||
}
|
||||
else {
|
||||
c->flags |= NF_DONT_KILL | NF_DONT_HOIST | NF_DONT_MOVE;
|
||||
|
||||
c->src.push_back(sh->get_special_value(SV_GEOMETRY_EMIT));
|
||||
c->dst.push_back(sh->get_special_value(SV_GEOMETRY_EMIT));
|
||||
c->src.push_back(sh->get_special_value(SV_GEOMETRY_EMIT));
|
||||
c->dst.push_back(sh->get_special_value(SV_GEOMETRY_EMIT));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue