static int bochsfb_create_object(struct bochs_device *bochs, const struct drm_mode_fb_cmd2 *mode_cmd, struct drm_gem_object **gobj_p) { struct drm_device *dev = bochs->dev; struct drm_gem_object *gobj; u32 size; int ret = 0; size = mode_cmd->pitches[0] * mode_cmd->height; ret = bochs_gem_create(dev, size, true, &gobj); if (ret) return ret; *gobj_p = gobj; return ret; }
int bochs_dumb_create(struct drm_file *file, struct drm_device *dev, struct drm_mode_create_dumb *args) { struct drm_gem_object *gobj; u32 handle; int ret; args->pitch = args->width * ((args->bpp + 7) / 8); args->size = args->pitch * args->height; ret = bochs_gem_create(dev, args->size, false, &gobj); if (ret) return ret; ret = drm_gem_handle_create(file, gobj, &handle); drm_gem_object_unreference_unlocked(gobj); if (ret) return ret; args->handle = handle; return 0; }