On 25 December 2012 20:55, Kenneth Graunke <kenn...@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 <stereotype...@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@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev