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
This commit is contained in:
Eric Anholt 2018-06-25 10:12:03 -07:00
parent c7726fbfa5
commit 49f7631c9f
2 changed files with 9 additions and 0 deletions

View file

@ -425,6 +425,8 @@
</field>
</packet>
<packet code="31" name="Transform Feedback Flush and Count"/>
<packet code="32" name="Indexed Primitive List" cl="B" max_ver="33">
<field name="Minimum index" size="32" start="104" type="uint"/>
<field name="Enable Primitive Restarts" size="1" start="103" type="bool"/>

View file

@ -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