<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, Dec 8, 2017 at 2:54 AM,  <span dir="ltr"><<a href="mailto:kevin.rogovin@intel.com" target="_blank">kevin.rogovin@intel.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">From: Kevin Rogovin <<a href="mailto:kevin.rogovin@intel.com">kevin.rogovin@intel.com</a>><br>
<br>
Signed-off-by: Kevin Rogovin <<a href="mailto:kevin.rogovin@intel.com">kevin.rogovin@intel.com</a>><br>
---<br>
 src/mesa/drivers/dri/i965/<wbr>intel_batchbuffer.c | 15 +++++++++++++++<br>
 1 file changed, 15 insertions(+)<br>
<br>
diff --git a/src/mesa/drivers/dri/i965/<wbr>intel_batchbuffer.c b/src/mesa/drivers/dri/i965/<wbr>intel_batchbuffer.c<br>
index 91a6506..549ea3e 100644<br>
--- a/src/mesa/drivers/dri/i965/<wbr>intel_batchbuffer.c<br>
+++ b/src/mesa/drivers/dri/i965/<wbr>intel_batchbuffer.c<br>
@@ -758,6 +758,7 @@ execbuffer(int fd,<br>
    };<br>
<br>
    unsigned long cmd = DRM_IOCTL_I915_GEM_<wbr>EXECBUFFER2;<br>
+   bool detected_out_of_bounds_write = false;<br>
<br>
    if (in_fence != -1) {<br>
       execbuf.rsvd2 = in_fence;<br>
@@ -787,6 +788,20 @@ execbuffer(int fd,<br>
              batch->validation_list[i].<wbr>offset);<br>
          bo->gtt_offset = batch->validation_list[i].<wbr>offset;<br>
       }<br>
+<br>
+      if (unlikely(INTEL_DEBUG & DEBUG_OUT_OF_BOUND_CHK)) {<br>
+         if (!brw_bo_padding_is_good(bo)) {<br>
+            detected_out_of_bounds_write = true;<br>
+            fprintf(stderr,<br>
+                    "Detected buffer out-of-bounds write from brw_bo %p "<br>
+                    "(GEM %u, label = \"%s\")\n",<br>
+                    bo, bo->gem_handle, bo->name);<br>
+         }<br>
+      }<br>
+   }<br></blockquote><div><br></div><div>I think you want to do this at the end of submit_batch instead and add a brw_bo_wait_rendering on the batch.  Otherwise, your bounds checking is racing with the GPU.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+<br>
+   if (unlikely(detected_out_of_<wbr>bounds_write)) {<br>
+      abort();<br>
    }<br>
<br>
    if (ret == 0 && out_fence != NULL)<br>
<span class="HOEnZb"><font color="#888888">--<br>
2.7.4<br>
<br>
______________________________<wbr>_________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/mesa-dev</a><br>
</font></span></blockquote></div><br></div></div>