Am Donnerstag, 26. März 2015, 11:33:57 schrieb Marc Dietrich: > Am Donnerstag, 26. März 2015, 11:24:24 schrieb Marc Dietrich: > > Am Donnerstag, 26. März 2015, 02:56:50 schrieb Glenn Kennard: > > > CF_END could end up emitted in the middle of a shader on cayman > > > when there was a loop at the very end. > > > > > > Fixes glsl-1.50-geometry-end-primitive and > > > ext_transform_feedback-geometry-shaders-basic piglit tests. > > > > yes, I just found out that this test also crashes the rs880 gpu. Turning > > it > > off, make piglit run fine for geometry tests. Is this also supposed to fix > > it on my gpu (I don't like to risk another gpu lockup...)? > > well, I could not withstand ... Patch also fixes gpu hang for me :-)
correction: does not hang with sb_enable patches, still hangs without. > > Thanks! > > Marc > > > Marc > > > > > Signed-off-by: Glenn Kennard <glenn.kenn...@gmail.com> > > > --- > > > Bug exposed by [PATCH] r600g/sb: Enable SB for geometry shaders > > > > > > src/gallium/drivers/r600/sb/sb_bc_finalize.cpp | 8 ++++++++ > > > 1 file changed, 8 insertions(+) > > > > > > diff --git a/src/gallium/drivers/r600/sb/sb_bc_finalize.cpp > > > b/src/gallium/drivers/r600/sb/sb_bc_finalize.cpp index 8d0be06..08b7d77 > > > 100644 > > > --- a/src/gallium/drivers/r600/sb/sb_bc_finalize.cpp > > > +++ b/src/gallium/drivers/r600/sb/sb_bc_finalize.cpp > > > @@ -127,6 +127,14 @@ void bc_finalizer::finalize_loop(region_node* r) { > > > > > > cf_node *loop_start = sh.create_cf(CF_OP_LOOP_START_DX10); > > > cf_node *loop_end = sh.create_cf(CF_OP_LOOP_END); > > > > > > + // Update last_cf, but don't overwrite it if it's outside the current > > > > loop > > > > > nest since + // it may point to a cf that is later in program order. > > > + // The single parent level check is sufficient since finalize_loop() > > > is > > > processed in + // reverse order from innermost to outermost loop nest > > > level. > > > + if (!last_cf || last_cf->get_parent_region() == r) { > > > + last_cf = loop_end; > > > + } > > > + > > > > > > loop_start->jump_after(loop_end); > > > loop_end->jump_after(loop_start);
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev