Mesa (master): i965/gen7: Add some safety checks for send messages from GRFs.

Eric Anholt anholt at kemper.freedesktop.org
Wed Dec 5 01:13:09 UTC 2012


Module: Mesa
Branch: master
Commit: 8f05b2f2b022cb80c9e49d2ceb212d3b4f23905b
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=8f05b2f2b022cb80c9e49d2ceb212d3b4f23905b

Author: Eric Anholt <eric at anholt.net>
Date:   Fri Nov  9 11:38:14 2012 -0800

i965/gen7: Add some safety checks for send messages from GRFs.

---

 src/mesa/drivers/dri/i965/brw_eu_emit.c |   15 +++++++++++++++
 1 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_eu_emit.c b/src/mesa/drivers/dri/i965/brw_eu_emit.c
index eada9d9..72fb5c5 100644
--- a/src/mesa/drivers/dri/i965/brw_eu_emit.c
+++ b/src/mesa/drivers/dri/i965/brw_eu_emit.c
@@ -236,11 +236,26 @@ void
 brw_set_src0(struct brw_compile *p, struct brw_instruction *insn,
 	     struct brw_reg reg)
 {
+   struct brw_context *brw = p->brw;
+   struct intel_context *intel = &brw->intel;
+
    if (reg.type != BRW_ARCHITECTURE_REGISTER_FILE)
       assert(reg.nr < 128);
 
    gen7_convert_mrf_to_grf(p, &reg);
 
+   if (intel->gen >= 6 && (insn->header.opcode == BRW_OPCODE_SEND ||
+                           insn->header.opcode == BRW_OPCODE_SENDC)) {
+      /* Any source modifiers or regions will be ignored, since this just
+       * identifies the MRF/GRF to start reading the message contents from.
+       * Check for some likely failures.
+       */
+      assert(!reg.negate);
+      assert(!reg.abs);
+      assert(reg.address_mode == BRW_ADDRESS_DIRECT);
+      assert(reg.vstride != BRW_VERTICAL_STRIDE_0);
+   }
+
    validate_reg(insn, reg);
 
    insn->bits1.da1.src0_reg_file = reg.file;




More information about the mesa-commit mailing list