mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-31 16:20:13 +01:00
freedreno/drm/virtio: Split up large uploads
Might be useful if host cached mmaps.. but OTOH we don't want to burn up address space. Signed-off-by: Rob Clark <robdclark@chromium.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16086>
This commit is contained in:
parent
0aab310439
commit
e42cea4db6
1 changed files with 15 additions and 2 deletions
|
|
@ -183,7 +183,7 @@ virtio_bo_set_name(struct fd_bo *bo, const char *fmt, va_list ap)
|
|||
}
|
||||
|
||||
static void
|
||||
virtio_bo_upload(struct fd_bo *bo, void *src, unsigned len)
|
||||
bo_upload(struct fd_bo *bo, unsigned off, void *src, unsigned len)
|
||||
{
|
||||
unsigned req_len = sizeof(struct msm_ccmd_gem_upload_req) + align(len, 4);
|
||||
|
||||
|
|
@ -193,7 +193,7 @@ virtio_bo_upload(struct fd_bo *bo, void *src, unsigned len)
|
|||
req->hdr = MSM_CCMD(GEM_UPLOAD, req_len);
|
||||
req->res_id = to_virtio_bo(bo)->res_id;
|
||||
req->pad = 0;
|
||||
req->off = 0;
|
||||
req->off = off;
|
||||
req->len = len;
|
||||
|
||||
memcpy(req->payload, src, len);
|
||||
|
|
@ -201,6 +201,19 @@ virtio_bo_upload(struct fd_bo *bo, void *src, unsigned len)
|
|||
virtio_execbuf(bo->dev, &req->hdr, false);
|
||||
}
|
||||
|
||||
static void
|
||||
virtio_bo_upload(struct fd_bo *bo, void *src, unsigned len)
|
||||
{
|
||||
unsigned off = 0;
|
||||
while (len > 0) {
|
||||
unsigned sz = MIN2(len, 0x1000);
|
||||
bo_upload(bo, off, src, sz);
|
||||
off += sz;
|
||||
src += sz;
|
||||
len -= sz;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
set_iova(struct fd_bo *bo, uint64_t iova)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue