drm: drop DRM_IOCTL_MODE_REPLACEFB, add+remove works just as well.

The replace fb ioctl replaces the backing buffer object for a modesetting
framebuffer object.  This can be acheived by just creating a new
framebuffer backed by the new buffer object, setting that for the crtcs
in question and then removing the old framebuffer object.

Signed-off-by: Kristian Hogsberg <krh@redhat.com>
Acked-by: Jakob Bornecrantz <jakob@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
Kristian H�gsberg
2008-12-18 13:14:37 +10:00
committed by Dave Airlie
parent e0c8463a8b
commit 0c7c266475
5 changed files with 0 additions and 74 deletions

View File

@@ -1528,38 +1528,7 @@ intel_user_framebuffer_create(struct drm_device *dev,
return fb;
}
static int intel_insert_new_fb(struct drm_device *dev,
struct drm_file *file_priv,
struct drm_framebuffer *fb,
struct drm_mode_fb_cmd *mode_cmd)
{
struct intel_framebuffer *intel_fb;
struct drm_gem_object *obj;
struct drm_crtc *crtc;
intel_fb = to_intel_framebuffer(fb);
obj = drm_gem_object_lookup(dev, file_priv, mode_cmd->handle);
if (!obj)
return -EINVAL;
intel_fb->obj = obj;
drm_gem_object_unreference(intel_fb->obj);
drm_helper_mode_fill_fb_struct(fb, mode_cmd);
mutex_unlock(&dev->struct_mutex);
list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
if (crtc->fb == fb) {
struct drm_crtc_helper_funcs *crtc_funcs = crtc->helper_private;
crtc_funcs->mode_set_base(crtc, crtc->x, crtc->y);
}
}
return 0;
}
static const struct drm_mode_config_funcs intel_mode_funcs = {
.resize_fb = intel_insert_new_fb,
.fb_create = intel_user_framebuffer_create,
.fb_changed = intelfb_probe,
};