diff options
-rw-r--r-- | src/gallium/drivers/freedreno/freedreno_gmem.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/gallium/drivers/freedreno/freedreno_gmem.c b/src/gallium/drivers/freedreno/freedreno_gmem.c index 861ebf5675e..661458fe0aa 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); |