virgl: patch transfers into the cmdbuf

When a transfer is added to the transfer queue, we reserve some
space in the cmdbuf.  When the transfer queue is flushed, we patch
the reserved space with the final transfer command for each
transfer.  This allows us to get rid of VIRGL_MAX_TBUF_DWORDS.

Our internal use of u_upload is special.  We expect it to be mapped
persistently and coherently until we flush.  The space for the
transfer command must be reserved at map time rather than at unmap

Signed-off-by: Chia-I Wu <>
10 jobs for !1295 with virgl-transfer-queue-patching in 10 minutes and 20 seconds (queued for 1 second)
merge request