From 10b9c2fa3644ad54dc9703f9e44f2a5de53e1de5 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Mon, 28 Aug 2023 09:40:46 -0400 Subject: [PATCH] nir: Support arrays in block_image_store_agx For layered rendering, runs once per layer. Signed-off-by: Alyssa Rosenzweig --- src/asahi/lib/agx_meta.c | 3 ++- src/compiler/nir/nir_intrinsics.py | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/asahi/lib/agx_meta.c b/src/asahi/lib/agx_meta.c index b8bf15a..12e828c 100644 --- a/src/asahi/lib/agx_meta.c +++ b/src/asahi/lib/agx_meta.c @@ -130,8 +130,9 @@ agx_build_end_of_tile_shader(struct agx_meta_cache *cache, nir_block_image_store_agx( &b, nir_imm_int(&b, rt), nir_imm_intN_t(&b, offset_B, 16), + nir_imm_intN_t(&b, 0, 16), .format = agx_tilebuffer_physical_format(&key->tib, rt), - .image_dim = dim); + .image_dim = dim, .image_array = false); } struct agx_shader_key compiler_key = { diff --git a/src/compiler/nir/nir_intrinsics.py b/src/compiler/nir/nir_intrinsics.py index f24df48..71a570f 100644 --- a/src/compiler/nir/nir_intrinsics.py +++ b/src/compiler/nir/nir_intrinsics.py @@ -1744,9 +1744,9 @@ intrinsic("store_zs_agx", [1, 1, 1], indices=[BASE], flags=[]) # The image dimension is used to distinguish multisampled images from # non-multisampled images. It must be 2D or MS. # -# src[] = { image index, logical offset within shared memory } -intrinsic("block_image_store_agx", [1, 1], bit_sizes=[32, 16], - indices=[FORMAT, IMAGE_DIM], flags=[CAN_REORDER]) +# src[] = { image index, logical offset within shared memory, layer } +intrinsic("block_image_store_agx", [1, 1, 1], bit_sizes=[32, 16, 16], + indices=[FORMAT, IMAGE_DIM, IMAGE_ARRAY], flags=[CAN_REORDER]) # Formatted load/store. The format is the pipe_format in memory (see # agx_internal_formats.h for the supported list). This accesses: -- 2.7.4