pan: Layer offset is not longer available starting on v14

Setting layer_offset would not cause any issues, but it's ignored by the
GPU. Therefore, removing it for correctness.

Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41645>
This commit is contained in:
Marc Alcala Prieto 2026-05-06 13:53:32 +02:00 committed by Marge Bot
parent ec40c95385
commit 94a7d50433
4 changed files with 14 additions and 6 deletions

View file

@ -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;

View file

@ -2618,7 +2618,6 @@
<field name="FB Width" size="16" start="3:0" type="uint" modifier="minus(1)"/>
<field name="FB Height" size="16" start="3:16" type="uint" modifier="minus(1)"/>
<field name="Layer count" size="8" start="4:0" type="uint" default="1" modifier="minus(1)"/>
<field name="Layer offset" size="9" start="4:8" type="int"/>
<field name="Heap" size="64" start="6:0" type="address"/>
<field name="Geometry buffer size" size="12" start="8:0" type="uint" default="65536" modifier="shr(12)"/>
<field name="Geometry buffer" size="52" start="8:12" type="address" modifier="shr(12)"/>

View file

@ -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;

View file

@ -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) {