freedreno/a6xx: fix hang with large render target
authorRob Clark <robdclark@chromium.org>
Tue, 25 Aug 2020 20:02:34 +0000 (13:02 -0700)
committerMarge Bot <eric+marge@anholt.net>
Tue, 25 Aug 2020 22:20:41 +0000 (22:20 +0000)
It seems we do have some limits.  Similar to older gens, # of tiles per
pipe cannot be more than 32.  But I could not trigger any hangs with 16
or more tiles per pipe in either X or Y direction, so that limit does
not seem to apply.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6461>

src/gallium/drivers/freedreno/a6xx/fd6_gmem.c

index 236151e01a7a8498ad8c7cefb0b7e4437cb8bc7d..eb4cbbf52df5d80cdf10d2818df8a1f53dff247f 100644 (file)
@@ -254,7 +254,8 @@ use_hw_binning(struct fd_batch *batch)
 {
        const struct fd_gmem_stateobj *gmem = batch->gmem_state;
 
-       // TODO figure out hw limits for binning
+       if ((gmem->maxpw * gmem->maxph) > 32)
+               return false;
 
        return fd_binning_enabled && ((gmem->nbins_x * gmem->nbins_y) >= 2) &&
                        (batch->num_draws > 0);