From 49f7631c9fd94fbc5c892f70e5bcef54d0ec5043 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Mon, 25 Jun 2018 10:12:03 -0700 Subject: v3d: Emit a TF flush after each draw using TF. This fixes GPU hangs on 7278 in transform feedback tests such as GTF-GLES3.gtf.GL3Tests.transform_feedback2.transform_feedback2_basic --- src/broadcom/cle/v3d_packet_v33.xml | 2 ++ src/gallium/drivers/v3d/v3dx_draw.c | 7 +++++++ 2 files changed, 9 insertions(+) diff --git a/src/broadcom/cle/v3d_packet_v33.xml b/src/broadcom/cle/v3d_packet_v33.xml index ff5ecb5c171..3e85b672320 100644 --- a/src/broadcom/cle/v3d_packet_v33.xml +++ b/src/broadcom/cle/v3d_packet_v33.xml @@ -425,6 +425,8 @@ + + diff --git a/src/gallium/drivers/v3d/v3dx_draw.c b/src/gallium/drivers/v3d/v3dx_draw.c index 1e8b472a27d..43dd4089f12 100644 --- a/src/gallium/drivers/v3d/v3dx_draw.c +++ b/src/gallium/drivers/v3d/v3dx_draw.c @@ -558,6 +558,13 @@ v3d_draw_vbo(struct pipe_context *pctx, const struct pipe_draw_info *info) } } } + + /* A flush is required in between a TF draw and any following TF specs + * packet, or the GPU may hang. Just flush each time for now. + */ + if (v3d->streamout.num_targets) + cl_emit(&job->bcl, TRANSFORM_FEEDBACK_FLUSH_AND_COUNT, flush); + job->draw_calls_queued++; /* Increment the TF offsets by how many verts we wrote. XXX: This -- cgit v1.2.3