panfrost: Disable hierarchy levels based on multiple of tile_size

This disable hierachy levels in a more generic way to handle v12+
differences.

Signed-off-by: Mary Guillemard <mary.guillemard@collabora.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Lars-Ivar Hesselberg Simonsen <lars-ivar.simonsen@arm.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34032>
This commit is contained in:
Mary Guillemard
2025-03-20 17:07:44 +01:00
parent 3cdc39ee16
commit 5b712e4b2a
2 changed files with 14 additions and 6 deletions
+7 -3
View File
@@ -690,9 +690,13 @@ csf_emit_tiler_desc(struct panfrost_batch *batch, const struct pan_fb_info *fb)
batch->key.height,
dev->tiler_features.max_levels);
/* For effective tile size larger than 16x16, disable first level */
if (fb->tile_size > 16 * 16)
tiler.hierarchy_mask &= ~1;
/* Disable hierarchies falling under the effective tile size. */
uint32_t disable_hierarchies;
for (disable_hierarchies = 0;
fb->tile_size > (16 * 16) << (disable_hierarchies * 2);
disable_hierarchies++)
;
tiler.hierarchy_mask &= ~BITFIELD_MASK(disable_hierarchies);
tiler.fb_width = batch->key.width;
tiler.fb_height = batch->key.height;
+7 -3
View File
@@ -210,9 +210,13 @@ panvk_select_tiler_hierarchy_mask(const struct panvk_physical_device *phys_dev,
state->render.fb.info.height,
tiler_features.max_levels);
/* For effective tile size larger than 16x16, disable first level */
if (state->render.fb.info.tile_size > 16 * 16)
hierarchy_mask &= ~1;
/* Disable hierarchies falling under the effective tile size. */
uint32_t disable_hierarchies;
for (disable_hierarchies = 0; state->render.fb.info.tile_size >
(16 * 16) << (disable_hierarchies * 2);
disable_hierarchies++)
;
hierarchy_mask &= ~BITFIELD_MASK(disable_hierarchies);
return hierarchy_mask;
}