Message ID | 1436251383-17893-1-git-send-email-daniel.vetter@ffwll.ch (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Tue, Jul 07, 2015 at 08:43:03AM +0200, Daniel Vetter wrote: > The legacy page_flip driver entry point is the only one left which > requires drivers to update plane->fb themselves. All the other entry > hooks will patch things up for the driver as needed since no one seems > to reliable get this right, see e.g. drm_mode_set_config_internal or > the plane->fb/old_fb handling in drm_mode_atomic_ioctl. > > Therefore unify things, which allows us to ditch a TODO from > drm_atomic_helper_page_flip. > > This should also help the atomic transition in i915 since we keep a > bit of legacy cruft only around because of this special behaviour in > ->page_flip. > > Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> > Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> Applied with Maarten's irc r-b to drm-misc. -Daniel > --- > drivers/gpu/drm/drm_atomic_helper.c | 4 ---- > drivers/gpu/drm/drm_crtc.c | 8 +------- > 2 files changed, 1 insertion(+), 11 deletions(-) > > diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c > index 5b59d5ad7d1c..0898afbc9e23 100644 > --- a/drivers/gpu/drm/drm_atomic_helper.c > +++ b/drivers/gpu/drm/drm_atomic_helper.c > @@ -1915,10 +1915,6 @@ retry: > if (ret != 0) > goto fail; > > - /* TODO: ->page_flip is the only driver callback where the core > - * doesn't update plane->fb. For now patch it up here. */ > - plane->fb = plane->state->fb; > - > /* Driver takes ownership of state on successful async commit. */ > return 0; > fail: > diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c > index d15a96fdff43..ee0b3bf166b6 100644 > --- a/drivers/gpu/drm/drm_crtc.c > +++ b/drivers/gpu/drm/drm_crtc.c > @@ -5345,13 +5345,7 @@ int drm_mode_page_flip_ioctl(struct drm_device *dev, > /* Keep the old fb, don't unref it. */ > crtc->primary->old_fb = NULL; > } else { > - /* > - * Warn if the driver hasn't properly updated the crtc->fb > - * field to reflect that the new framebuffer is now used. > - * Failing to do so will screw with the reference counting > - * on framebuffers. > - */ > - WARN_ON(crtc->primary->fb != fb); > + crtc->primary->fb = fb; > /* Unref only the old framebuffer. */ > fb = NULL; > } > -- > 2.1.4 >
diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c index 5b59d5ad7d1c..0898afbc9e23 100644 --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c @@ -1915,10 +1915,6 @@ retry: if (ret != 0) goto fail; - /* TODO: ->page_flip is the only driver callback where the core - * doesn't update plane->fb. For now patch it up here. */ - plane->fb = plane->state->fb; - /* Driver takes ownership of state on successful async commit. */ return 0; fail: diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c index d15a96fdff43..ee0b3bf166b6 100644 --- a/drivers/gpu/drm/drm_crtc.c +++ b/drivers/gpu/drm/drm_crtc.c @@ -5345,13 +5345,7 @@ int drm_mode_page_flip_ioctl(struct drm_device *dev, /* Keep the old fb, don't unref it. */ crtc->primary->old_fb = NULL; } else { - /* - * Warn if the driver hasn't properly updated the crtc->fb - * field to reflect that the new framebuffer is now used. - * Failing to do so will screw with the reference counting - * on framebuffers. - */ - WARN_ON(crtc->primary->fb != fb); + crtc->primary->fb = fb; /* Unref only the old framebuffer. */ fb = NULL; }
The legacy page_flip driver entry point is the only one left which requires drivers to update plane->fb themselves. All the other entry hooks will patch things up for the driver as needed since no one seems to reliable get this right, see e.g. drm_mode_set_config_internal or the plane->fb/old_fb handling in drm_mode_atomic_ioctl. Therefore unify things, which allows us to ditch a TODO from drm_atomic_helper_page_flip. This should also help the atomic transition in i915 since we keep a bit of legacy cruft only around because of this special behaviour in ->page_flip. Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> --- drivers/gpu/drm/drm_atomic_helper.c | 4 ---- drivers/gpu/drm/drm_crtc.c | 8 +------- 2 files changed, 1 insertion(+), 11 deletions(-)