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:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user