summaryrefslogtreecommitdiffstats
path: root/gralloc_drm_radeon.c
diff options
context:
space:
mode:
authorChia-I Wu <olvaffe@gmail.com>2011-07-18 17:47:28 +0800
committerChia-I Wu <olvaffe@gmail.com>2011-07-18 18:25:50 +0800
commitfdf2a36636f7b405679e4cf9c7743a089bdf8ef8 (patch)
tree29ef341a4970e9402bf68f2b141f3f7ae93f83ae /gralloc_drm_radeon.c
parentaba06d53c53afaa0fa28829af2ff679b0c123e91 (diff)
downloadexternal_drm_gralloc-fdf2a36636f7b405679e4cf9c7743a089bdf8ef8.zip
external_drm_gralloc-fdf2a36636f7b405679e4cf9c7743a089bdf8ef8.tar.gz
external_drm_gralloc-fdf2a36636f7b405679e4cf9c7743a089bdf8ef8.tar.bz2
radeon: zero the newly allocated bo
Diffstat (limited to 'gralloc_drm_radeon.c')
-rw-r--r--gralloc_drm_radeon.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/gralloc_drm_radeon.c b/gralloc_drm_radeon.c
index ecb0f6e..ef5280d 100644
--- a/gralloc_drm_radeon.c
+++ b/gralloc_drm_radeon.c
@@ -245,6 +245,16 @@ static struct radeon_bo *radeon_alloc(struct radeon_info *info,
return rbo;
}
+static void radeon_zero(struct radeon_info *info,
+ struct radeon_bo *rbo)
+{
+ /* should use HW clear... */
+ if (!radeon_bo_map(rbo, 1)) {
+ memset(rbo->ptr, 0, rbo->size);
+ radeon_bo_unmap(rbo);
+ }
+}
+
static struct gralloc_drm_bo_t *
drm_gem_radeon_alloc(struct gralloc_drm_drv_t *drv, struct gralloc_drm_handle_t *handle)
{
@@ -271,6 +281,9 @@ drm_gem_radeon_alloc(struct gralloc_drm_drv_t *drv, struct gralloc_drm_handle_t
free(rbuf);
return NULL;
}
+
+ /* Android expects the buffer to be zeroed */
+ radeon_zero(info, rbuf->rbo);
}
if (handle->usage & GRALLOC_USAGE_HW_FB)