]> git.baikalelectronics.ru Git - kernel.git/commit
drm: Resurrect atomic rmfb code, v3
authorMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
Wed, 25 Jan 2017 11:30:47 +0000 (12:30 +0100)
committerJani Nikula <jani.nikula@intel.com>
Wed, 15 Feb 2017 13:40:57 +0000 (15:40 +0200)
commit107644b964d004fa402172b16b1b0dc685fa274a
treeaf56aa8c0edc37d11e55f7fe82aa48a5dbdfeaf4
parent5d561770c957622860e928267ac5cd7fd42c59a0
drm: Resurrect atomic rmfb code, v3

This was somehow lost between v3 and the merged version in Maarten's
patch merged as:

commit 37021cfda87d09a711fbc100ab5fb849380b4be7
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.

This introduces a slight behavioral change to rmfb. Instead of
disabling a crtc when the primary plane is disabled, we try to
preserve it.

Apart from old versions of the vmwgfx xorg driver, there is
nothing depending on rmfb disabling a crtc. Since vmwgfx is
a legacy driver we can safely only disable the plane with atomic.

If this commit is rejected by the driver then we will still fall
back to the old behavior and turn off the crtc.

v2:
- Remove plane->fb assignment, done by drm_atomic_clean_old_fb.
- Add WARN_ON when atomic_remove_fb fails.
- Always call drm_atomic_state_put.
v3:
- Use drm_drv_uses_atomic_modeset
- Handle the case where the first plane-disable-only commit fails
  with -EINVAL. Some drivers do not support this, fall back to
  disabling all crtc's in this case.

Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/66fc3da5-697b-1613-0a67-a5293209f0dc@linux.intel.com
drivers/gpu/drm/drm_atomic.c
drivers/gpu/drm/drm_crtc_internal.h
drivers/gpu/drm/drm_framebuffer.c