Mesa (staging/20.0): intel/fs/gen12: Fixup/simplify SWSB annotations of SIMD32 scratch writes.

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Feb 19 17:20:03 UTC 2020


Module: Mesa
Branch: staging/20.0
Commit: 5188cd51e2bf2ab98913472e9376735178dd7c76
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=5188cd51e2bf2ab98913472e9376735178dd7c76

Author: Francisco Jerez <currojerez at riseup.net>
Date:   Thu Jan 23 22:27:21 2020 -0800

intel/fs/gen12: Fixup/simplify SWSB annotations of SIMD32 scratch writes.

Found by inspection.  Existing code was trying to avoid assuming that
an SBID had been assigned to the virtual instruction, but
synchronizing the header setup with respect to the previous SIMD16
SEND by using SYNC.ALLRD doesn't really seem possible unless the SEND
instruction had been assigned an SBID.  Assert-fail instead if no SBID
has been allocated.

Fixes: 15e3a0d9d264becc "intel/eu/gen12: Set SWSB annotations in hand-crafted assembly."
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira at intel.com>
Cc: 20.0 <mesa-stable at lists.freedesktop.org>
(cherry picked from commit 4e4e8d793f050eac84f2a850ab2e5c24c4c459ac)

---

 .pick_status.json                       |  2 +-
 src/intel/compiler/brw_fs_generator.cpp | 10 +++-------
 2 files changed, 4 insertions(+), 8 deletions(-)

diff --git a/.pick_status.json b/.pick_status.json
index d9b0458a3c0..04c2a2e0ca0 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -1003,7 +1003,7 @@
         "description": "intel/fs/gen12: Fixup/simplify SWSB annotations of SIMD32 scratch writes.",
         "nominated": true,
         "nomination_type": 1,
-        "resolution": 0,
+        "resolution": 1,
         "master_sha": null,
         "because_sha": "15e3a0d9d264beccb914432ca749d7c0b8a5d43c"
     },
diff --git a/src/intel/compiler/brw_fs_generator.cpp b/src/intel/compiler/brw_fs_generator.cpp
index 00b0f29ef7b..163ddbc45d9 100644
--- a/src/intel/compiler/brw_fs_generator.cpp
+++ b/src/intel/compiler/brw_fs_generator.cpp
@@ -1378,8 +1378,8 @@ fs_generator::generate_scratch_write(fs_inst *inst, struct brw_reg src)
       brw_set_default_group(p, inst->group + lower_size * i);
 
       if (i > 0) {
-         brw_set_default_swsb(p, tgl_swsb_null());
-         brw_SYNC(p, TGL_SYNC_ALLRD);
+         assert(swsb.mode & TGL_SBID_SET);
+         brw_set_default_swsb(p, tgl_swsb_sbid(TGL_SBID_SRC, swsb.sbid));
       } else {
          brw_set_default_swsb(p, tgl_swsb_src_dep(swsb));
       }
@@ -1387,11 +1387,7 @@ fs_generator::generate_scratch_write(fs_inst *inst, struct brw_reg src)
       brw_MOV(p, brw_uvec_mrf(lower_size, inst->base_mrf + 1, 0),
               retype(offset(src, block_size * i), BRW_REGISTER_TYPE_UD));
 
-      if (i + 1 < inst->exec_size / lower_size)
-         brw_set_default_swsb(p, tgl_swsb_regdist(1));
-      else
-         brw_set_default_swsb(p, tgl_swsb_dst_dep(swsb, 1));
-
+      brw_set_default_swsb(p, tgl_swsb_dst_dep(swsb, 1));
       brw_oword_block_write_scratch(p, brw_message_reg(inst->base_mrf),
                                     block_size,
                                     inst->offset + block_size * REG_SIZE * i);



More information about the mesa-commit mailing list