From a5207523285d8db898a1cc552a72187173f19a4e Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Thu, 11 Dec 2025 15:52:35 -0800 Subject: [PATCH] freedreno/a6xx: gen8 lrz support Signed-off-by: Rob Clark Part-of: --- src/gallium/drivers/freedreno/a6xx/fd6_gmem.cc | 14 ++++++++++++-- src/gallium/drivers/freedreno/freedreno_screen.c | 5 ----- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_gmem.cc b/src/gallium/drivers/freedreno/a6xx/fd6_gmem.cc index 216bd011202..b59f0f35370 100644 --- a/src/gallium/drivers/freedreno/a6xx/fd6_gmem.cc +++ b/src/gallium/drivers/freedreno/a6xx/fd6_gmem.cc @@ -237,7 +237,7 @@ emit_lrz(fd_cs &cs, struct fd_batch *batch, struct fd_batch_subpass *subpass) struct pipe_framebuffer_state *pfb = &batch->framebuffer; if (!subpass->lrz) { - fd_crb crb(cs, 8); + fd_crb crb(cs, 9); crb.add(GRAS_LRZ_BUFFER_BASE(CHIP)); crb.add(GRAS_LRZ_BUFFER_PITCH(CHIP)); @@ -249,6 +249,10 @@ emit_lrz(fd_cs &cs, struct fd_batch *batch, struct fd_batch_subpass *subpass) crb.add(GRAS_LRZ_CNTL2(CHIP)); } + if (CHIP >= A8XX) { + crb.add(GRAS_LRZ_BUFFER_SLICE_PITCH(CHIP)); + } + return; } @@ -260,7 +264,7 @@ emit_lrz(fd_cs &cs, struct fd_batch *batch, struct fd_batch_subpass *subpass) */ fd6_event_write(batch->ctx, cs, FD_LRZ_FLUSH); - fd_crb crb(cs, 8); + fd_crb crb(cs, 9); struct fd_resource *zsbuf = fd_resource(pfb->zsbuf.texture); @@ -290,6 +294,12 @@ emit_lrz(fd_cs &cs, struct fd_batch *batch, struct fd_batch_subpass *subpass) .fc_enable = lrzfc_enabled(zsbuf), )); } + + if (CHIP >= A8XX) { + crb.add(GRAS_LRZ_BUFFER_SLICE_PITCH(CHIP, + zsbuf->lrz_layout.lrz_slice_pitch + )); + } } /* Emit any needed lrz clears to the prologue cmds diff --git a/src/gallium/drivers/freedreno/freedreno_screen.c b/src/gallium/drivers/freedreno/freedreno_screen.c index edd5404a237..25104fd47ff 100644 --- a/src/gallium/drivers/freedreno/freedreno_screen.c +++ b/src/gallium/drivers/freedreno/freedreno_screen.c @@ -995,11 +995,6 @@ fd_screen_create(int fd, screen->dev_info = info; screen->info = &screen->dev_info; - if (screen->gen == 8) { - /* gen8 TODO */ - fd_mesa_debug |= FD_DBG_NOLRZ; - } - switch (screen->gen) { case 2: fd2_screen_init(pscreen);