Module: Mesa
Branch: main
Commit: 4353b0ad722c5510343cd32d7240dbaeeeeb94da
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=4353b0ad722c5510343cd32d7240dbaeeeeb94da

Author: Samuel Pitoiset <samuel.pitoi...@gmail.com>
Date:   Thu Dec 14 16:15:09 2023 +0100

radv: move emitting the fb mip tail workaround when rendering begins

It doesn't have to be emitted in the draw path.

Signed-off-by: Samuel Pitoiset <samuel.pitoi...@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26589>

---

 src/amd/vulkan/radv_cmd_buffer.c | 10 ++--------
 1 file changed, 2 insertions(+), 8 deletions(-)

diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c
index 17fef8557f9..ed2b31a3304 100644
--- a/src/amd/vulkan/radv_cmd_buffer.c
+++ b/src/amd/vulkan/radv_cmd_buffer.c
@@ -7450,7 +7450,6 @@ radv_CmdExecuteCommands(VkCommandBuffer commandBuffer, 
uint32_t commandBufferCou
           * has been recorded without a framebuffer, otherwise
           * fast color/depth clears can't work.
           */
-         radv_emit_fb_mip_change_flush(primary);
          radv_emit_framebuffer_state(primary);
       }
 
@@ -7801,6 +7800,8 @@ radv_CmdBeginRendering(VkCommandBuffer commandBuffer, 
const VkRenderingInfo *pRe
                           S_028208_BR_X(render->area.offset.x + 
render->area.extent.width) |
                              S_028208_BR_Y(render->area.offset.y + 
render->area.extent.height));
 
+   radv_emit_fb_mip_change_flush(cmd_buffer);
+
    if (!(pRenderingInfo->flags & VK_RENDERING_RESUMING_BIT))
       radv_cmd_buffer_clear_rendering(cmd_buffer, pRenderingInfo);
 }
@@ -9015,10 +9016,6 @@ radv_before_draw(struct radv_cmd_buffer *cmd_buffer, 
const struct radv_draw_info
       cmd_buffer->state.last_index_type = -1;
    }
 
-   /* Need to apply this workaround early as it can set flush flags. */
-   if (cmd_buffer->state.dirty & RADV_CMD_DIRTY_FRAMEBUFFER)
-      radv_emit_fb_mip_change_flush(cmd_buffer);
-
    /* Use optimal packet order based on whether we need to sync the
     * pipeline.
     */
@@ -9097,9 +9094,6 @@ radv_before_taskmesh_draw(struct radv_cmd_buffer 
*cmd_buffer, const struct radv_
    ASSERTED const unsigned ace_cdw_max =
       !ace_cs ? 0 : radeon_check_space(cmd_buffer->device->ws, ace_cs, 4096 + 
128 * (drawCount - 1));
 
-   if (cmd_buffer->state.dirty & RADV_CMD_DIRTY_FRAMEBUFFER)
-      radv_emit_fb_mip_change_flush(cmd_buffer);
-
    radv_emit_all_graphics_states(cmd_buffer, info);
 
    si_emit_cache_flush(cmd_buffer);

Reply via email to