intel/mi_builder: Force write completion on Gen12+
authorJason Ekstrand <jason@jlekstrand.net>
Mon, 27 Jan 2020 20:42:20 +0000 (14:42 -0600)
committerMarge Bot <eric+marge@anholt.net>
Tue, 28 Jan 2020 18:15:29 +0000 (18:15 +0000)
Otherwise, we have no guarantee that the write actually lands before we
move on to other things.  Doing this on every SDI is probably a bit
harsh but it's safe.  We should figure out a good way to avoid this when
we can.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3593>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3593>

src/intel/common/gen_mi_builder.h

index dd7d87fc67af4a0b1dcbf06621f741d3c65a60ce..bcd685754a3086a1a20c10fe065c36b8db53b4ba 100644 (file)
@@ -358,6 +358,9 @@ _gen_mi_copy_no_unref(struct gen_mi_builder *b,
       case GEN_MI_VALUE_TYPE_IMM:
          gen_mi_builder_emit(b, GENX(MI_STORE_DATA_IMM), sdi) {
             sdi.Address = dst.addr;
+#if GEN_GEN >= 12
+            sdi.ForceWriteCompletionCheck = true;
+#endif
             sdi.ImmediateData = src.imm;
          }
          break;