nir: Support arrays in block_image_store_agx

For layered rendering, runs once per layer.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
This commit is contained in:
Alyssa Rosenzweig
2023-08-28 09:40:46 -04:00
parent f4042afd57
commit 10b9c2fa36
2 changed files with 5 additions and 4 deletions
+2 -1
View File
@@ -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 = {
+3 -3
View File
@@ -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: