From 0bc70a0074035f7723e2f91b7ffb41d721b4d9c2 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Wed, 21 Dec 2022 12:13:10 -0500 Subject: [PATCH] asahi: Correct acceleration_buffer for layered images The old calculation was wrong if layer != 0. Signed-off-by: Alyssa Rosenzweig Part-of: --- src/gallium/drivers/asahi/agx_state.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/asahi/agx_state.c b/src/gallium/drivers/asahi/agx_state.c index 8dbd4db5f95..a78bb10adbd 100644 --- a/src/gallium/drivers/asahi/agx_state.c +++ b/src/gallium/drivers/asahi/agx_state.c @@ -620,7 +620,8 @@ agx_pack_texture(void *out, struct agx_resource *rsrc, if (ail_is_compressed(&rsrc->layout)) { cfg.acceleration_buffer = - cfg.address + rsrc->layout.metadata_offset_B; + agx_map_texture_gpu(rsrc, 0) + rsrc->layout.metadata_offset_B + + (first_layer * rsrc->layout.compression_layer_stride_B); } } @@ -970,7 +971,10 @@ agx_batch_upload_pbe(struct agx_batch *batch, unsigned rt) if (ail_is_compressed(&tex->layout)) { cfg.compressed_1 = true; cfg.extended = true; - cfg.acceleration_buffer = cfg.buffer + tex->layout.metadata_offset_B; + + cfg.acceleration_buffer = + agx_map_texture_gpu(tex, 0) + tex->layout.metadata_offset_B + + (layer * tex->layout.compression_layer_stride_B); } if (tex->base.nr_samples > 1)