i965/gen8+: Skip depth stalls on state change
authorBen Widawsky <benjamin.widawsky@intel.com>
Wed, 26 Aug 2015 17:52:58 +0000 (10:52 -0700)
committerBen Widawsky <benjamin.widawsky@intel.com>
Tue, 8 Sep 2015 23:09:52 +0000 (16:09 -0700)
Docs suggest this is no longer required starting with Gen8.

Perf (no regressions in n=20)
OglMultithread       0.67%
OglTerrainPanInst    0.12%
trex                 0.45%
warsow               0.64%

Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
src/mesa/drivers/dri/i965/brw_pipe_control.c

index 7ee3cb680f7509300613939c7d20ef35e6c80287..a2aef8ad2b6017a4814420fed5be9aa4df950001 100644 (file)
@@ -193,6 +193,14 @@ brw_emit_depth_stall_flushes(struct brw_context *brw)
 {
    assert(brw->gen >= 6 && brw->gen <= 9);
 
+   /* Starting on BDW, these pipe controls are unnecessary.
+    *
+    *   WM HW will internally manage the draining pipe and flushing of the caches
+    *   when this command is issued. The PIPE_CONTROL restrictions are removed.
+    */
+   if (brw->gen >= 8)
+      return;
+
    brw_emit_pipe_control_flush(brw, PIPE_CONTROL_DEPTH_STALL);
    brw_emit_pipe_control_flush(brw, PIPE_CONTROL_DEPTH_CACHE_FLUSH);
    brw_emit_pipe_control_flush(brw, PIPE_CONTROL_DEPTH_STALL);