Browse Source

freedreno/a6xx: fix LRZ layout

Signed-off-by: Rob Clark <robdclark@chromium.org>
master
Rob Clark 6 years ago
parent
commit
3c479849c5
1 changed files with 8 additions and 7 deletions
  1. 8
    7
      src/gallium/drivers/freedreno/a6xx/fd6_resource.c

+ 8
- 7
src/gallium/drivers/freedreno/a6xx/fd6_resource.c View File

@@ -295,21 +295,22 @@ setup_lrz(struct fd_resource *rsc)
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;

Loading…
Cancel
Save