X-Git-Url: http://git.osdn.net/view?p=android-x86%2Fexternal-minigbm.git;a=blobdiff_plain;f=mediatek.c;h=1a1061ca68eaa47b36706e1bbb02bfb3a96741ca;hp=b999e281b5dfc33536d6a842f2fce2d8ff9a17ed;hb=refs%2Fheads%2Fpie-x86_intel;hpb=a1892b2800a5847525d010d6245cbcc1776c1bea diff --git a/mediatek.c b/mediatek.c index b999e28..1a1061c 100644 --- a/mediatek.c +++ b/mediatek.c @@ -78,7 +78,7 @@ static int mediatek_bo_create(struct bo *bo, uint32_t width, uint32_t height, ui return 0; } -static void *mediatek_bo_map(struct bo *bo, struct map_info *data, size_t plane, int prot) +static void *mediatek_bo_map(struct bo *bo, struct map_info *data, size_t plane, uint32_t map_flags) { int ret; struct drm_mtk_gem_map_off gem_map; @@ -93,7 +93,8 @@ static void *mediatek_bo_map(struct bo *bo, struct map_info *data, size_t plane, return MAP_FAILED; } - void *addr = mmap(0, bo->total_size, prot, MAP_SHARED, bo->drv->fd, gem_map.offset); + void *addr = mmap(0, bo->total_size, drv_get_prot(map_flags), MAP_SHARED, bo->drv->fd, + gem_map.offset); data->length = bo->total_size; @@ -125,7 +126,7 @@ static int mediatek_bo_unmap(struct bo *bo, struct map_info *data) static int mediatek_bo_flush(struct bo *bo, struct map_info *data) { struct mediatek_private_map_data *priv = data->priv; - if (priv) + if (priv && (data->map_flags & BO_MAP_WRITE)) memcpy(priv->gem_addr, priv->cached_addr, bo->total_size); return 0;