Mesa (master): freedreno/a6xx: Don't emit src state when clearing

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Jul 14 06:27:38 UTC 2020


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

Author: Kristian H. Kristensen <hoegsberg at google.com>
Date:   Thu Jul  2 04:13:27 2020 -0700

freedreno/a6xx: Don't emit src state when clearing

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5717>

---

 src/gallium/drivers/freedreno/a6xx/fd6_blitter.c | 26 ++++++++++++++----------
 1 file changed, 15 insertions(+), 11 deletions(-)

diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_blitter.c b/src/gallium/drivers/freedreno/a6xx/fd6_blitter.c
index 5207a26abfc..8da308556d6 100644
--- a/src/gallium/drivers/freedreno/a6xx/fd6_blitter.c
+++ b/src/gallium/drivers/freedreno/a6xx/fd6_blitter.c
@@ -518,22 +518,25 @@ emit_blit_or_clear_texture(struct fd_context *ctx, struct fd_ringbuffer *ring,
 	OUT_RING(ring, A6XX_CP_SET_MARKER_0_MODE(RM6_BLIT2DSCALE));
 
 	uint32_t nr_samples = fd_resource_nr_samples(&dst->base);
-	sx1 = sbox->x * nr_samples;
-	sy1 = sbox->y;
-	sx2 = (sbox->x + sbox->width) * nr_samples - 1;
-	sy2 = sbox->y + sbox->height - 1;
+
+	if (!color) {
+		sx1 = sbox->x * nr_samples;
+		sy1 = sbox->y;
+		sx2 = (sbox->x + sbox->width) * nr_samples - 1;
+		sy2 = sbox->y + sbox->height - 1;
+
+		OUT_PKT4(ring, REG_A6XX_GRAS_2D_SRC_TL_X, 4);
+		OUT_RING(ring, A6XX_GRAS_2D_SRC_TL_X_X(sx1));
+		OUT_RING(ring, A6XX_GRAS_2D_SRC_BR_X_X(sx2));
+		OUT_RING(ring, A6XX_GRAS_2D_SRC_TL_Y_Y(sy1));
+		OUT_RING(ring, A6XX_GRAS_2D_SRC_BR_Y_Y(sy2));
+	}
 
 	dx1 = dbox->x * nr_samples;
 	dy1 = dbox->y;
 	dx2 = (dbox->x + dbox->width) * nr_samples - 1;
 	dy2 = dbox->y + dbox->height - 1;
 
-	OUT_PKT4(ring, REG_A6XX_GRAS_2D_SRC_TL_X, 4);
-	OUT_RING(ring, A6XX_GRAS_2D_SRC_TL_X_X(sx1));
-	OUT_RING(ring, A6XX_GRAS_2D_SRC_BR_X_X(sx2));
-	OUT_RING(ring, A6XX_GRAS_2D_SRC_TL_Y_Y(sy1));
-	OUT_RING(ring, A6XX_GRAS_2D_SRC_BR_Y_Y(sy2));
-
 	OUT_PKT4(ring, REG_A6XX_GRAS_2D_DST_TL, 2);
 	OUT_RING(ring, A6XX_GRAS_2D_DST_TL_X(dx1) | A6XX_GRAS_2D_DST_TL_Y(dy1));
 	OUT_RING(ring, A6XX_GRAS_2D_DST_BR_X(dx2) | A6XX_GRAS_2D_DST_BR_Y(dy2));
@@ -629,7 +632,8 @@ emit_blit_or_clear_texture(struct fd_context *ctx, struct fd_ringbuffer *ring,
 
 	for (unsigned i = 0; i < info->dst.box.depth; i++) {
 
-		emit_blit_src(ring, info, sbox->z + i, nr_samples);
+		if (!color)
+			emit_blit_src(ring, info, sbox->z + i, nr_samples);
 
 		emit_blit_dst(ring, info, dbox->z + i);
 



More information about the mesa-commit mailing list