[Mesa-dev] [PATCH] i965: Fail to blit rather than assert on invalid pitch requirements.

Paul Berry stereotype441 at gmail.com
Wed Dec 26 08:32:58 PST 2012


On 25 December 2012 20:55, 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.
> --
> 1.8.0.2
>

Looks reasonable to me.

Reviewed-by: Paul Berry <stereotype441 at gmail.com>

As a follow-up, we should probably check all of the code paths that lead
into this function to make sure they invoke the proper fallback logic if
there is a return value of false.  I think that _mesa_ReadnPixelsARB, for
example, will just fail to copy any data.


>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20121226/cdced50a/attachment.html>


More information about the mesa-dev mailing list