struct fd_screen *screen = fd_screen(rsc->base.screen);
        const uint32_t flags = DRM_FREEDRENO_GEM_CACHE_WCOMBINE |
                        DRM_FREEDRENO_GEM_TYPE_KMEM; /* TODO */
-       unsigned lrz_pitch  = align(DIV_ROUND_UP(rsc->base.width0, 8), 64);
-       unsigned lrz_height = DIV_ROUND_UP(rsc->base.height0, 8);
+       unsigned width0 = rsc->base.width0;
+       unsigned height0 = rsc->base.height0;
 
        /* LRZ buffer is super-sampled: */
        switch (rsc->base.nr_samples) {
        case 4:
-               lrz_pitch *= 2;
-               /* fallthrough */
+               width0 *= 2;
+               /* fallthru */
        case 2:
-               lrz_height *= 2;
+               height0 *= 2;
        }
 
-       unsigned size = lrz_pitch * lrz_height * 2;
+       unsigned lrz_pitch  = align(DIV_ROUND_UP(width0, 8), 32);
+       unsigned lrz_height = align(DIV_ROUND_UP(height0, 8), 16);
 
-       size += 0x1000; /* for GRAS_LRZ_FAST_CLEAR_BUFFER */
+       unsigned size = lrz_pitch * lrz_height * 2;
 
        rsc->lrz_height = lrz_height;
        rsc->lrz_width = lrz_pitch;