<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">I think this is ok,<br><br></div><div class="gmail_quote">Reviewed-by: Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>><br></div><div class="gmail_quote"><br>On Thu, Jan 26, 2017 at 1:27 AM, Kenneth Graunke <span dir="ltr"><<a href="mailto:kenneth@whitecape.org" target="_blank">kenneth@whitecape.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">At this point, the pitch is in bytes.  We haven't yet divided the pitch<br>
by 4 for tiled surfaces, so abs(pitch) may be larger than 32K.  This<br>
means the bit 15 trick won't work.<br>
<br>
The caller now has signed integers anyway, so just pass those through<br>
and do the obvious check.<br>
<br>
Cc: "17.0" <<a href="mailto:mesa-stable@lists.freedesktop.org">mesa-stable@lists.<wbr>freedesktop.org</a>><br>
Signed-off-by: Kenneth Graunke <<a href="mailto:kenneth@whitecape.org">kenneth@whitecape.org</a>><br>
---<br>
 src/mesa/drivers/dri/i965/<wbr>intel_blit.c | 10 ++++------<br>
 1 file changed, 4 insertions(+), 6 deletions(-)<br>
<br>
diff --git a/src/mesa/drivers/dri/i965/<wbr>intel_blit.c b/src/mesa/drivers/dri/i965/<wbr>intel_blit.c<br>
index 9863ca1f94a..4d4ab911cbc 100644<br>
--- a/src/mesa/drivers/dri/i965/<wbr>intel_blit.c<br>
+++ b/src/mesa/drivers/dri/i965/<wbr>intel_blit.c<br>
@@ -476,11 +476,11 @@ static bool<br>
 can_fast_copy_blit(struct brw_context *brw,<br>
                   drm_intel_bo *src_buffer,<br>
                    int16_t src_x, int16_t src_y,<br>
-                   uintptr_t src_offset, uint32_t src_pitch,<br>
+                   uintptr_t src_offset, int32_t src_pitch,<br>
                    uint32_t src_tiling, uint32_t src_tr_mode,<br>
                   drm_intel_bo *dst_buffer,<br>
                    int16_t dst_x, int16_t dst_y,<br>
-                   uintptr_t dst_offset, uint32_t dst_pitch,<br>
+                   uintptr_t dst_offset, int32_t dst_pitch,<br>
                    uint32_t dst_tiling, uint32_t dst_tr_mode,<br>
                    int16_t w, int16_t h, uint32_t cpp,<br>
                    GLenum logic_op)<br>
@@ -516,10 +516,8 @@ can_fast_copy_blit(struct brw_context *brw,<br>
    if (!_mesa_is_pow_two(cpp) || cpp > 16)<br>
       return false;<br>
<br>
-   /* For Fast Copy Blits the pitch cannot be a negative number. So, bit 15<br>
-    * of the destination pitch must be zero.<br>
-    */<br>
-   if ((src_pitch >> 15 & 1) != 0 || (dst_pitch >> 15 & 1) != 0)<br>
+   /* For Fast Copy Blits the pitch cannot be a negative number. */<br>
+   if (src_pitch < 0 || dst_pitch < 0)<br>
       return false;<br>
<br>
    /* For Linear surfaces, the pitch has to be an OWord (16byte) multiple. */<br>
<span class="HOEnZb"><font color="#888888">--<br>
2.11.0<br>
<br>
</font></span></blockquote></div><br></div></div>