i965: Check actual tile offsets in Gen4 miptree workaround.
authorKenneth Graunke <kenneth@whitecape.org>
Tue, 26 Jul 2011 00:06:13 +0000 (17:06 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Thu, 28 Jul 2011 21:04:39 +0000 (14:04 -0700)
commit15c0bc5eefc89bec537e412c02965f201fb1c011
tree09114f45dc92d21c6a717c37af991953acb8c75c
parent3e1fd13f605f16e8b48f3a9b71910a3c66eb84b5
i965: Check actual tile offsets in Gen4 miptree workaround.

The purpose of the (irb->draw_offset & 4095) != 0 check was to ensure
that we don't have XYy offsets into a tile, since Gen4 hardware doesn't
support that.  However, it's insufficient: there are cases where
draw_offset & 4095 is 0 but we still have a Y-offset.  This leads to an
assertion failure in brw_update_renderbuffer_surface with tile_y != 0.

Instead, simply call intel_renderbuffer_tile_offsets to compute the
actual X/Y offsets and check if either are non-zero.  This makes both
the workaround and the assertion check the same things.

Fixes piglit test fbo-generatemipmap-formats, and should also fix
bugs #34009 and #39487.

NOTE: This is a candidate for stable release branches.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=34009
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=39487
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Chad Versace <chad@chad-versace.us>
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/intel/intel_fbo.c