struct virgl_transfer *trans;
void *ptr;
bool readback;
- bool doflushwait = false;
+ bool flush = false;
trans = virgl_resource_create_transfer(&vctx->transfer_pool, resource,
&vbuf->metadata, level, usage, box);
if (usage & PIPE_TRANSFER_READ)
- doflushwait = true;
+ flush = true;
else
- doflushwait = virgl_res_needs_flush_wait(vctx, trans);
+ flush = virgl_res_needs_flush(vctx, trans);
- if (doflushwait)
+ if (flush)
ctx->flush(ctx, NULL, 0);
readback = virgl_res_needs_readback(vctx, vbuf, usage, 0);
- if (readback)
+ if (readback) {
vs->vws->transfer_get(vs->vws, vbuf->hw_res, box, trans->base.stride,
trans->l_stride, trans->offset, level);
- if (!(usage & PIPE_TRANSFER_UNSYNCHRONIZED))
- doflushwait = true;
-
- if (doflushwait || readback)
vs->vws->resource_wait(vs->vws, vbuf->hw_res);
+ }
ptr = vs->vws->resource_map(vs->vws, vbuf->hw_res);
if (!ptr) {