Mesa (master): r600g: don' t allocate separate depth and stencil for transfer textures on EG

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


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

Author: Marek Olšák <maraeo at gmail.com>
Date:   Fri Aug 19 22:57:56 2011 +0200

r600g: don't allocate separate depth and stencil for transfer textures on EG

The state tracker expects depth and stencil pixels interleaved.
Evergreen can bind an interleaved depth-stencil resource as a colorbuffer,
but not as a zbuffer.

The hardware can do the interleaving for us when decompressing.

---

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

diff --git a/src/gallium/drivers/r600/r600_texture.c b/src/gallium/drivers/r600/r600_texture.c
index 5681dd8..e41fe11 100644
--- a/src/gallium/drivers/r600/r600_texture.c
+++ b/src/gallium/drivers/r600/r600_texture.c
@@ -394,7 +394,8 @@ r600_texture_create_object(struct pipe_screen *screen,
 	rtex->real_format = base->format;
 
 	/* We must split depth and stencil into two separate buffers on Evergreen. */
-	if (r600_get_family_class(((struct r600_screen*)screen)->radeon) >= EVERGREEN &&
+	if (!(base->flags & R600_RESOURCE_FLAG_TRANSFER) &&
+	    r600_get_family_class(((struct r600_screen*)screen)->radeon) >= EVERGREEN &&
 	    util_format_is_depth_and_stencil(base->format)) {
 		struct pipe_resource stencil;
 		unsigned stencil_pitch_override = 0;



More information about the mesa-commit mailing list