diff --git a/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c b/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c index 3c688323a56..6a7184f33e0 100644 --- a/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c +++ b/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c @@ -2337,7 +2337,7 @@ prepare_draw(struct panvk_cmd_buffer *cmdbuf, struct panvk_draw_info *draw) return result; if (!cmdbuf->vk.dynamic_graphics_state.rs.rasterizer_discard_enable) { - const struct pan_fb_info *fbinfo = &cmdbuf->state.gfx.render.fb.info; + const struct pan_fb_layout *fb = &cmdbuf->state.gfx.render.fb.layout; uint32_t *nr_samples = &cmdbuf->state.gfx.render.fb.nr_samples; uint32_t rasterization_samples = cmdbuf->vk.dynamic_graphics_state.ms.rasterization_samples; @@ -2357,8 +2357,8 @@ prepare_draw(struct panvk_cmd_buffer *cmdbuf, struct panvk_draw_info *draw) * XXX: This currently can happen in case we resume a render pass with no * attachements and without any draw as the FBD is emitted when suspending. */ - assert(fbinfo->nr_samples == 0 || - fbinfo->nr_samples == cmdbuf->state.gfx.render.fb.nr_samples); + assert(fb->sample_count == 0 || + fb->sample_count == cmdbuf->state.gfx.render.fb.nr_samples); } if (!inherits_render_ctx(cmdbuf)) { diff --git a/src/panfrost/vulkan/jm/panvk_vX_cmd_draw.c b/src/panfrost/vulkan/jm/panvk_vX_cmd_draw.c index f7bbfd8c53c..c5d0a722b95 100644 --- a/src/panfrost/vulkan/jm/panvk_vX_cmd_draw.c +++ b/src/panfrost/vulkan/jm/panvk_vX_cmd_draw.c @@ -1298,7 +1298,7 @@ prepare_draw(struct panvk_cmd_buffer *cmdbuf, struct panvk_draw_data *draw) } if (!rs->rasterizer_discard_enable) { - const struct pan_fb_info *fbinfo = &cmdbuf->state.gfx.render.fb.info; + const struct pan_fb_layout *fb = &cmdbuf->state.gfx.render.fb.layout; uint32_t *nr_samples = &cmdbuf->state.gfx.render.fb.nr_samples; uint32_t rasterization_samples = cmdbuf->vk.dynamic_graphics_state.ms.rasterization_samples; @@ -1318,8 +1318,8 @@ prepare_draw(struct panvk_cmd_buffer *cmdbuf, struct panvk_draw_data *draw) * XXX: This currently can happen in case we resume a render pass with no * attachements and without any draw as the FBD is emitted when suspending. */ - assert(fbinfo->nr_samples == 0 || - fbinfo->nr_samples == cmdbuf->state.gfx.render.fb.nr_samples); + assert(fb->sample_count == 0 || + fb->sample_count == cmdbuf->state.gfx.render.fb.nr_samples); result = panvk_per_arch(cmd_alloc_fb_desc)(cmdbuf); if (result != VK_SUCCESS) diff --git a/src/panfrost/vulkan/panvk_vX_cmd_draw.c b/src/panfrost/vulkan/panvk_vX_cmd_draw.c index 02d29a2ebb6..b128f70f15e 100644 --- a/src/panfrost/vulkan/panvk_vX_cmd_draw.c +++ b/src/panfrost/vulkan/panvk_vX_cmd_draw.c @@ -553,24 +553,31 @@ panvk_per_arch(cmd_init_render_state)(struct panvk_cmd_buffer *cmdbuf, void panvk_per_arch(cmd_select_tile_size)(struct panvk_cmd_buffer *cmdbuf) { - struct pan_fb_info *fbinfo = &cmdbuf->state.gfx.render.fb.info; + struct panvk_rendering_state *render = &cmdbuf->state.gfx.render; + struct pan_fb_layout *fb = &render->fb.layout; /* In case we never emitted tiler/framebuffer descriptors, we emit the * current sample count and compute tile size */ - if (fbinfo->nr_samples == 0) { - fbinfo->nr_samples = cmdbuf->state.gfx.render.fb.nr_samples; - GENX(pan_select_tile_size)(fbinfo); + assert(fb->sample_count == render->fb.info.nr_samples); + if (fb->sample_count == 0) { + fb->sample_count = render->fb.nr_samples; + render->fb.info.nr_samples = render->fb.nr_samples; + + GENX(pan_select_fb_tile_size)(fb); #if PAN_ARCH != 6 - if (fbinfo->cbuf_allocation > fbinfo->tile_buf_budget) { + if (fb->tile_rt_alloc_B > fb->tile_rt_budget_B) { vk_perf(VK_LOG_OBJS(&cmdbuf->vk.base), "Using too much tile-memory, disabling pipelining"); } #endif + + render->fb.info.tile_size = fb->tile_size_px; + render->fb.info.cbuf_allocation = fb->tile_rt_alloc_B; } else { /* In case we already emitted tiler/framebuffer descriptors, we ensure * that the sample count didn't change (this should never happen) */ - assert(fbinfo->nr_samples == cmdbuf->state.gfx.render.fb.nr_samples); + assert(fb->sample_count == render->fb.nr_samples); } }