[Mesa-dev] [PATCH] r600g/sb: Update last_cf for loops
Marc Dietrich
marvin24 at gmx.de
Thu Mar 26 03:33:57 PDT 2015
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 :-)
Thanks!
Marc
>
> Marc
>
> > Signed-off-by: Glenn Kennard <glenn.kennard at 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);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20150326/6e8d8f1e/attachment.sig>
More information about the mesa-dev
mailing list