[Mesa-dev] [PATCH] i965: Fail to blit rather than assert on invalid pitch requirements.
mattst88 at gmail.com
Wed Dec 26 11:00:40 PST 2012
On Tue, Dec 25, 2012 at 8:55 PM, Kenneth Graunke <kenneth at whitecape.org> wrote:
> 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.
> src/mesa/drivers/dri/intel/intel_blit.c | 4 ++--
> 1 file 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.
Reviewed-by: Matt Turner <mattst88 at gmail.com>
More information about the mesa-dev