Mesa (master): freedreno: try for more squarish tile dimensions

Rob Clark robclark at kemper.freedesktop.org
Fri Jun 13 19:39:45 UTC 2014


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

Author: Rob Clark <robclark at freedesktop.org>
Date:   Mon Jun  9 13:36:24 2014 -0400

freedreno: try for more squarish tile dimensions

Worth about ~0.5fps in xonotic, for example.

Signed-off-by: Rob Clark <robclark at freedesktop.org>

---

 src/gallium/drivers/freedreno/freedreno_gmem.c |   12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/gallium/drivers/freedreno/freedreno_gmem.c b/src/gallium/drivers/freedreno/freedreno_gmem.c
index 861ebf5..661458f 100644
--- a/src/gallium/drivers/freedreno/freedreno_gmem.c
+++ b/src/gallium/drivers/freedreno/freedreno_gmem.c
@@ -128,11 +128,17 @@ calculate_tiles(struct fd_context *ctx)
 		bin_w = align(width / nbins_x, 32);
 	}
 
-	/* then find a bin height that satisfies the memory constraints:
+	/* then find a bin width/height that satisfies the memory
+	 * constraints:
 	 */
 	while ((bin_w * bin_h * cpp) > gmem_size) {
-		nbins_y++;
-		bin_h = align(height / nbins_y, 32);
+		if (bin_w > bin_h) {
+			nbins_x++;
+			bin_w = align(width / nbins_x, 32);
+		} else {
+			nbins_y++;
+			bin_h = align(height / nbins_y, 32);
+		}
 	}
 
 	DBG("using %d bins of size %dx%d", nbins_x*nbins_y, bin_w, bin_h);




More information about the mesa-commit mailing list