From ea1e0acfd04826d196c81d75bc16cde8a623caff Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Wed, 8 May 2019 14:53:47 -0700 Subject: virgl: remove an incorrect check in virgl_res_needs_flush Imagine this resource_copy_region(ctx, dst, ..., src, ...); transfer_map(ctx, src, 0, PIPE_TRANSFER_WRITE, ...); at the beginning of a cmdbuf. We need to flush in transfer_map so that the transfer is not reordered before the resource copy. The check for "vctx->num_draws == 0 && vctx->num_compute == 0" is not enough. Removing the optimization entirely. Because of the more precise resource tracking in the previous commit, I hope the performance impact is minimized. We will have to go with perfect resource tracking, or attempt a more limited optimization, if there are specific cases we really need to optimize for. Signed-off-by: Chia-I Wu Reviewed-by: Gurchetan Singh --- src/gallium/drivers/virgl/virgl_resource.c | 15 --------------- 1 file changed, 15 deletions(-) (limited to 'src') diff --git a/src/gallium/drivers/virgl/virgl_resource.c b/src/gallium/drivers/virgl/virgl_resource.c index 5d639ce64fd..6e23687b594 100644 --- a/src/gallium/drivers/virgl/virgl_resource.c +++ b/src/gallium/drivers/virgl/virgl_resource.c @@ -32,8 +32,6 @@ * * - synchronization is disabled * - the resource is not referenced by the current cmdbuf - * - the current cmdbuf has no draw/compute command that accesses the - * resource (XXX there are also clear or blit commands) */ static bool virgl_res_needs_flush(struct virgl_context *vctx, struct virgl_transfer *trans) @@ -47,19 +45,6 @@ static bool virgl_res_needs_flush(struct virgl_context *vctx, if (!vws->res_is_referenced(vws, vctx->cbuf, res->hw_res)) return false; - if (res->clean_mask & (1 << trans->base.level)) { - /* XXX Consider - * - * glCopyBufferSubData(src, dst, ...); - * glBufferSubData(src, ...); - * - * at the beginning of a cmdbuf. glBufferSubData will be incorrectly - * reordered before glCopyBufferSubData. - */ - if (vctx->num_draws == 0 && vctx->num_compute == 0) - return false; - } - return true; } -- cgit v1.2.3