[Mesa-dev] [PATCH 2/2] intel/compiler: Use null destination register for memory fence messages

Anuj Phogat anuj.phogat at gmail.com
Wed Feb 7 01:09:10 UTC 2018


>From Message Descriptor section in gfxspecs:
 "Memory fence messages without Commit Enable set do not return
  anything to the thread (response length is 0 and destination
  register is null)."

It fixes a piglit GPU hang in simulation environment.
Piglit test: arb_shader_image_load_store-shader-mem-barrier

Signed-off-by: Anuj Phogat <anuj.phogat at gmail.com>
Cc: mesa-stable at lists.freedesktop.org
---
 src/intel/compiler/brw_eu_emit.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/intel/compiler/brw_eu_emit.c b/src/intel/compiler/brw_eu_emit.c
index 1fb9aab51c..c66b813af8 100644
--- a/src/intel/compiler/brw_eu_emit.c
+++ b/src/intel/compiler/brw_eu_emit.c
@@ -3290,7 +3290,13 @@ brw_memory_fence(struct brw_codegen *p,
     */
    insn = next_insn(p, BRW_OPCODE_SEND);
    dst = retype(dst, BRW_REGISTER_TYPE_UW);
-   brw_set_dest(p, insn, dst);
+
+  /* From Message Descriptor section in gfxspecs:
+        "Memory fence messages without Commit Enable set do not return
+         anything to the thread (response length is 0 and destination
+         register is null).
+   */
+   brw_set_dest(p, insn, retype(vec1(brw_null_reg()), BRW_REGISTER_TYPE_UW));
    brw_set_src0(p, insn, dst);
    brw_set_memory_fence_message(p, insn, GEN7_SFID_DATAPORT_DATA_CACHE,
                                 commit_enable);
-- 
2.13.6



More information about the mesa-dev mailing list