From 2724eef7a03f452799a19b0ebc893eb0c75ae3fc Mon Sep 17 00:00:00 2001 From: Thomas White Date: Sun, 18 Oct 2009 22:59:38 +0200 Subject: Add subdata function --- glamo/glamo_bo_gem.c | 18 ++++++++++++++++++ glamo/glamo_bo_gem.h | 3 ++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/glamo/glamo_bo_gem.c b/glamo/glamo_bo_gem.c index 2cd95c46..38a4436f 100644 --- a/glamo/glamo_bo_gem.c +++ b/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/glamo/glamo_bo_gem.h b/glamo/glamo_bo_gem.h index 2f3e19bc..05b5fb9d 100644 --- a/glamo/glamo_bo_gem.h +++ b/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 -- cgit v1.2.3