i965: Weaken the flushing in gen7_end_transform_feedback().
authorKenneth Graunke <kenneth@whitecape.org>
Tue, 28 May 2013 02:18:14 +0000 (19:18 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Sat, 26 Oct 2013 05:25:38 +0000 (22:25 -0700)
Since 062317d6671 (i965: Go back to using the kernel SOL reset feature.)
we've been flushing the batch on BeginTransformFeedback().  So it's not
necessary to do it on EndTransformFeedback().  A PIPE_CONTROL will work.

This makes gen7_end_transform_feedback() exactly the same as the gen6
variant.  However, they'll diverge again shortly.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
src/mesa/drivers/dri/i965/gen7_sol_state.c

index ec46b56e78d296c5f129ada5171b4f321d134b30..abfe0a0746d49bcf55b2a9036dd0377aa72ad999 100644 (file)
@@ -263,13 +263,13 @@ void
 gen7_end_transform_feedback(struct gl_context *ctx,
                            struct gl_transform_feedback_object *obj)
 {
-   /* Because we have to rely on the kernel to reset our SO write offsets, and
-    * we only get to do it once per batchbuffer, flush the batch after feedback
-    * so another transform feedback can get the write offset reset it needs.
-    *
-    * This also covers any cache flushing required.
+   /* After EndTransformFeedback, it's likely that the client program will try
+    * to draw using the contents of the transform feedback buffer as vertex
+    * input.  In order for this to work, we need to flush the data through at
+    * least the GS stage of the pipeline, and flush out the render cache.  For
+    * simplicity, just do a full flush.
     */
    struct brw_context *brw = brw_context(ctx);
 
-   intel_batchbuffer_flush(brw);
+   intel_batchbuffer_emit_mi_flush(brw);
 }