virgl: unmap uploader at flush time
authorGurchetan Singh <gurchetansingh@chromium.org>
Tue, 8 Jan 2019 02:19:03 +0000 (18:19 -0800)
committerGert Wollny <gert.wollny@collabora.com>
Fri, 15 Feb 2019 10:19:04 +0000 (11:19 +0100)
This should save some memory when allocating and freeing transfers.

Reviewed-by: Gert Wollny <gert.wollny@collabora.com>
src/gallium/drivers/virgl/virgl_context.c

index 9a91df49fe80831e23a422c9c162d049eeb7537d..41201c59d1c274174954786442422660180abbd3 100644 (file)
@@ -730,8 +730,6 @@ static void virgl_draw_vbo(struct pipe_context *ctx,
            }
    }
 
-   u_upload_unmap(vctx->uploader);
-
    vctx->num_draws++;
    virgl_hw_set_vertex_buffers(vctx);
    if (info.index_size)
@@ -749,6 +747,9 @@ static void virgl_flush_eq(struct virgl_context *ctx, void *closure,
    struct virgl_screen *rs = virgl_screen(ctx->base.screen);
    int out_fence_fd = -1;
 
+   if (ctx->num_draws)
+      u_upload_unmap(ctx->uploader);
+
    /* send the buffer to the remote side for decoding */
    ctx->num_transfers = ctx->num_draws = 0;