freedreno/drm: Add offset param for fd_bo_upload()
authorRob Clark <robdclark@chromium.org>
Thu, 25 Aug 2022 20:27:22 +0000 (13:27 -0700)
committerMarge Bot <emma+marge@anholt.net>
Fri, 26 Aug 2022 20:48:36 +0000 (20:48 +0000)
Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18258>

src/freedreno/drm/freedreno_bo.c
src/freedreno/drm/freedreno_drmif.h
src/freedreno/drm/freedreno_priv.h
src/freedreno/drm/virtio/virtio_bo.c
src/gallium/drivers/freedreno/ir3/ir3_gallium.c

index 4e98b7b..e0f7565 100644 (file)
@@ -487,14 +487,14 @@ fd_bo_map(struct fd_bo *bo)
 }
 
 void
-fd_bo_upload(struct fd_bo *bo, void *src, unsigned len)
+fd_bo_upload(struct fd_bo *bo, void *src, unsigned off, unsigned len)
 {
    if (bo->funcs->upload) {
-      bo->funcs->upload(bo, src, len);
+      bo->funcs->upload(bo, src, off, len);
       return;
    }
 
-   memcpy(bo_map(bo), src, len);
+   memcpy((uint8_t *)bo_map(bo) + off, src, len);
 }
 
 bool
index 39590c1..7d5e970 100644 (file)
@@ -219,7 +219,7 @@ uint32_t fd_bo_handle(struct fd_bo *bo);
 int fd_bo_dmabuf(struct fd_bo *bo);
 uint32_t fd_bo_size(struct fd_bo *bo);
 void *fd_bo_map(struct fd_bo *bo);
-void fd_bo_upload(struct fd_bo *bo, void *src, unsigned len);
+void fd_bo_upload(struct fd_bo *bo, void *src, unsigned off, unsigned len);
 bool fd_bo_prefer_upload(struct fd_bo *bo, unsigned len);
 int fd_bo_cpu_prep(struct fd_bo *bo, struct fd_pipe *pipe, uint32_t op);
 void fd_bo_cpu_fini(struct fd_bo *bo);
index d12c98e..fceca64 100644 (file)
@@ -312,7 +312,7 @@ struct fd_bo_funcs {
     * Optional, copy data into bo, falls back to mmap+memcpy.  If not
     * implemented, it must be possible to mmap all buffers
     */
-   void (*upload)(struct fd_bo *bo, void *src, unsigned len);
+   void (*upload)(struct fd_bo *bo, void *src, unsigned off, unsigned len);
 
    /**
     * Optional, if upload is supported, should upload be preferred?
index 253f905..b04733b 100644 (file)
@@ -202,9 +202,8 @@ bo_upload(struct fd_bo *bo, unsigned off, void *src, unsigned len)
 }
 
 static void
-virtio_bo_upload(struct fd_bo *bo, void *src, unsigned len)
+virtio_bo_upload(struct fd_bo *bo, void *src, unsigned off, unsigned len)
 {
-   unsigned off = 0;
    while (len > 0) {
       unsigned sz = MIN2(len, 0x1000);
       bo_upload(bo, off, src, sz);
index e74ae81..57788c2 100644 (file)
@@ -113,7 +113,7 @@ upload_shader_variant(struct ir3_shader_variant *v)
    /* Always include shaders in kernel crash dumps. */
    fd_bo_mark_for_dump(v->bo);
 
-   fd_bo_upload(v->bo, v->bin, v->info.size);
+   fd_bo_upload(v->bo, v->bin, 0, v->info.size);
 }
 
 struct ir3_shader_variant *