From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mark yao Subject: Re: [PATCH v2] drm/rockchip: vop: fix crtc size in plane check Date: Mon, 14 Mar 2016 10:39:16 +0800 Message-ID: <56E62454.1070808@rock-chips.com> References: <56D8DF39.8020104@rock-chips.com> <1457089443-6069-1-git-send-email-john@metanate.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1457089443-6069-1-git-send-email-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-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org List-Id: linux-rockchip.vger.kernel.org T24gMjAxNuW5tDAz5pyIMDTml6UgMTk6MDQsIEpvaG4gS2VlcGluZyB3cm90ZToKPiBJZiB0aGUg Z2VvbWV0cnkgb2YgYSBjcnRjIGlzIGNoYW5naW5nIGluIGFuIGF0b21pYyB1cGRhdGUgdGhlbiB3 ZSBtdXN0Cj4gdmFsaWRhdGUgdGhlIHBsYW5lIHNpemUgYWdhaW5zdCB0aGUgbmV3IHN0YXRlIG9m IHRoZSBjcnRjIGFuZCBub3QgdGhlCj4gY3VycmVudCBzaXplLCBvdGhlcndpc2UgaWYgdGhlIGNy dGMgc2l6ZSBpcyBpbmNyZWFzaW5nIHRoZSBwbGFuZSB3aWxsIGJlCj4gY3JvcHBlZCBhdCB0aGUg cHJldmlvdXMgc2l6ZSBhbmQgd2lsbCBub3QgZmlsbCB0aGUgc2NyZWVuLgo+Cj4gU2lnbmVkLW9m Zi1ieTogSm9obiBLZWVwaW5nIDxqb2huQG1ldGFuYXRlLmNvbT4KPiAtLS0KPiBPbiBGcmksIDA0 IE1hciAyMDE2IDA5OjA0OjU3ICswODAwLCBNYXJrIHlhbyB3cm90ZToKPj4gT24gMjAxNuW5tDAy 5pyIMjLml6UgMjA6MjIsIEpvaG4gS2VlcGluZyB3cm90ZToKPj4+IElmIHRoZSBnZW9tZXRyeSBv ZiBhIGNydGMgaXMgY2hhbmdpbmcgaW4gYW4gYXRvbWljIHVwZGF0ZSB0aGVuIHdlIG11Y2gKPj4g SSB0aGluayAid2UgbXVjaCB2YWxpZGF0ZSIgc2hvdWxkIGJlICJ3ZSBtdXN0IHZhbGlkYXRlIi46 LSkKPiBZZXMsIGhlcmUncyB2MiB3aXRoIHRoYXQgZml4ZWQuCj4KPj4+IHZhbGlkYXRlIHRoZSBw bGFuZSBzaXplIGFnYWluc3QgdGhlIG5ldyBzdGF0ZSBvZiB0aGUgY3J0YyBhbmQgbm90IHRoZQo+ Pj4gY3VycmVudCBzaXplLCBvdGhlcndpc2UgaWYgdGhlIGNydGMgc2l6ZSBpcyBpbmNyZWFzaW5n IHRoZSBwbGFuZSB3aWxsIGJlCj4+PiBjcm9wcGVkIGF0IHRoZSBwcmV2aW91cyBzaXplIGFuZCB3 aWxsIG5vdCBmaWxsIHRoZSBzY3JlZW4uCj4gICBkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9j a2NoaXBfZHJtX3ZvcC5jIHwgMTQgKysrKysrKystLS0tLS0KPiAgIDEgZmlsZSBjaGFuZ2VkLCA4 IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV92b3AuYyBiL2RyaXZlcnMvZ3B1L2RybS9yb2Nr Y2hpcC9yb2NrY2hpcF9kcm1fdm9wLmMKPiBpbmRleCBmZDM3MDU0Li44MmQ1NWJkIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fdm9wLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3ZvcC5jCj4gQEAgLTU0OSw2 ICs1NDksNyBAQCBzdGF0aWMgaW50IHZvcF9wbGFuZV9hdG9taWNfY2hlY2soc3RydWN0IGRybV9w bGFuZSAqcGxhbmUsCj4gICAJCQkgICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSkKPiAg IHsKPiAgIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBzdGF0ZS0+Y3J0YzsKPiArCXN0cnVjdCBk cm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKPiAgIAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YiA9IHN0YXRlLT5mYjsKPiAgIAlzdHJ1Y3Qgdm9wX3dpbiAqdm9wX3dpbiA9IHRvX3ZvcF93aW4o cGxhbmUpOwo+ICAgCXN0cnVjdCB2b3BfcGxhbmVfc3RhdGUgKnZvcF9wbGFuZV9zdGF0ZSA9IHRv X3ZvcF9wbGFuZV9zdGF0ZShzdGF0ZSk7Cj4gQEAgLTU2MywxMiArNTY0LDEzIEBAIHN0YXRpYyBp bnQgdm9wX3BsYW5lX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgIAlp bnQgbWF4X3NjYWxlID0gd2luLT5waHktPnNjbCA/IEZSQUNfMTZfMTYoOCwgMSkgOgo+ICAgCQkJ CQlEUk1fUExBTkVfSEVMUEVSX05PX1NDQUxJTkc7Cj4gICAKPiAtCWNydGMgPSBjcnRjID8gY3J0 YyA6IHBsYW5lLT5zdGF0ZS0+Y3J0YzsKPiAtCS8qCj4gLQkgKiBCb3RoIGNydGMgb3IgcGxhbmUt PnN0YXRlLT5jcnRjIGNhbiBiZSBudWxsLgo+IC0JICovCj4gICAJaWYgKCFjcnRjIHx8ICFmYikK PiAgIAkJZ290byBvdXRfZGlzYWJsZTsKPiArCj4gKwljcnRjX3N0YXRlID0gZHJtX2F0b21pY19n ZXRfZXhpc3RpbmdfY3J0Y19zdGF0ZShzdGF0ZS0+c3RhdGUsIGNydGMpOwo+ICsJaWYgKFdBUk5f T04oIWNydGNfc3RhdGUpKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiAgIAlzcmMtPngxID0g c3RhdGUtPnNyY194Owo+ICAgCXNyYy0+eTEgPSBzdGF0ZS0+c3JjX3k7Cj4gICAJc3JjLT54MiA9 IHN0YXRlLT5zcmNfeCArIHN0YXRlLT5zcmNfdzsKPiBAQCAtNTgwLDggKzU4Miw4IEBAIHN0YXRp YyBpbnQgdm9wX3BsYW5lX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAg IAo+ICAgCWNsaXAueDEgPSAwOwo+ICAgCWNsaXAueTEgPSAwOwo+IC0JY2xpcC54MiA9IGNydGMt Pm1vZGUuaGRpc3BsYXk7Cj4gLQljbGlwLnkyID0gY3J0Yy0+bW9kZS52ZGlzcGxheTsKPiArCWNs aXAueDIgPSBjcnRjX3N0YXRlLT5hZGp1c3RlZF9tb2RlLmhkaXNwbGF5Owo+ICsJY2xpcC55MiA9 IGNydGNfc3RhdGUtPmFkanVzdGVkX21vZGUudmRpc3BsYXk7Cj4gICAKPiAgIAlyZXQgPSBkcm1f cGxhbmVfaGVscGVyX2NoZWNrX3VwZGF0ZShwbGFuZSwgY3J0Yywgc3RhdGUtPmZiLAo+ICAgCQkJ CQkgICAgc3JjLCBkZXN0LCAmY2xpcCwKCkxvb2tzIGdvb2QgZm9yIG1lLCBhcHBsaWVkIGludG8g bXkgZHJtLWZpeGVzLgoKVGhhbmtzIGZvciB0aGUgZml4LgoKLS0gCu+8rWFyayBZYW8KCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFp bGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 From: mark.yao@rock-chips.com (Mark yao) Date: Mon, 14 Mar 2016 10:39:16 +0800 Subject: [PATCH v2] drm/rockchip: vop: fix crtc size in plane check In-Reply-To: <1457089443-6069-1-git-send-email-john@metanate.com> References: <56D8DF39.8020104@rock-chips.com> <1457089443-6069-1-git-send-email-john@metanate.com> Message-ID: <56E62454.1070808@rock-chips.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On 2016?03?04? 19:04, John Keeping wrote: > If the geometry of a crtc is changing in an atomic update then we must > validate the plane size against the new state of the crtc and not the > current size, otherwise if the crtc size is increasing the plane will be > cropped at the previous size and will not fill the screen. > > Signed-off-by: John Keeping > --- > On Fri, 04 Mar 2016 09:04:57 +0800, Mark yao wrote: >> On 2016?02?22? 20:22, John Keeping wrote: >>> If the geometry of a crtc is changing in an atomic update then we much >> I think "we much validate" should be "we must validate".:-) > Yes, here's v2 with that fixed. > >>> validate the plane size against the new state of the crtc and not the >>> current size, otherwise if the crtc size is increasing the plane will be >>> cropped at the previous size and will not fill the screen. > drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 14 ++++++++------ > 1 file changed, 8 insertions(+), 6 deletions(-) > > diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c > index fd37054..82d55bd 100644 > --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c > +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c > @@ -549,6 +549,7 @@ static int vop_plane_atomic_check(struct drm_plane *plane, > struct drm_plane_state *state) > { > struct drm_crtc *crtc = state->crtc; > + struct drm_crtc_state *crtc_state; > struct drm_framebuffer *fb = state->fb; > struct vop_win *vop_win = to_vop_win(plane); > struct vop_plane_state *vop_plane_state = to_vop_plane_state(state); > @@ -563,12 +564,13 @@ static int vop_plane_atomic_check(struct drm_plane *plane, > int max_scale = win->phy->scl ? FRAC_16_16(8, 1) : > DRM_PLANE_HELPER_NO_SCALING; > > - crtc = crtc ? crtc : plane->state->crtc; > - /* > - * Both crtc or plane->state->crtc can be null. > - */ > if (!crtc || !fb) > goto out_disable; > + > + crtc_state = drm_atomic_get_existing_crtc_state(state->state, crtc); > + if (WARN_ON(!crtc_state)) > + return -EINVAL; > + > src->x1 = state->src_x; > src->y1 = state->src_y; > src->x2 = state->src_x + state->src_w; > @@ -580,8 +582,8 @@ static int vop_plane_atomic_check(struct drm_plane *plane, > > clip.x1 = 0; > clip.y1 = 0; > - clip.x2 = crtc->mode.hdisplay; > - clip.y2 = crtc->mode.vdisplay; > + clip.x2 = crtc_state->adjusted_mode.hdisplay; > + clip.y2 = crtc_state->adjusted_mode.vdisplay; > > ret = drm_plane_helper_check_update(plane, crtc, state->fb, > src, dest, &clip, Looks good for me, applied into my drm-fixes. Thanks for the fix. -- ?ark Yao From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754511AbcCNCjh (ORCPT ); Sun, 13 Mar 2016 22:39:37 -0400 Received: from regular1.263xmail.com ([211.150.99.140]:35568 "EHLO regular1.263xmail.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754184AbcCNCj3 (ORCPT ); Sun, 13 Mar 2016 22:39:29 -0400 X-263anti-spam: KSV:0;BIG:0;ABS:1;DNS:0;ATT:0;SPF:S; X-MAIL-GRAY: 0 X-MAIL-DELIVERY: 1 X-KSVirus-check: 0 X-ABS-CHECKED: 1 X-SKE-CHECKED: 1 X-ADDR-CHECKED: 0 X-RL-SENDER: mark.yao@rock-chips.com X-FST-TO: linux-kernel@vger.kernel.org X-SENDER-IP: 58.22.7.114 X-LOGIN-NAME: mark.yao@rock-chips.com X-UNIQUE-TAG: X-ATTACHMENT-NUM: 0 X-DNS-TYPE: 0 Message-ID: <56E62454.1070808@rock-chips.com> Date: Mon, 14 Mar 2016 10:39:16 +0800 From: Mark yao User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.8.0 MIME-Version: 1.0 To: John Keeping CC: Heiko Stuebner , dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v2] drm/rockchip: vop: fix crtc size in plane check References: <56D8DF39.8020104@rock-chips.com> <1457089443-6069-1-git-send-email-john@metanate.com> In-Reply-To: <1457089443-6069-1-git-send-email-john@metanate.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2016年03月04日 19:04, John Keeping wrote: > If the geometry of a crtc is changing in an atomic update then we must > validate the plane size against the new state of the crtc and not the > current size, otherwise if the crtc size is increasing the plane will be > cropped at the previous size and will not fill the screen. > > Signed-off-by: John Keeping > --- > On Fri, 04 Mar 2016 09:04:57 +0800, Mark yao wrote: >> On 2016年02月22日 20:22, John Keeping wrote: >>> If the geometry of a crtc is changing in an atomic update then we much >> I think "we much validate" should be "we must validate".:-) > Yes, here's v2 with that fixed. > >>> validate the plane size against the new state of the crtc and not the >>> current size, otherwise if the crtc size is increasing the plane will be >>> cropped at the previous size and will not fill the screen. > drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 14 ++++++++------ > 1 file changed, 8 insertions(+), 6 deletions(-) > > diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c > index fd37054..82d55bd 100644 > --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c > +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c > @@ -549,6 +549,7 @@ static int vop_plane_atomic_check(struct drm_plane *plane, > struct drm_plane_state *state) > { > struct drm_crtc *crtc = state->crtc; > + struct drm_crtc_state *crtc_state; > struct drm_framebuffer *fb = state->fb; > struct vop_win *vop_win = to_vop_win(plane); > struct vop_plane_state *vop_plane_state = to_vop_plane_state(state); > @@ -563,12 +564,13 @@ static int vop_plane_atomic_check(struct drm_plane *plane, > int max_scale = win->phy->scl ? FRAC_16_16(8, 1) : > DRM_PLANE_HELPER_NO_SCALING; > > - crtc = crtc ? crtc : plane->state->crtc; > - /* > - * Both crtc or plane->state->crtc can be null. > - */ > if (!crtc || !fb) > goto out_disable; > + > + crtc_state = drm_atomic_get_existing_crtc_state(state->state, crtc); > + if (WARN_ON(!crtc_state)) > + return -EINVAL; > + > src->x1 = state->src_x; > src->y1 = state->src_y; > src->x2 = state->src_x + state->src_w; > @@ -580,8 +582,8 @@ static int vop_plane_atomic_check(struct drm_plane *plane, > > clip.x1 = 0; > clip.y1 = 0; > - clip.x2 = crtc->mode.hdisplay; > - clip.y2 = crtc->mode.vdisplay; > + clip.x2 = crtc_state->adjusted_mode.hdisplay; > + clip.y2 = crtc_state->adjusted_mode.vdisplay; > > ret = drm_plane_helper_check_update(plane, crtc, state->fb, > src, dest, &clip, Looks good for me, applied into my drm-fixes. Thanks for the fix. -- Mark Yao