aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas White <taw@bitwiz.org.uk>2009-10-18 22:59:38 +0200
committerThomas White <taw@bitwiz.org.uk>2010-05-23 09:51:34 +0200
commit2724eef7a03f452799a19b0ebc893eb0c75ae3fc (patch)
tree35f6cffc4ee374ac269420b15914f346e8a35100
parent32d8292e57f3e7d9e91f47b5b6ca80c04dfae1b4 (diff)
Add subdata function
-rw-r--r--glamo/glamo_bo_gem.c18
-rw-r--r--glamo/glamo_bo_gem.h3
2 files changed, 20 insertions, 1 deletions
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