On 12/02/2014 01:40 AM, Matt Roper wrote:
All plane update functions need to unpin the old framebuffer when
flipping to a new one. Pull this logic into a separate function to ease
the integration with atomic plane helpers.
v2: Don't wait for vblank if we don't have an old fb to cleanup (Ander)
Signed-off-by: Matt Roper <matthew.d.ro...@intel.com>
---
drivers/gpu/drm/i915/intel_display.c | 59 ++++++++++++++++++++++++------------
drivers/gpu/drm/i915/intel_drv.h | 2 ++
drivers/gpu/drm/i915/intel_sprite.c | 27 ++++++-----------
3 files changed, 51 insertions(+), 37 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_display.c
b/drivers/gpu/drm/i915/intel_display.c
index f48faaa..98e4fbf 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
[...]
@@ -12120,6 +12134,13 @@ intel_cursor_plane_update(struct drm_plane *plane,
struct drm_crtc *crtc,
intel_commit_cursor_plane(plane, &state);
+ if (fb != old_fb) {
+ if (intel_crtc->active)
+ intel_wait_for_vblank(dev, intel_crtc->pipe);
+ if (old_fb)
+ intel_cleanup_plane_fb(plane, old_fb);
+ }
+
return 0;
}
We're still waiting for vblank when obj is NULL here.
[...]
diff --git a/drivers/gpu/drm/i915/intel_sprite.c
b/drivers/gpu/drm/i915/intel_sprite.c
index 5d8c2e0..152a32d 100644
--- a/drivers/gpu/drm/i915/intel_sprite.c
+++ b/drivers/gpu/drm/i915/intel_sprite.c
[...]
@@ -1390,6 +1373,14 @@ intel_update_plane(struct drm_plane *plane, struct
drm_crtc *crtc,
}
intel_commit_sprite_plane(plane, &state);
+
+ if (fb != old_fb) {
+ if (intel_crtc->active)
+ intel_wait_for_vblank(dev, intel_crtc->pipe);
+ if (old_fb)
+ intel_cleanup_plane_fb(plane, old_fb);
+ }
+
And also here.
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx