v3dv: do not automatically emit a binner flush when finishing jobs
authorIago Toral Quiroga <itoral@igalia.com>
Thu, 9 Jan 2020 08:31:01 +0000 (09:31 +0100)
committerMarge Bot <eric+marge@anholt.net>
Tue, 13 Oct 2020 21:21:26 +0000 (21:21 +0000)
Binner flushes should be emitted naturally at the end of each draw,
if we are finishing a job and it doesn't have the binner flush, it
probably means that we have bogus emission code somewhere.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766>

src/broadcom/vulkan/v3dv_cmd_buffer.c

index b38f93b..03ff119 100644 (file)
@@ -177,10 +177,8 @@ struct v3dv_job *
 v3dv_cmd_buffer_start_job(struct v3dv_cmd_buffer *cmd_buffer)
 {
    /* Ensure we are not starting a new job without finishing a previous one */
-   if (cmd_buffer->state.job != NULL) {
-      emit_binning_flush(cmd_buffer->state.job);
+   if (cmd_buffer->state.job != NULL)
       v3dv_cmd_buffer_finish_job(cmd_buffer);
-   }
 
    assert(cmd_buffer->state.job == NULL);
    struct v3dv_job *job = vk_zalloc(&cmd_buffer->device->alloc,
@@ -1079,7 +1077,6 @@ v3dv_EndCommandBuffer(VkCommandBuffer commandBuffer)
    /* We get here if we recorded commands after the last render pass in the
     * command buffer. Make sure we finish this last job. */
    assert(v3dv_cl_offset(&job->bcl) != 0);
-   emit_binning_flush(job);
    v3dv_cmd_buffer_finish_job(cmd_buffer);
 
    return VK_SUCCESS;