minigbm: add a default (*bo_unmap) implementation
The (*bo_unmap) function is responsible for unmapping the buffer and cleaning up any data allocated during (*bo_map). Previously, we called munmap in drv_bo_unmap(), which caused some confusion. This method is cleaner. BUG=chromium:764871 TEST=emerge-betty minigbm Change-Id: I4dc20cd6b15e79bce21d33f03ebc84480c582981 Reviewed-on: https://chromium-review.googlesource.com/671693 Commit-Ready: Gurchetan Singh <gurchetansingh@chromium.org> Tested-by: Gurchetan Singh <gurchetansingh@chromium.org> Reviewed-by: Joe Kniss <djmk@google.com> Reviewed-by: Tomasz Figa <tfiga@chromium.org>
This commit is contained in:
parent
55525f5735
commit
ba6bd503a8
15 changed files with 19 additions and 4 deletions
1
amdgpu.c
1
amdgpu.c
|
|
@ -436,6 +436,7 @@ struct backend backend_amdgpu = {
|
|||
.bo_destroy = drv_gem_bo_destroy,
|
||||
.bo_import = drv_prime_bo_import,
|
||||
.bo_map = amdgpu_bo_map,
|
||||
.bo_unmap = drv_bo_munmap,
|
||||
.resolve_format = amdgpu_resolve_format,
|
||||
};
|
||||
|
||||
|
|
|
|||
1
cirrus.c
1
cirrus.c
|
|
@ -29,4 +29,5 @@ struct backend backend_cirrus = {
|
|||
.bo_destroy = drv_dumb_bo_destroy,
|
||||
.bo_import = drv_prime_bo_import,
|
||||
.bo_map = drv_dumb_bo_map,
|
||||
.bo_unmap = drv_bo_munmap,
|
||||
};
|
||||
|
|
|
|||
5
drv.c
5
drv.c
|
|
@ -429,10 +429,7 @@ int drv_bo_unmap(struct bo *bo, struct map_info *data)
|
|||
pthread_mutex_lock(&bo->drv->driver_lock);
|
||||
|
||||
if (!--data->refcount) {
|
||||
if (bo->drv->backend->bo_unmap)
|
||||
ret = bo->drv->backend->bo_unmap(bo, data);
|
||||
else
|
||||
ret = munmap(data->addr, data->length);
|
||||
ret = bo->drv->backend->bo_unmap(bo, data);
|
||||
drmHashDelete(bo->drv->map_table, data->handle);
|
||||
free(data);
|
||||
}
|
||||
|
|
|
|||
1
evdi.c
1
evdi.c
|
|
@ -28,4 +28,5 @@ struct backend backend_evdi = {
|
|||
.bo_destroy = drv_dumb_bo_destroy,
|
||||
.bo_import = drv_prime_bo_import,
|
||||
.bo_map = drv_dumb_bo_map,
|
||||
.bo_unmap = drv_bo_munmap,
|
||||
};
|
||||
|
|
|
|||
1
exynos.c
1
exynos.c
|
|
@ -112,6 +112,7 @@ struct backend backend_exynos = {
|
|||
.bo_destroy = drv_gem_bo_destroy,
|
||||
.bo_import = drv_prime_bo_import,
|
||||
.bo_map = drv_dumb_bo_map,
|
||||
.bo_unmap = drv_bo_munmap,
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
1
gma500.c
1
gma500.c
|
|
@ -28,4 +28,5 @@ struct backend backend_gma500 = {
|
|||
.bo_destroy = drv_dumb_bo_destroy,
|
||||
.bo_import = drv_prime_bo_import,
|
||||
.bo_map = drv_dumb_bo_map,
|
||||
.bo_unmap = drv_bo_munmap,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -313,6 +313,11 @@ void *drv_dumb_bo_map(struct bo *bo, struct map_info *data, size_t plane, int pr
|
|||
return mmap(0, data->length, prot, MAP_SHARED, bo->drv->fd, map_dumb.offset);
|
||||
}
|
||||
|
||||
int drv_bo_munmap(struct bo *bo, struct map_info *data)
|
||||
{
|
||||
return munmap(data->addr, data->length);
|
||||
}
|
||||
|
||||
uintptr_t drv_get_reference_count(struct driver *drv, struct bo *bo, size_t plane)
|
||||
{
|
||||
void *count;
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ int drv_dumb_bo_destroy(struct bo *bo);
|
|||
int drv_gem_bo_destroy(struct bo *bo);
|
||||
int drv_prime_bo_import(struct bo *bo, struct drv_import_fd_data *data);
|
||||
void *drv_dumb_bo_map(struct bo *bo, struct map_info *data, size_t plane, int prot);
|
||||
int drv_bo_munmap(struct bo *bo, struct map_info *data);
|
||||
uintptr_t drv_get_reference_count(struct driver *drv, struct bo *bo, size_t plane);
|
||||
void drv_increment_reference_count(struct driver *drv, struct bo *bo, size_t plane);
|
||||
void drv_decrement_reference_count(struct driver *drv, struct bo *bo, size_t plane);
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ struct backend backend_marvell = {
|
|||
.bo_destroy = drv_dumb_bo_destroy,
|
||||
.bo_import = drv_prime_bo_import,
|
||||
.bo_map = drv_dumb_bo_map,
|
||||
.bo_unmap = drv_bo_munmap,
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -28,4 +28,5 @@ struct backend backend_nouveau = {
|
|||
.bo_destroy = drv_dumb_bo_destroy,
|
||||
.bo_import = drv_prime_bo_import,
|
||||
.bo_map = drv_dumb_bo_map,
|
||||
.bo_unmap = drv_bo_munmap,
|
||||
};
|
||||
|
|
|
|||
1
radeon.c
1
radeon.c
|
|
@ -28,4 +28,5 @@ struct backend backend_radeon = {
|
|||
.bo_destroy = drv_dumb_bo_destroy,
|
||||
.bo_import = drv_prime_bo_import,
|
||||
.bo_map = drv_dumb_bo_map,
|
||||
.bo_unmap = drv_bo_munmap,
|
||||
};
|
||||
|
|
|
|||
1
udl.c
1
udl.c
|
|
@ -28,4 +28,5 @@ struct backend backend_udl = {
|
|||
.bo_destroy = drv_dumb_bo_destroy,
|
||||
.bo_import = drv_prime_bo_import,
|
||||
.bo_map = drv_dumb_bo_map,
|
||||
.bo_unmap = drv_bo_munmap,
|
||||
};
|
||||
|
|
|
|||
1
vc4.c
1
vc4.c
|
|
@ -87,6 +87,7 @@ struct backend backend_vc4 = {
|
|||
.bo_import = drv_prime_bo_import,
|
||||
.bo_destroy = drv_gem_bo_destroy,
|
||||
.bo_map = vc4_bo_map,
|
||||
.bo_unmap = drv_bo_munmap,
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
1
vgem.c
1
vgem.c
|
|
@ -67,5 +67,6 @@ struct backend backend_vgem = {
|
|||
.bo_destroy = drv_dumb_bo_destroy,
|
||||
.bo_import = drv_prime_bo_import,
|
||||
.bo_map = drv_dumb_bo_map,
|
||||
.bo_unmap = drv_bo_munmap,
|
||||
.resolve_format = vgem_resolve_format,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -67,5 +67,6 @@ struct backend backend_virtio_gpu = {
|
|||
.bo_destroy = drv_dumb_bo_destroy,
|
||||
.bo_import = drv_prime_bo_import,
|
||||
.bo_map = drv_dumb_bo_map,
|
||||
.bo_unmap = drv_bo_munmap,
|
||||
.resolve_format = virtio_gpu_resolve_format,
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue