diff --git a/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c b/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c index 3b9f4b2a71a..9370bc4f5c5 100644 --- a/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c +++ b/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c @@ -888,7 +888,8 @@ get_tiler_desc(struct panvk_cmd_buffer *cmdbuf) unsigned max_levels = tiler_features.max_levels; assert(max_levels >= 2); - cfg.hierarchy_mask = panvk_select_tiler_hierarchy_mask(cmdbuf); + cfg.hierarchy_mask = + panvk_select_tiler_hierarchy_mask(phys_dev, &cmdbuf->state.gfx); cfg.fb_width = cmdbuf->state.gfx.render.fb.info.width; cfg.fb_height = cmdbuf->state.gfx.render.fb.info.height; diff --git a/src/panfrost/vulkan/jm/panvk_vX_cmd_buffer.c b/src/panfrost/vulkan/jm/panvk_vX_cmd_buffer.c index 9d24221f6e6..c8c32d046ba 100644 --- a/src/panfrost/vulkan/jm/panvk_vX_cmd_buffer.c +++ b/src/panfrost/vulkan/jm/panvk_vX_cmd_buffer.c @@ -225,6 +225,8 @@ panvk_per_arch(cmd_prepare_tiler_context)(struct panvk_cmd_buffer *cmdbuf, uint32_t layer_idx) { struct panvk_device *dev = to_panvk_device(cmdbuf->vk.base.device); + struct panvk_physical_device *phys_dev = + to_panvk_physical_device(cmdbuf->vk.base.device->physical); struct panvk_batch *batch = cmdbuf->cur_batch; mali_ptr tiler_desc; @@ -253,7 +255,8 @@ panvk_per_arch(cmd_prepare_tiler_context)(struct panvk_cmd_buffer *cmdbuf, } pan_pack(&batch->tiler.ctx_templ, TILER_CONTEXT, cfg) { - cfg.hierarchy_mask = panvk_select_tiler_hierarchy_mask(cmdbuf); + cfg.hierarchy_mask = + panvk_select_tiler_hierarchy_mask(phys_dev, &cmdbuf->state.gfx); cfg.fb_width = fbinfo->width; cfg.fb_height = fbinfo->height; cfg.heap = batch->tiler.heap_desc.gpu; diff --git a/src/panfrost/vulkan/panvk_cmd_draw.h b/src/panfrost/vulkan/panvk_cmd_draw.h index 874ea731d25..00e5a968378 100644 --- a/src/panfrost/vulkan/panvk_cmd_draw.h +++ b/src/panfrost/vulkan/panvk_cmd_draw.h @@ -16,14 +16,13 @@ #include "pan_props.h" static inline uint32_t -panvk_select_tiler_hierarchy_mask(struct panvk_cmd_buffer *cmdbuf) +panvk_select_tiler_hierarchy_mask(const struct panvk_physical_device *phys_dev, + const struct panvk_cmd_graphics_state *state) { - struct panvk_physical_device *phys_dev = - to_panvk_physical_device(cmdbuf->vk.base.device->physical); struct panfrost_tiler_features tiler_features = panfrost_query_tiler_features(&phys_dev->kmod.props); - uint32_t max_fb_wh = MAX2(cmdbuf->state.gfx.render.fb.info.width, - cmdbuf->state.gfx.render.fb.info.height); + uint32_t max_fb_wh = MAX2(state->render.fb.info.width, + state->render.fb.info.height); uint32_t last_hierarchy_bit = util_last_bit(DIV_ROUND_UP(max_fb_wh, 16)); uint32_t hierarchy_mask = BITFIELD_MASK(tiler_features.max_levels);