OSDN Git Service

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)
committerIan Romanick <ian.d.romanick@intel.com>
Thu, 28 Jul 2011 21:22:59 +0000 (14:22 -0700)
commit8589ca000a94254931100383bc961832918d4aa0
tree8816f468c82ed4c2cfd06e45e58acb511aa5f074
parentdcbd00e73c703e46b8034625c929b1dc5bbb5ca4
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>
(cherry picked from commit 15c0bc5eefc89bec537e412c02965f201fb1c011)
src/mesa/drivers/dri/intel/intel_fbo.c