diff options
Diffstat (limited to 'libdrm/glamo')
-rw-r--r-- | libdrm/glamo/glamo_bo_gem.c | 18 | ||||
-rw-r--r-- | libdrm/glamo/glamo_bo_gem.h | 3 |
2 files changed, 20 insertions, 1 deletions
diff --git a/libdrm/glamo/glamo_bo_gem.c b/libdrm/glamo/glamo_bo_gem.c index 2cd95c46..38a4436f 100644 --- a/libdrm/glamo/glamo_bo_gem.c +++ b/libdrm/glamo/glamo_bo_gem.c @@ -316,3 +316,21 @@ int glamo_gem_name_buffer(struct glamo_bo *bo, uint32_t *name) *name = flink.name; return 0; } + +int glamo_bo_subdata(struct glamo_bo *bo, unsigned long offset, + unsigned long size, const void *data) +{ + int ret; + + if (size == 0 || data == NULL) + return 0; + + ret = bo_map(bo, 1); + if ( ret ) return ret; + + memcpy((unsigned char *)bo->virtual + offset, data, size); + + bo_unmap(bo); + + return 0; +} diff --git a/libdrm/glamo/glamo_bo_gem.h b/libdrm/glamo/glamo_bo_gem.h index 2f3e19bc..05b5fb9d 100644 --- a/libdrm/glamo/glamo_bo_gem.h +++ b/libdrm/glamo/glamo_bo_gem.h @@ -38,5 +38,6 @@ struct glamo_bo_manager *glamo_bo_manager_gem_ctor(int fd); void glamo_bo_manager_gem_dtor(struct glamo_bo_manager *bom); int glamo_gem_name_buffer(struct glamo_bo *bo, uint32_t *name); uint32_t glamo_gem_get_name(struct glamo_bo *bo); - +extern int glamo_bo_subdata(struct glamo_bo *bo, unsigned long offset, + unsigned long size, const void *data); #endif |