diff --git a/src/gallium/drivers/panfrost/pan_csf.c b/src/gallium/drivers/panfrost/pan_csf.c
index 6351ca6a328..a57520812fc 100644
--- a/src/gallium/drivers/panfrost/pan_csf.c
+++ b/src/gallium/drivers/panfrost/pan_csf.c
@@ -132,9 +132,11 @@ init_fragment_state(const struct pan_fb_info *fb, unsigned layer_idx,
* use the extra 56-bits we have in frame_argument to pass other
* information to the fragment shader at some point.
*/
- assert(layer_idx >= tiler_ctx->valhall.layer_offset);
fbd_data.frame_argument = layer_idx;
+ /* Layer offset is unused on v14+. */
+ assert(tiler_ctx->valhall.layer_offset == 0);
+
pan_pack(&fbd_data.flags0, FRAGMENT_FLAGS_0, cfg) {
cfg.pre_frame_0 =
pan_fix_frame_shader_mode(fb->bifrost.pre_post.modes[0],
@@ -159,7 +161,7 @@ init_fragment_state(const struct pan_fb_info *fb, unsigned layer_idx,
cfg.hsr_prepass_filter_enable = true;
cfg.hsr_hierarchical_optimizations_enable = true;
- cfg.internal_layer_index = layer_idx - tiler_ctx->valhall.layer_offset;
+ cfg.internal_layer_index = layer_idx;
}
fbd_data.dcd_pointer = fb->bifrost.pre_post.dcds.gpu;
diff --git a/src/panfrost/genxml/v14.xml b/src/panfrost/genxml/v14.xml
index e41657089ae..df26afba057 100644
--- a/src/panfrost/genxml/v14.xml
+++ b/src/panfrost/genxml/v14.xml
@@ -2618,7 +2618,6 @@
-
diff --git a/src/panfrost/lib/pan_desc.h b/src/panfrost/lib/pan_desc.h
index a9a837502f2..053508639ec 100644
--- a/src/panfrost/lib/pan_desc.h
+++ b/src/panfrost/lib/pan_desc.h
@@ -65,6 +65,9 @@ struct pan_tiler_context {
/* A tiler descriptor can only handle a limited amount of layers.
* If the number of layers is bigger than this, several tiler
* descriptors will be issued, each with a different layer_offset.
+ *
+ * Note: on v14+, only up to one tiler descriptor is supported and
+ * layer_offset is deprecated.
*/
uint8_t layer_offset;
} valhall;
diff --git a/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c b/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c
index f6e3f782d6f..a6948b4d880 100644
--- a/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c
+++ b/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c
@@ -1063,7 +1063,10 @@ get_tiler_desc(struct panvk_cmd_buffer *cmdbuf)
/* This will be overloaded. */
cfg.layer_count = 1;
+
+#if PAN_ARCH < 14
cfg.layer_offset = 0;
+#endif
}
/* When simul_use=true, the tiler descriptors are allocated from the
@@ -1257,9 +1260,11 @@ init_layer_fragment_state(const struct pan_fb_desc_info *info,
* have in frame_argument to pass other information to the fragment
* shader at some point.
*/
- assert(info->layer >= info->tiler_ctx->valhall.layer_offset);
fbd_data.frame_argument = info->layer;
+ /* Layer offset is unused on v14+. */
+ assert(info->tiler_ctx->valhall.layer_offset == 0);
+
pan_pack(&fbd_data.flags0, FRAGMENT_FLAGS_0, cfg) {
cfg.pre_frame_0 = pan_fix_frame_shader_mode(info->frame_shaders.modes[0],
ct.rts || ct.zs || ct.s);
@@ -1276,8 +1281,7 @@ init_layer_fragment_state(const struct pan_fb_desc_info *info,
cfg.hsr_prepass_filter_enable = true;
cfg.hsr_hierarchical_optimizations_enable = true;
- cfg.internal_layer_index =
- info->layer - info->tiler_ctx->valhall.layer_offset;
+ cfg.internal_layer_index = info->layer;
}
pan_pack(&fbd_data.flags2, FRAGMENT_FLAGS_2, cfg) {