Mesa (main): freedreno/drm/virtio: Split up large uploads

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Apr 27 23:33:33 UTC 2022


Module: Mesa
Branch: main
Commit: e42cea4db6721d0eb329091fbe79dd27915a842f
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=e42cea4db6721d0eb329091fbe79dd27915a842f

Author: Rob Clark <robdclark at chromium.org>
Date:   Mon Apr 18 16:18:48 2022 -0700

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 at chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16086>

---

 src/freedreno/drm/virtio/virtio_bo.c | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/src/freedreno/drm/virtio/virtio_bo.c b/src/freedreno/drm/virtio/virtio_bo.c
index 2fc7cb079bc..b05964cc330 100644
--- a/src/freedreno/drm/virtio/virtio_bo.c
+++ b/src/freedreno/drm/virtio/virtio_bo.c
@@ -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)
 {



More information about the mesa-commit mailing list