X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=gbm.c;h=935349c3684f12156acf8ac1b1ac47ddb8f73adb;hb=662a9fd2acd72fd73e72110924ea9f350429195d;hp=4b62bbf965c9c4e756caa993f33010b34145e687;hpb=276ec42c58610f0aef7350f836c7b37693b72e00;p=android-x86%2Fexternal-minigbm.git diff --git a/gbm.c b/gbm.c index 4b62bbf..935349c 100644 --- a/gbm.c +++ b/gbm.c @@ -194,13 +194,12 @@ PUBLIC struct gbm_bo *gbm_bo_import(struct gbm_device *gbm, uint32_t type, void uint32_t usage) { struct gbm_bo *bo; - struct drv_import_fd_data drv_data; + struct drv_import_fd_data drv_data = { 0 }; struct gbm_import_fd_data *fd_data = buffer; struct gbm_import_fd_modifier_data *fd_modifier_data = buffer; uint32_t gbm_format; size_t num_planes, i, num_fds; - memset(&drv_data, 0, sizeof(drv_data)); drv_data.use_flags = gbm_convert_usage(usage); switch (type) { case GBM_BO_IMPORT_FD: @@ -210,13 +209,17 @@ PUBLIC struct gbm_bo *gbm_bo_import(struct gbm_device *gbm, uint32_t type, void drv_data.format = fd_data->format; drv_data.fds[0] = fd_data->fd; drv_data.strides[0] = fd_data->stride; + + for (i = 0; i < GBM_MAX_PLANES; ++i) + drv_data.format_modifiers[i] = DRM_FORMAT_MOD_INVALID; break; case GBM_BO_IMPORT_FD_MODIFIER: gbm_format = fd_modifier_data->format; drv_data.width = fd_modifier_data->width; drv_data.height = fd_modifier_data->height; drv_data.format = fd_modifier_data->format; - num_planes = drv_num_planes_from_format(drv_data.format); + num_planes = drv_num_planes_from_modifier(gbm->drv, drv_data.format, + fd_modifier_data->modifier); assert(num_planes); num_fds = fd_modifier_data->num_fds; @@ -259,6 +262,12 @@ PUBLIC struct gbm_bo *gbm_bo_import(struct gbm_device *gbm, uint32_t type, void return bo; } +PUBLIC void *gbm_bo_map(struct gbm_bo *bo, uint32_t x, uint32_t y, uint32_t width, uint32_t height, + uint32_t transfer_flags, uint32_t *stride, void **map_data) +{ + return gbm_bo_map2(bo, x, y, width, height, transfer_flags, stride, map_data, 0); +} + PUBLIC void gbm_bo_unmap(struct gbm_bo *bo, void *map_data) { assert(bo); @@ -389,12 +398,6 @@ PUBLIC int gbm_bo_get_plane_fd(struct gbm_bo *bo, size_t plane) return drv_bo_get_plane_fd(bo->bo, plane); } -PUBLIC void *gbm_bo_map(struct gbm_bo *bo, uint32_t x, uint32_t y, uint32_t width, uint32_t height, - uint32_t transfer_flags, uint32_t *stride, void **map_data, size_t plane) -{ - return gbm_bo_map2(bo, x, y, width, height, transfer_flags, stride, map_data, plane); -} - PUBLIC void *gbm_bo_map2(struct gbm_bo *bo, uint32_t x, uint32_t y, uint32_t width, uint32_t height, uint32_t transfer_flags, uint32_t *stride, void **map_data, int plane) {