asahi: Handle linear 1D Arrays
authorAlyssa Rosenzweig <alyssa@rosenzweig.io>
Sun, 3 Sep 2023 19:22:51 +0000 (15:22 -0400)
committerMarge Bot <emma+marge@anholt.net>
Tue, 5 Sep 2023 18:50:34 +0000 (18:50 +0000)
Lowered to linear 2D Arrays, handle them like that. Fixes 1D Array case of
arb_shader_image_size-builtin.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25052>

src/gallium/drivers/asahi/agx_state.c

index f037e31..e9a7a1e 100644 (file)
@@ -712,7 +712,9 @@ agx_pack_texture(void *out, struct agx_resource *rsrc,
             layers /= 6;
 
          if (rsrc->layout.tiling == AIL_TILING_LINEAR &&
-             state->target == PIPE_TEXTURE_2D_ARRAY) {
+             (state->target == PIPE_TEXTURE_1D_ARRAY ||
+              state->target == PIPE_TEXTURE_2D_ARRAY)) {
+
             cfg.depth_linear = layers;
             cfg.layer_stride_linear = (rsrc->layout.layer_stride_B - 0x80);
             cfg.extended = true;
@@ -1206,7 +1208,9 @@ agx_batch_upload_pbe(struct agx_batch *batch, struct agx_pbe_packed *out,
          unsigned layers = view->u.tex.last_layer - layer + 1;
 
          if (tex->layout.tiling == AIL_TILING_LINEAR &&
-             tex->base.target == PIPE_TEXTURE_2D_ARRAY) {
+             (tex->base.target == PIPE_TEXTURE_1D_ARRAY ||
+              tex->base.target == PIPE_TEXTURE_2D_ARRAY)) {
+
             cfg.depth_linear = layers;
             cfg.layer_stride_linear = (tex->layout.layer_stride_B - 0x80);
             cfg.extended = true;