mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-24 06:18:10 +02:00
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:
parent
ec40c95385
commit
94a7d50433
4 changed files with 14 additions and 6 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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)"/>
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue