Mesa (master): i965: Fail to blit rather than assert on invalid pitch requirements.

Kenneth Graunke kwg at kemper.freedesktop.org
Sat Dec 29 09:05:39 UTC 2012


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

Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Tue Dec 25 20:55:38 2012 -0800

i965: Fail to blit rather than assert on invalid pitch requirements.

Dungeon Defenders hits TexImage()'s try_pbo_upload() path where
image->Width == 2, which doesn't meet intelEmitCopyBlit's requirement
that the pitch needs to be a multiple of 4.

Since intelEmitCopyBlit can already fail for a myriad of other reasons,
and it's not clear that other callers are immune to this failure mode,
simply make it return false rather than assert.

Fixes Dungeon Defenders on i965/Ivybridge.  Now playable (aside from
having to work around the EXT_bindable_uniform issue).

NOTE: This is probably a candidate for the 9.0 branch.

Reviewed-by: Jordan Justen <jordan.l.justen at intel.com>
Reviewed-by: Paul Berry <stereotype441 at gmail.com>
Reviewed-by: Matt Turner <mattst88 at gmail.com>

---

 src/mesa/drivers/dri/intel/intel_blit.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/mesa/drivers/dri/intel/intel_blit.c b/src/mesa/drivers/dri/intel/intel_blit.c
index 521e6eb..867d7b3 100644
--- a/src/mesa/drivers/dri/intel/intel_blit.c
+++ b/src/mesa/drivers/dri/intel/intel_blit.c
@@ -150,8 +150,8 @@ intelEmitCopyBlit(struct intel_context *intel,
    /* Blit pitch must be dword-aligned.  Otherwise, the hardware appears to drop
     * the low bits.
     */
-   assert(src_pitch % 4 == 0);
-   assert(dst_pitch % 4 == 0);
+   if (src_pitch % 4 != 0 || dst_pitch % 4 != 0)
+      return false;
 
    /* For big formats (such as floating point), do the copy using 32bpp and
     * multiply the coordinates.




More information about the mesa-commit mailing list