Mesa (master): freedreno: mark stencil buffer valid too in case of z32x24s8

Rob Clark robclark at kemper.freedesktop.org
Mon Dec 4 17:00:48 UTC 2017


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

Author: Rob Clark <robdclark at gmail.com>
Date:   Mon Dec  4 11:01:52 2017 -0500

freedreno: mark stencil buffer valid too in case of z32x24s8

The separate stencil buffer was not also getting marked as valid if
written by a draw/clear, resulting in gmem2mem getting skipped.  Move
this into fd_batch_resource_used() which also handles the separate
stencil case.

Also fix restore_buffers typo.

Fixes: 4ab6ab80365 freedreno: avoid mem2gmem for invalidated buffers
Signed-off-by: Rob Clark <robdclark at gmail.com>

---

 src/gallium/drivers/freedreno/freedreno_batch.c | 3 +++
 src/gallium/drivers/freedreno/freedreno_draw.c  | 3 +--
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/freedreno/freedreno_batch.c b/src/gallium/drivers/freedreno/freedreno_batch.c
index 9c66dc98bc..6e208d350e 100644
--- a/src/gallium/drivers/freedreno/freedreno_batch.c
+++ b/src/gallium/drivers/freedreno/freedreno_batch.c
@@ -382,6 +382,9 @@ fd_batch_resource_used(struct fd_batch *batch, struct fd_resource *rsc, bool wri
 
 	DBG("%p: %s %p", batch, write ? "write" : "read", rsc);
 
+	if (write)
+		rsc->valid = true;
+
 	/* note, invalidate write batch, to avoid further writes to rsc
 	 * resulting in a write-after-read hazard.
 	 */
diff --git a/src/gallium/drivers/freedreno/freedreno_draw.c b/src/gallium/drivers/freedreno/freedreno_draw.c
index fc24776e4a..d3bf316527 100644
--- a/src/gallium/drivers/freedreno/freedreno_draw.c
+++ b/src/gallium/drivers/freedreno/freedreno_draw.c
@@ -55,7 +55,6 @@ resource_written(struct fd_batch *batch, struct pipe_resource *prsc)
 {
 	if (!prsc)
 		return;
-	fd_resource(prsc)->valid = true;
 	fd_batch_resource_used(batch, fd_resource(prsc), true);
 }
 
@@ -147,7 +146,7 @@ fd_draw_vbo(struct pipe_context *pctx, const struct pipe_draw_info *info)
 
 	if (fd_stencil_enabled(ctx)) {
 		if (fd_resource(pfb->zsbuf->texture)->valid)
-			restore_buffers |= FD_BUFFER_DEPTH;
+			restore_buffers |= FD_BUFFER_STENCIL;
 		buffers |= FD_BUFFER_STENCIL;
 		resource_written(batch, pfb->zsbuf->texture);
 		batch->gmem_reason |= FD_GMEM_STENCIL_ENABLED;




More information about the mesa-commit mailing list