}
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
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);
* 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?
}
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);
/* 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 *