diff options
author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2016-06-08 08:19:16 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2016-07-13 06:56:20 -0400 |
commit | 11c21e73f848844d439cbccb42a1018b8c560e5c (patch) | |
tree | 6e0563aca3d269d7f8383e58a003cd7555f830ac /drivers/gpu/drm/drm_crtc.c | |
parent | cf47a07ab8f65d1d1fdbb72f4c38efe293f7a623 (diff) |
drm: Resurrect atomic rmfb code
This was somehow lost between v3 and the merged version in Maarten's
patch merged as:
commit f2d580b9a8149735cbc4b59c4a8df60173658140
Author: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Date: Wed May 4 14:38:26 2016 +0200
drm/core: Do not preserve framebuffer on rmfb, v4.
Actual code copied from Maarten's patch, but with the slight change to
just use dev->mode_config.funcs->atomic_commit to decide whether to
use the atomic path or not.
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/1465388359-8070-24-git-send-email-daniel.vetter@ffwll.ch
Diffstat (limited to 'drivers/gpu/drm/drm_crtc.c')
-rw-r--r-- | drivers/gpu/drm/drm_crtc.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c index 578bd6f5ce83..9d3f80efc9cc 100644 --- a/drivers/gpu/drm/drm_crtc.c +++ b/drivers/gpu/drm/drm_crtc.c | |||
@@ -613,6 +613,11 @@ void drm_framebuffer_remove(struct drm_framebuffer *fb) | |||
613 | * in this manner. | 613 | * in this manner. |
614 | */ | 614 | */ |
615 | if (drm_framebuffer_read_refcount(fb) > 1) { | 615 | if (drm_framebuffer_read_refcount(fb) > 1) { |
616 | if (dev->mode_config.funcs->atomic_commit) { | ||
617 | drm_atomic_remove_fb(fb); | ||
618 | goto out; | ||
619 | } | ||
620 | |||
616 | drm_modeset_lock_all(dev); | 621 | drm_modeset_lock_all(dev); |
617 | /* remove from any CRTC */ | 622 | /* remove from any CRTC */ |
618 | drm_for_each_crtc(crtc, dev) { | 623 | drm_for_each_crtc(crtc, dev) { |
@@ -630,6 +635,7 @@ void drm_framebuffer_remove(struct drm_framebuffer *fb) | |||
630 | drm_modeset_unlock_all(dev); | 635 | drm_modeset_unlock_all(dev); |
631 | } | 636 | } |
632 | 637 | ||
638 | out: | ||
633 | drm_framebuffer_unreference(fb); | 639 | drm_framebuffer_unreference(fb); |
634 | } | 640 | } |
635 | EXPORT_SYMBOL(drm_framebuffer_remove); | 641 | EXPORT_SYMBOL(drm_framebuffer_remove); |