From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 1/3] drm/atomic-helper: Export framebuffer_changed() Date: Thu, 14 Jan 2016 15:56:35 +0100 Message-ID: <20160114145635.GF19130@phenom.ffwll.local> References: <20160114142047.GD19130@phenom.ffwll.local> <55e84a6ee82c0fbd796bb67a630781daa5bdcae0.1452782114.git.john@metanate.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <55e84a6ee82c0fbd796bb67a630781daa5bdcae0.1452782114.git.john@metanate.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: John Keeping Cc: Linux Kernel Mailing List , dri-devel , "open list:ARM/Rockchip SoC..." , "linux-arm-kernel@lists.infradead.org" List-Id: linux-rockchip.vger.kernel.org T24gVGh1LCBKYW4gMTQsIDIwMTYgYXQgMDI6Mzk6NDBQTSArMDAwMCwgSm9obiBLZWVwaW5nIHdy b3RlOgo+IFRoZSBSb2NrY2hpcCBkcml2ZXIgY2Fubm90IHVzZSBkcm1fYXRvbWljX2hlbHBlcl93 YWl0X2Zvcl92YmxhbmtzKCkKPiBiZWNhdXNlIGl0IGhhcyBoYXJkd2FyZSBjb3VudGVycyBmb3Ig bmVpdGhlciB2YmxhbmtzIG5vciBzY2FubGluZXMuCj4gCj4gSW4gb3JkZXIgdG8gc2ltcGxpZnkg cmUtaW1wbGVtZW50aW5nIHRoZSBmdW5jdGlvbmFsaXR5IGZvciB0aGlzIGRyaXZlciwKPiBleHBv cnQgdGhlIGZyYW1lYnVmZmVyX2NoYW5nZWQoKSBoZWxwZXIgc28gaXQgY2FuIGJlIHJldXNlZC4K PiAKPiBTaWduZWQtb2ZmLWJ5OiBKb2huIEtlZXBpbmcgPGpvaG5AbWV0YW5hdGUuY29tPgoKUmV2 aWV3ZWQtYnk6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+IEFuZCBzaW5j ZSBJIGRvbid0CmV4cGVjdCBhbnlvbmUgZWxzZSB0byBuZWVkIHRoaXMgYW55dGltZSBzb29uIHBy b2JhYmx5IGJlc3QgeW91IGp1c3QgcHVsbAp0aGlzIGluIHRocm91Z2ggcm9ja2NoaXAgdHJlZXMu CgpDaGVlcnMsIERhbmllbAoKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVs cGVyLmMgfCAyNCArKysrKysrKysrKysrKysrKysrKy0tLS0KPiAgaW5jbHVkZS9kcm0vZHJtX2F0 b21pY19oZWxwZXIuaCAgICAgfCAgNCArKysrCj4gIDIgZmlsZXMgY2hhbmdlZCwgMjQgaW5zZXJ0 aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2RybV9hdG9taWNfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIu Ywo+IGluZGV4IDI2OGQzN2YuLjc0NDkyOTMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2RybV9hdG9taWNfaGVscGVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19o ZWxwZXIuYwo+IEBAIC05NDgsOSArOTQ4LDIzIEBAIHN0YXRpYyB2b2lkIHdhaXRfZm9yX2ZlbmNl cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJfQo+ICB9Cj4gIAo+IC1zdGF0aWMgYm9vbCBm cmFtZWJ1ZmZlcl9jaGFuZ2VkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gLQkJCQlzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlLAo+IC0JCQkJc3RydWN0IGRybV9jcnRjICpjcnRj KQo+ICsvKioKPiArICogZHJtX2F0b21pY19oZWxwZXJfZnJhbWVidWZmZXJfY2hhbmdlZCAtIGNo ZWNrIGlmIGZyYW1lYnVmZmVyIGhhcyBjaGFuZ2VkCj4gKyAqIEBkZXY6IERSTSBkZXZpY2UKPiAr ICogQG9sZF9zdGF0ZTogYXRvbWljIHN0YXRlIG9iamVjdCB3aXRoIG9sZCBzdGF0ZSBzdHJ1Y3R1 cmVzCj4gKyAqIEBjcnRjOiBEUk0gY3J0Ywo+ICsgKgo+ICsgKiBDaGVja3Mgd2hldGhlciB0aGUg ZnJhbWVidWZmZXIgdXNlZCBmb3IgdGhpcyBDUlRDIGNoYW5nZXMgYXMgYSByZXN1bHQgb2YKPiAr ICogdGhlIGF0b21pYyB1cGRhdGUuICBUaGlzIGlzIHVzZWZ1bCBmb3IgZHJpdmVycyB3aGljaCBj YW5ub3QgdXNlCj4gKyAqIGRybV9hdG9taWNfaGVscGVyX3dhaXRfZm9yX3ZibGFua3MoKSBhbmQg bmVlZCB0byByZWltcGxlbWVudCBpdHMKPiArICogZnVuY3Rpb25hbGl0eS4KPiArICoKPiArICog UmV0dXJuczoKPiArICogdHJ1ZSBpZiB0aGUgZnJhbWVidWZmZXIgY2hhbmdlZC4KPiArICovCj4g K2Jvb2wgZHJtX2F0b21pY19oZWxwZXJfZnJhbWVidWZmZXJfY2hhbmdlZChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAo+ICsJCQkJCSAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUs Cj4gKwkJCQkJICAgc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZTsKPiAgCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9wbGFuZV9zdGF0ZTsK PiBAQCAtOTY3LDYgKzk4MSw3IEBAIHN0YXRpYyBib29sIGZyYW1lYnVmZmVyX2NoYW5nZWQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCj4gIAlyZXR1cm4gZmFsc2U7Cj4gIH0KPiArRVhQT1JU X1NZTUJPTChkcm1fYXRvbWljX2hlbHBlcl9mcmFtZWJ1ZmZlcl9jaGFuZ2VkKTsKPiAgCj4gIC8q Kgo+ICAgKiBkcm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl92YmxhbmtzIC0gd2FpdCBmb3IgdmJs YW5rIG9uIGNydGNzCj4gQEAgLTEwMDEsNyArMTAxNiw4IEBAIGRybV9hdG9taWNfaGVscGVyX3dh aXRfZm9yX3ZibGFua3Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQlpZiAob2xkX3N0YXRl LT5sZWdhY3lfY3Vyc29yX3VwZGF0ZSkKPiAgCQkJY29udGludWU7Cj4gIAo+IC0JCWlmICghZnJh bWVidWZmZXJfY2hhbmdlZChkZXYsIG9sZF9zdGF0ZSwgY3J0YykpCj4gKwkJaWYgKCFkcm1fYXRv bWljX2hlbHBlcl9mcmFtZWJ1ZmZlcl9jaGFuZ2VkKGRldiwKPiArCQkJCW9sZF9zdGF0ZSwgY3J0 YykpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAgCQlyZXQgPSBkcm1fY3J0Y192YmxhbmtfZ2V0KGNy dGMpOwo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fYXRvbWljX2hlbHBlci5oIGIvaW5j bHVkZS9kcm0vZHJtX2F0b21pY19oZWxwZXIuaAo+IGluZGV4IGEyODZjY2UuLjc0ZmNlNzggMTAw NjQ0Cj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2F0b21pY19oZWxwZXIuaAo+ICsrKyBiL2luY2x1 ZGUvZHJtL2RybV9hdG9taWNfaGVscGVyLmgKPiBAQCAtNDIsNiArNDIsMTAgQEAgaW50IGRybV9h dG9taWNfaGVscGVyX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCQkgICAgIHN0 cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKPiAgCQkJICAgICBib29sIGFzeW5jKTsKPiAg Cj4gK2Jvb2wgZHJtX2F0b21pY19oZWxwZXJfZnJhbWVidWZmZXJfY2hhbmdlZChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAo+ICsJCQkJCSAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3Rh dGUsCj4gKwkJCQkJICAgc3RydWN0IGRybV9jcnRjICpjcnRjKTsKPiArCj4gIHZvaWQgZHJtX2F0 b21pY19oZWxwZXJfd2FpdF9mb3JfdmJsYW5rcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJ CQkJCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpOwo+ICAKPiAtLSAKPiAyLjcu MC4yMjYuZ2ZlOTg2ZmUKPiAKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJ bnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1k ZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 From: daniel@ffwll.ch (Daniel Vetter) Date: Thu, 14 Jan 2016 15:56:35 +0100 Subject: [PATCH 1/3] drm/atomic-helper: Export framebuffer_changed() In-Reply-To: <55e84a6ee82c0fbd796bb67a630781daa5bdcae0.1452782114.git.john@metanate.com> References: <20160114142047.GD19130@phenom.ffwll.local> <55e84a6ee82c0fbd796bb67a630781daa5bdcae0.1452782114.git.john@metanate.com> Message-ID: <20160114145635.GF19130@phenom.ffwll.local> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Thu, Jan 14, 2016 at 02:39:40PM +0000, John Keeping wrote: > The Rockchip driver cannot use drm_atomic_helper_wait_for_vblanks() > because it has hardware counters for neither vblanks nor scanlines. > > In order to simplify re-implementing the functionality for this driver, > export the framebuffer_changed() helper so it can be reused. > > Signed-off-by: John Keeping Reviewed-by: Daniel Vetter And since I don't expect anyone else to need this anytime soon probably best you just pull this in through rockchip trees. Cheers, Daniel > --- > drivers/gpu/drm/drm_atomic_helper.c | 24 ++++++++++++++++++++---- > include/drm/drm_atomic_helper.h | 4 ++++ > 2 files changed, 24 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c > index 268d37f..7449293 100644 > --- a/drivers/gpu/drm/drm_atomic_helper.c > +++ b/drivers/gpu/drm/drm_atomic_helper.c > @@ -948,9 +948,23 @@ static void wait_for_fences(struct drm_device *dev, > } > } > > -static bool framebuffer_changed(struct drm_device *dev, > - struct drm_atomic_state *old_state, > - struct drm_crtc *crtc) > +/** > + * drm_atomic_helper_framebuffer_changed - check if framebuffer has changed > + * @dev: DRM device > + * @old_state: atomic state object with old state structures > + * @crtc: DRM crtc > + * > + * Checks whether the framebuffer used for this CRTC changes as a result of > + * the atomic update. This is useful for drivers which cannot use > + * drm_atomic_helper_wait_for_vblanks() and need to reimplement its > + * functionality. > + * > + * Returns: > + * true if the framebuffer changed. > + */ > +bool drm_atomic_helper_framebuffer_changed(struct drm_device *dev, > + struct drm_atomic_state *old_state, > + struct drm_crtc *crtc) > { > struct drm_plane *plane; > struct drm_plane_state *old_plane_state; > @@ -967,6 +981,7 @@ static bool framebuffer_changed(struct drm_device *dev, > > return false; > } > +EXPORT_SYMBOL(drm_atomic_helper_framebuffer_changed); > > /** > * drm_atomic_helper_wait_for_vblanks - wait for vblank on crtcs > @@ -1001,7 +1016,8 @@ drm_atomic_helper_wait_for_vblanks(struct drm_device *dev, > if (old_state->legacy_cursor_update) > continue; > > - if (!framebuffer_changed(dev, old_state, crtc)) > + if (!drm_atomic_helper_framebuffer_changed(dev, > + old_state, crtc)) > continue; > > ret = drm_crtc_vblank_get(crtc); > diff --git a/include/drm/drm_atomic_helper.h b/include/drm/drm_atomic_helper.h > index a286cce..74fce78 100644 > --- a/include/drm/drm_atomic_helper.h > +++ b/include/drm/drm_atomic_helper.h > @@ -42,6 +42,10 @@ int drm_atomic_helper_commit(struct drm_device *dev, > struct drm_atomic_state *state, > bool async); > > +bool drm_atomic_helper_framebuffer_changed(struct drm_device *dev, > + struct drm_atomic_state *old_state, > + struct drm_crtc *crtc); > + > void drm_atomic_helper_wait_for_vblanks(struct drm_device *dev, > struct drm_atomic_state *old_state); > > -- > 2.7.0.226.gfe986fe > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754290AbcANO4h (ORCPT ); Thu, 14 Jan 2016 09:56:37 -0500 Received: from mail-wm0-f66.google.com ([74.125.82.66]:33485 "EHLO mail-wm0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752533AbcANO4e (ORCPT ); Thu, 14 Jan 2016 09:56:34 -0500 Date: Thu, 14 Jan 2016 15:56:35 +0100 From: Daniel Vetter To: John Keeping Cc: Mark yao , Daniel Vetter , Linux Kernel Mailing List , dri-devel , "open list:ARM/Rockchip SoC..." , "linux-arm-kernel@lists.infradead.org" Subject: Re: [PATCH 1/3] drm/atomic-helper: Export framebuffer_changed() Message-ID: <20160114145635.GF19130@phenom.ffwll.local> Mail-Followup-To: John Keeping , Mark yao , Linux Kernel Mailing List , dri-devel , "open list:ARM/Rockchip SoC..." , "linux-arm-kernel@lists.infradead.org" References: <20160114142047.GD19130@phenom.ffwll.local> <55e84a6ee82c0fbd796bb67a630781daa5bdcae0.1452782114.git.john@metanate.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <55e84a6ee82c0fbd796bb67a630781daa5bdcae0.1452782114.git.john@metanate.com> X-Operating-System: Linux phenom 4.3.0-1-amd64 User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Jan 14, 2016 at 02:39:40PM +0000, John Keeping wrote: > The Rockchip driver cannot use drm_atomic_helper_wait_for_vblanks() > because it has hardware counters for neither vblanks nor scanlines. > > In order to simplify re-implementing the functionality for this driver, > export the framebuffer_changed() helper so it can be reused. > > Signed-off-by: John Keeping Reviewed-by: Daniel Vetter And since I don't expect anyone else to need this anytime soon probably best you just pull this in through rockchip trees. Cheers, Daniel > --- > drivers/gpu/drm/drm_atomic_helper.c | 24 ++++++++++++++++++++---- > include/drm/drm_atomic_helper.h | 4 ++++ > 2 files changed, 24 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c > index 268d37f..7449293 100644 > --- a/drivers/gpu/drm/drm_atomic_helper.c > +++ b/drivers/gpu/drm/drm_atomic_helper.c > @@ -948,9 +948,23 @@ static void wait_for_fences(struct drm_device *dev, > } > } > > -static bool framebuffer_changed(struct drm_device *dev, > - struct drm_atomic_state *old_state, > - struct drm_crtc *crtc) > +/** > + * drm_atomic_helper_framebuffer_changed - check if framebuffer has changed > + * @dev: DRM device > + * @old_state: atomic state object with old state structures > + * @crtc: DRM crtc > + * > + * Checks whether the framebuffer used for this CRTC changes as a result of > + * the atomic update. This is useful for drivers which cannot use > + * drm_atomic_helper_wait_for_vblanks() and need to reimplement its > + * functionality. > + * > + * Returns: > + * true if the framebuffer changed. > + */ > +bool drm_atomic_helper_framebuffer_changed(struct drm_device *dev, > + struct drm_atomic_state *old_state, > + struct drm_crtc *crtc) > { > struct drm_plane *plane; > struct drm_plane_state *old_plane_state; > @@ -967,6 +981,7 @@ static bool framebuffer_changed(struct drm_device *dev, > > return false; > } > +EXPORT_SYMBOL(drm_atomic_helper_framebuffer_changed); > > /** > * drm_atomic_helper_wait_for_vblanks - wait for vblank on crtcs > @@ -1001,7 +1016,8 @@ drm_atomic_helper_wait_for_vblanks(struct drm_device *dev, > if (old_state->legacy_cursor_update) > continue; > > - if (!framebuffer_changed(dev, old_state, crtc)) > + if (!drm_atomic_helper_framebuffer_changed(dev, > + old_state, crtc)) > continue; > > ret = drm_crtc_vblank_get(crtc); > diff --git a/include/drm/drm_atomic_helper.h b/include/drm/drm_atomic_helper.h > index a286cce..74fce78 100644 > --- a/include/drm/drm_atomic_helper.h > +++ b/include/drm/drm_atomic_helper.h > @@ -42,6 +42,10 @@ int drm_atomic_helper_commit(struct drm_device *dev, > struct drm_atomic_state *state, > bool async); > > +bool drm_atomic_helper_framebuffer_changed(struct drm_device *dev, > + struct drm_atomic_state *old_state, > + struct drm_crtc *crtc); > + > void drm_atomic_helper_wait_for_vblanks(struct drm_device *dev, > struct drm_atomic_state *old_state); > > -- > 2.7.0.226.gfe986fe > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch