+ memset(&drv_data, 0, sizeof(drv_data));
+ drv_data.use_flags = gbm_convert_usage(usage);
+ switch (type) {
+ case GBM_BO_IMPORT_FD:
+ gbm_format = fd_data->format;
+ drv_data.width = fd_data->width;
+ drv_data.height = fd_data->height;
+ drv_data.format = fd_data->format;
+ drv_data.fds[0] = fd_data->fd;
+ drv_data.strides[0] = fd_data->stride;
+ break;
+ case GBM_BO_IMPORT_FD_PLANAR:
+ gbm_format = fd_planar_data->format;
+ drv_data.width = fd_planar_data->width;
+ drv_data.height = fd_planar_data->height;
+ drv_data.format = fd_planar_data->format;
+ num_planes = drv_num_planes_from_format(drv_data.format);
+
+ assert(num_planes);
+
+ for (i = 0; i < num_planes; i++) {
+ drv_data.fds[i] = fd_planar_data->fds[i];
+ drv_data.offsets[i] = fd_planar_data->offsets[i];
+ drv_data.strides[i] = fd_planar_data->strides[i];
+ drv_data.format_modifiers[i] = fd_planar_data->format_modifiers[i];
+ }
+
+ for (i = num_planes; i < GBM_MAX_PLANES; i++)
+ drv_data.fds[i] = -1;
+
+ break;
+ default: