diff mbox

[16/27] drm/i915: Use atomic commits for legacy page_flips

Message ID 1465388359-8070-16-git-send-email-daniel.vetter@ffwll.ch (mailing list archive)
State New, archived
Headers show

Commit Message

Daniel Vetter June 8, 2016, 12:19 p.m. UTC
Note that I didn't start garbage collecting all the legacy flip code
yet, to make it easier to revert this. But there will be _lots_ of
code that can be removed once this is tested on all platforms.

FIXME: obj->frontbuffer_bits gets out of whack when pipelining
commits too hard.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
 drivers/gpu/drm/i915/intel_display.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Chris Wilson June 8, 2016, 2:24 p.m. UTC | #1
On Wed, Jun 08, 2016 at 02:19:08PM +0200, Daniel Vetter wrote:
> Note that I didn't start garbage collecting all the legacy flip code
> yet, to make it easier to revert this. But there will be _lots_ of
> code that can be removed once this is tested on all platforms.
> 
> FIXME: obj->frontbuffer_bits gets out of whack when pipelining
> commits too hard.

Possible to write a test case using dumb kms, or just point me at one
you have already? :)
-Chris
Daniel Vetter June 8, 2016, 2:34 p.m. UTC | #2
On Wed, Jun 08, 2016 at 03:24:01PM +0100, Chris Wilson wrote:
> On Wed, Jun 08, 2016 at 02:19:08PM +0200, Daniel Vetter wrote:
> > Note that I didn't start garbage collecting all the legacy flip code
> > yet, to make it easier to revert this. But there will be _lots_ of
> > code that can be removed once this is tested on all platforms.
> > 
> > FIXME: obj->frontbuffer_bits gets out of whack when pipelining
> > commits too hard.
> 
> Possible to write a test case using dumb kms, or just point me at one
> you have already? :)

Argh, that FIXME is addressed by the next patch. Forgot to reorder them
and drop the FIXME here. The rmfb worker vs. flips was enough concurrency
to hit this bug.
-Daniel
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 586fc40b9abf..eb02901551d8 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -11642,6 +11642,7 @@  void intel_check_page_flip(struct drm_i915_private *dev_priv, int pipe)
 	spin_unlock(&dev->event_lock);
 }
 
+__attribute__((unused))
 static int intel_crtc_page_flip(struct drm_crtc *crtc,
 				struct drm_framebuffer *fb,
 				struct drm_pending_vblank_event *event,
@@ -13975,7 +13976,7 @@  static const struct drm_crtc_funcs intel_crtc_funcs = {
 	.set_config = drm_atomic_helper_set_config,
 	.set_property = drm_atomic_helper_crtc_set_property,
 	.destroy = intel_crtc_destroy,
-	.page_flip = intel_crtc_page_flip,
+	.page_flip = drm_atomic_helper_page_flip,
 	.atomic_duplicate_state = intel_crtc_duplicate_state,
 	.atomic_destroy_state = intel_crtc_destroy_state,
 };