From: Ian Romanick Date: Thu, 2 Feb 2012 23:32:45 +0000 (-0700) Subject: intel: Avoid divide by zero for very small linear blits X-Git-Tag: android-x86-4.4-r1~7121 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=d59466279e45a1e9c3f9081f72fedbdf961afbe1;p=android-x86%2Fexternal-mesa.git intel: Avoid divide by zero for very small linear blits If size is small (such as 1), pitch = ROUND_DOWN_TO(MIN2(size, (1 << 15) - 1), 4); makes pitch = 0. Then height = size / pitch; causes a division-by-zero exception. If pitch is zero, set height to 1 and avoid the division. This fixes piglit's bin/getteximage-formats test and glean's bufferObject test. NOTE: This is a candidate for the 8.0 release branch. Signed-off-by: Ian Romanick Reviewed-by: Eric Anholt Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=44971 --- diff --git a/src/mesa/drivers/dri/intel/intel_blit.c b/src/mesa/drivers/dri/intel/intel_blit.c index 9eacadd213c..fd4a86c4e72 100644 --- a/src/mesa/drivers/dri/intel/intel_blit.c +++ b/src/mesa/drivers/dri/intel/intel_blit.c @@ -492,7 +492,7 @@ intel_emit_linear_blit(struct intel_context *intel, * rounding that down to the nearest DWORD is 1 << 15 - 4 */ pitch = ROUND_DOWN_TO(MIN2(size, (1 << 15) - 1), 4); - height = size / pitch; + height = (pitch == 0) ? 1 : size / pitch; ok = intelEmitCopyBlit(intel, 1, pitch, src_bo, src_offset, I915_TILING_NONE, pitch, dst_bo, dst_offset, I915_TILING_NONE,