freedreno: try for more squarish tile dimensions
authorRob Clark <robclark@freedesktop.org>
Mon, 9 Jun 2014 17:36:24 +0000 (13:36 -0400)
committerRob Clark <robclark@freedesktop.org>
Fri, 13 Jun 2014 19:20:34 +0000 (15:20 -0400)
Worth about ~0.5fps in xonotic, for example.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
src/gallium/drivers/freedreno/freedreno_gmem.c

index 861ebf5..661458f 100644 (file)
@@ -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);