i965/gen6: Reduce updates of transform feedback offsets with HW contexts.
authorEric Anholt <eric@anholt.net>
Tue, 9 Apr 2013 20:34:08 +0000 (13:34 -0700)
committerEric Anholt <eric@anholt.net>
Wed, 10 Apr 2013 16:45:21 +0000 (09:45 -0700)
The software-tracked transform feedback offsets (svbi_0_starting_index)
are incorrect in the presence of primitive restart, so we were actually
updating it with a bogus value if the batch wrapped and we emitted the
packet again during a single transform feedback.  By reducing state
emission, we avoid the bug.

Fixes piglit OpenGL 3.1/primitive-restart-xfb flush
Reviewed-by: Paul Berry <stereotype441@gmail.com>
NOTE: This is a candidate for the 9.1 branch.

src/mesa/drivers/dri/i965/gen6_sol.c

index a7b63f67e87d2f809913ebed24f5bc17571a186a..cf7a60db6bea99d2dc0ceb27fd5b07fd8f58c62d 100644 (file)
@@ -147,7 +147,7 @@ gen6_update_sol_indices(struct brw_context *brw)
 const struct brw_tracked_state gen6_sol_indices = {
    .dirty = {
       .mesa = 0,
-      .brw = (BRW_NEW_BATCH |
+      .brw = (BRW_NEW_CONTEXT |
               BRW_NEW_SOL_INDICES),
       .cache = 0
    },