Mesa (master): r600g: hack around a problem with texture alignment

Marek Olšák mareko at kemper.freedesktop.org
Fri Aug 19 14:12:34 PDT 2011


Module: Mesa
Branch: master
Commit: 751a6ed893d393eaea266d892402d132f7d15a7d
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=751a6ed893d393eaea266d892402d132f7d15a7d

Author: Marek Olšák <maraeo at gmail.com>
Date:   Fri Aug 19 21:48:12 2011 +0200

r600g: hack around a problem with texture alignment

---

 src/gallium/drivers/r600/r600_texture.c |   10 ++++++++++
 1 files changed, 10 insertions(+), 0 deletions(-)

diff --git a/src/gallium/drivers/r600/r600_texture.c b/src/gallium/drivers/r600/r600_texture.c
index 74219e8..5681dd8 100644
--- a/src/gallium/drivers/r600/r600_texture.c
+++ b/src/gallium/drivers/r600/r600_texture.c
@@ -198,6 +198,16 @@ static unsigned r600_texture_get_nblocksy(struct pipe_screen *screen,
 	height = util_format_get_nblocksy(rtex->real_format, height);
 	tile_height = r600_get_height_alignment(screen,
 						rtex->array_mode[level]);
+
+	/* XXX Hack around an alignment issue. Less tests fail with this.
+	 *
+	 * The thing is depth-stencil buffers should be tiled, i.e.
+	 * the alignment should be >=8. If I make them tiled, stencil starts
+	 * working because it no longer overlaps with the depth buffer
+	 * in memory, but texturing like drawpix-stencil breaks. */
+	if (util_format_is_depth_or_stencil(rtex->real_format) && tile_height < 8)
+		tile_height = 8;
+
 	height = align(height, tile_height);
 	return height;
 }



More information about the mesa-commit mailing list