i965/skl: Implement workaround for VF Invalidate issue
authorJordan Justen <jordan.l.justen@intel.com>
Thu, 1 May 2014 18:03:09 +0000 (11:03 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Mon, 3 Nov 2014 23:33:09 +0000 (15:33 -0800)
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kristian Høgsberg <krh@bitplanet.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
src/mesa/drivers/dri/i965/intel_batchbuffer.c

index 71dc268a27b164e4d79f0a58f9891ef520a0e245..cd45af6fbe2c942800b35e9344a01e34e1d6eaa3 100644 (file)
@@ -648,6 +648,15 @@ intel_batchbuffer_emit_mi_flush(struct brw_context *brw)
    } else {
       int flags = PIPE_CONTROL_NO_WRITE | PIPE_CONTROL_WRITE_FLUSH;
       if (brw->gen >= 6) {
+         if (brw->gen == 9) {
+            /* Hardware workaround: SKL
+             *
+             * Emit Pipe Control with all bits set to zero before emitting
+             * a Pipe Control with VF Cache Invalidate set.
+             */
+            brw_emit_pipe_control_flush(brw, 0);
+         }
+
          flags |= PIPE_CONTROL_INSTRUCTION_FLUSH |
                   PIPE_CONTROL_DEPTH_CACHE_FLUSH |
                   PIPE_CONTROL_VF_CACHE_INVALIDATE |