From 2396d3fe6267e6462dd7ed58e018df1a645d6091 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Mon, 28 Aug 2023 08:43:20 -0400 Subject: [PATCH] asahi: Use layered layouts For correct eMRT code. Signed-off-by: Alyssa Rosenzweig --- src/gallium/drivers/asahi/agx_state.c | 3 ++- src/gallium/drivers/asahi/agx_state.h | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/asahi/agx_state.c b/src/gallium/drivers/asahi/agx_state.c index 78689406181..0de1189b902 100644 --- a/src/gallium/drivers/asahi/agx_state.c +++ b/src/gallium/drivers/asahi/agx_state.c @@ -1545,7 +1545,7 @@ agx_compile_variant(struct agx_device *dev, struct agx_uncompiled_shader *so, struct asahi_fs_shader_key *key = &key_->fs; struct agx_tilebuffer_layout tib = agx_build_tilebuffer_layout( - key->rt_formats, key->nr_cbufs, key->nr_samples, false); + key->rt_formats, key->nr_cbufs, key->nr_samples, key->layered); if (dev->debug & AGX_DBG_SMALLTILE) tib.tile_size = (struct agx_tile_size){16, 16}; @@ -1967,6 +1967,7 @@ agx_update_fs(struct agx_batch *batch) .nr_cbufs = batch->key.nr_cbufs, .clip_plane_enable = ctx->rast->base.clip_plane_enable, .nr_samples = nr_samples, + .layered = util_framebuffer_get_num_layers(&batch->key) > 1, .multisample = msaa, /* Only lower sample mask if at least one sample is masked out */ diff --git a/src/gallium/drivers/asahi/agx_state.h b/src/gallium/drivers/asahi/agx_state.h index 0b19f7064c9..0eb8f6d3453 100644 --- a/src/gallium/drivers/asahi/agx_state.h +++ b/src/gallium/drivers/asahi/agx_state.h @@ -349,6 +349,7 @@ struct asahi_fs_shader_key { uint8_t clip_plane_enable; uint8_t nr_samples; bool multisample; + bool layered; enum pipe_format rt_formats[PIPE_MAX_COLOR_BUFS]; };