From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v2 01/20] drm/atomic: Fix remaining places where !funcs->best_encoder is valid Date: Tue, 7 Jun 2016 16:39:34 +0200 Message-ID: <20160607143934.GA3363@phenom.ffwll.local> References: <1465300095-16971-1-git-send-email-boris.brezillon@free-electrons.com> <1465300095-16971-2-git-send-email-boris.brezillon@free-electrons.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1465300095-16971-2-git-send-email-boris.brezillon-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Boris Brezillon Cc: Krzysztof Kozlowski , Heiko Stuebner , David Airlie , dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, virtualization-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org, Eric Anholt , Thierry Reding , Laurent Pinchart , Benjamin Gaignard , Daniel Vetter , Alexandre Courbot , linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Joonyoung Shim , Alexey Brodkin , Kyungmin Park , linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, Chen-Yu Tsai , Kukjin Kim , linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Stephen Warren , linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, intel-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Jani Nikula , Ink List-Id: linux-arm-msm@vger.kernel.org T24gVHVlLCBKdW4gMDcsIDIwMTYgYXQgMDE6NDc6NTZQTSArMDIwMCwgQm9yaXMgQnJlemlsbG9u IHdyb3RlOgo+IEFkYXB0IGRybV9waWNrX2NydGNzKCkgYW5kIHVwZGF0ZV9jb25uZWN0b3Jfcm91 dGluZygpIHRvIGZhbGxiYWNrIHRvCj4gZHJtX2F0b21pY19oZWxwZXJfYmVzdF9lbmNvZGVyKCkg aWYgZnVuY3MtPmJlc3RfZW5jb2RlcigpIGlzIE5VTEwgc28KPiB0aGF0IERSTSBkcml2ZXJzIGNh biBsZWF2ZSB0aGlzIGhvb2sgdW5hc3NpZ25lZCBpZiB0aGV5IGtub3cgdGhleSB3YW50Cj4gdG8g dXNlIGRybV9hdG9taWNfaGVscGVyX2Jlc3RfZW5jb2RlcigpLgo+IAo+IFVwZGF0ZSB0aGUgdnRh YmxlcyBkb2N1bWVudGF0aW9uIGFjY29yZGluZ2x5Lgo+IAo+IFNpZ25lZC1vZmYtYnk6IEJvcmlz IEJyZXppbGxvbiA8Ym9yaXMuYnJlemlsbG9uQGZyZWUtZWxlY3Ryb25zLmNvbT4KCkFwcGxpZWQg dG8gZHJtLW1pc2MsIHRoYW5rcy4gSSB0aGluayBJJ2xsIHdhaXQgd2l0aCB0aGUgZHJpdmVyIHBh dGNoZXMKdW50aWwgbmV4dCB3ZWVrIG9yIHNvLgotRGFuaWVsCgo+IC0tLQo+ICBkcml2ZXJzL2dw dS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYyAgICAgIHwgIDQgKysrLQo+ICBkcml2ZXJzL2dwdS9k cm0vZHJtX2ZiX2hlbHBlci5jICAgICAgICAgIHwgMTMgKysrKysrKysrKysrLQo+ICBpbmNsdWRl L2RybS9kcm1fbW9kZXNldF9oZWxwZXJfdnRhYmxlcy5oIHwgMTAgKysrKysrKystLQo+ICAzIGZp bGVzIGNoYW5nZWQsIDIzIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jIGIvZHJpdmVycy9ncHUv ZHJtL2RybV9hdG9taWNfaGVscGVyLmMKPiBpbmRleCBmNmEzMzUwLi44NDlkMDI5IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMKPiBAQCAtMzAwLDggKzMwMCwxMCBAQCB1cGRh dGVfY29ubmVjdG9yX3JvdXRpbmcoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ICAJ aWYgKGZ1bmNzLT5hdG9taWNfYmVzdF9lbmNvZGVyKQo+ICAJCW5ld19lbmNvZGVyID0gZnVuY3Mt PmF0b21pY19iZXN0X2VuY29kZXIoY29ubmVjdG9yLAo+ICAJCQkJCQkJIGNvbm5lY3Rvcl9zdGF0 ZSk7Cj4gLQllbHNlCj4gKwllbHNlIGlmIChmdW5jcy0+YmVzdF9lbmNvZGVyKQo+ICAJCW5ld19l bmNvZGVyID0gZnVuY3MtPmJlc3RfZW5jb2Rlcihjb25uZWN0b3IpOwo+ICsJZWxzZQo+ICsJCW5l d19lbmNvZGVyID0gZHJtX2F0b21pY19oZWxwZXJfYmVzdF9lbmNvZGVyKGNvbm5lY3Rvcik7Cj4g IAo+ICAJaWYgKCFuZXdfZW5jb2Rlcikgewo+ICAJCURSTV9ERUJVR19BVE9NSUMoIk5vIHN1aXRh YmxlIGVuY29kZXIgZm91bmQgZm9yIFtDT05ORUNUT1I6JWQ6JXNdXG4iLAo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9m Yl9oZWxwZXIuYwo+IGluZGV4IDdjMmViNzUuLmQ0NDM4OWEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJf aGVscGVyLmMKPiBAQCAtMjAwMCw3ICsyMDAwLDE4IEBAIHN0YXRpYyBpbnQgZHJtX3BpY2tfY3J0 Y3Moc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKPiAgCQlteV9zY29yZSsrOwo+ICAK PiAgCWNvbm5lY3Rvcl9mdW5jcyA9IGNvbm5lY3Rvci0+aGVscGVyX3ByaXZhdGU7Cj4gLQllbmNv ZGVyID0gY29ubmVjdG9yX2Z1bmNzLT5iZXN0X2VuY29kZXIoY29ubmVjdG9yKTsKPiArCj4gKwkv Kgo+ICsJICogSWYgdGhlIERSTSBkZXZpY2UgaW1wbGVtZW50cyBhdG9taWMgaG9va3MgYW5kIC0+ YmVzdF9lbmNvZGVyKCkgaXMKPiArCSAqIE5VTEwgd2UgZmFsbGJhY2sgdG8gdGhlIGRlZmF1bHQg ZHJtX2F0b21pY19oZWxwZXJfYmVzdF9lbmNvZGVyKCkKPiArCSAqIGhlbHBlci4KPiArCSAqLwo+ ICsJaWYgKGZiX2hlbHBlci0+ZGV2LT5tb2RlX2NvbmZpZy5mdW5jcy0+YXRvbWljX2NvbW1pdCAm Jgo+ICsJICAgICFjb25uZWN0b3JfZnVuY3MtPmJlc3RfZW5jb2RlcikKPiArCQllbmNvZGVyID0g ZHJtX2F0b21pY19oZWxwZXJfYmVzdF9lbmNvZGVyKGNvbm5lY3Rvcik7Cj4gKwllbHNlCj4gKwkJ ZW5jb2RlciA9IGNvbm5lY3Rvcl9mdW5jcy0+YmVzdF9lbmNvZGVyKGNvbm5lY3Rvcik7Cj4gKwo+ ICAJaWYgKCFlbmNvZGVyKQo+ICAJCWdvdG8gb3V0Owo+ICAKPiBkaWZmIC0tZ2l0IGEvaW5jbHVk ZS9kcm0vZHJtX21vZGVzZXRfaGVscGVyX3Z0YWJsZXMuaCBiL2luY2x1ZGUvZHJtL2RybV9tb2Rl c2V0X2hlbHBlcl92dGFibGVzLmgKPiBpbmRleCBkNDYxOWRjLi40ZTdhNTNiIDEwMDY0NAo+IC0t LSBhL2luY2x1ZGUvZHJtL2RybV9tb2Rlc2V0X2hlbHBlcl92dGFibGVzLmgKPiArKysgYi9pbmNs dWRlL2RybS9kcm1fbW9kZXNldF9oZWxwZXJfdnRhYmxlcy5oCj4gQEAgLTczNiw2ICs3MzYsMTEg QEAgc3RydWN0IGRybV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzIHsKPiAgCSAqIGluc3BlY3QgZHlu YW1pYyBjb25maWd1cmF0aW9uIHN0YXRlIHNob3VsZCBpbnN0ZWFkIHVzZQo+ICAJICogQGF0b21p Y19iZXN0X2VuY29kZXIuCj4gIAkgKgo+ICsJICogWW91IGNhbiBsZWF2ZSB0aGlzIGZ1bmN0aW9u IHRvIE5VTEwgaWYgdGhlIGNvbm5lY3RvciBpcyBvbmx5Cj4gKwkgKiBhdHRhY2hlZCB0byBhIHNp bmdsZSBlbmNvZGVyIGFuZCB5b3UgYXJlIHVzaW5nIHRoZSBhdG9taWMgaGVscGVycy4KPiArCSAq IEluIHRoaXMgY2FzZSwgdGhlIGNvcmUgd2lsbCBjYWxsIGRybV9hdG9taWNfaGVscGVyX2Jlc3Rf ZW5jb2RlcigpCj4gKwkgKiBmb3IgeW91Lgo+ICsJICoKPiAgCSAqIFJFVFVSTlM6Cj4gIAkgKgo+ ICAJICogRW5jb2RlciB0aGF0IHNob3VsZCBiZSB1c2VkIGZvciB0aGUgZ2l2ZW4gY29ubmVjdG9y IGFuZCBjb25uZWN0b3IKPiBAQCAtNzUyLDggKzc1Nyw5IEBAIHN0cnVjdCBkcm1fY29ubmVjdG9y X2hlbHBlcl9mdW5jcyB7Cj4gIAkgKiBuZWVkIHRvIHNlbGVjdCB0aGUgYmVzdCBlbmNvZGVyIGRl cGVuZGluZyB1cG9uIHRoZSBkZXNpcmVkCj4gIAkgKiBjb25maWd1cmF0aW9uIGFuZCBjYW4ndCBz ZWxlY3QgaXQgc3RhdGljYWxseS4KPiAgCSAqCj4gLQkgKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQg YnkgZHJtX2F0b21pY19oZWxwZXJfY2hlY2tfbW9kZXNldCgpIGFuZCBlaXRoZXIKPiAtCSAqIHRo aXMgb3IgQGJlc3RfZW5jb2RlciBpcyByZXF1aXJlZC4KPiArCSAqIFRoaXMgZnVuY3Rpb24gaXMg dXNlZCBieSBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19tb2Rlc2V0KCkuCj4gKwkgKiBJZiBpdCBp cyBub3QgaW1wbGVtZW50ZWQsIHRoZSBjb3JlIHdpbGwgZmFsbGJhY2sgdG8gQGJlc3RfZW5jb2Rl cgo+ICsJICogKG9yIGRybV9hdG9taWNfaGVscGVyX2Jlc3RfZW5jb2RlcigpIGlmIEBiZXN0X2Vu Y29kZXIgaXMgTlVMTCkuCj4gIAkgKgo+ICAJICogTk9URToKPiAgCSAqCj4gLS0gCj4gMi43LjQK PiAKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlv bgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpGcmVlZHJlbm8gbWFpbGluZyBsaXN0CkZyZWVkcmVub0BsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9mcmVlZHJlbm8K From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-f67.google.com ([74.125.82.67]:34497 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754585AbcFGOjt (ORCPT ); Tue, 7 Jun 2016 10:39:49 -0400 Received: by mail-wm0-f67.google.com with SMTP id n184so24782998wmn.1 for ; Tue, 07 Jun 2016 07:39:48 -0700 (PDT) Date: Tue, 7 Jun 2016 16:39:34 +0200 From: Daniel Vetter To: Boris Brezillon Cc: David Airlie , Daniel Vetter , dri-devel@lists.freedesktop.org, Daniel Vetter , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Kukjin Kim , Krzysztof Kozlowski , linux-samsung-soc@vger.kernel.org, intel-gfx@lists.freedesktop.org, Jani Nikula , Alexey Brodkin , Inki Dae , Joonyoung Shim , Seung-Woo Kim , Kyungmin Park , Stefan Agner , Alison Wang , Matthias Brugger , Rob Clark , Laurent Pinchart , Mark Yao , Heiko Stuebner , Benjamin Gaignard , Vincent Abriou , Maxime Ripard , Chen-Yu Tsai , Thierry Reding , Stephen Warren , Alexandre Courbot , Eric Anholt , Gerd Hoffmann , linux-mediatek@lists.infradead.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org, linux-renesas-soc@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-tegra@vger.kernel.org, virtualization@lists.linux-foundation.org Subject: Re: [PATCH v2 01/20] drm/atomic: Fix remaining places where !funcs->best_encoder is valid Message-ID: <20160607143934.GA3363@phenom.ffwll.local> References: <1465300095-16971-1-git-send-email-boris.brezillon@free-electrons.com> <1465300095-16971-2-git-send-email-boris.brezillon@free-electrons.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1465300095-16971-2-git-send-email-boris.brezillon@free-electrons.com> Sender: linux-renesas-soc-owner@vger.kernel.org List-ID: On Tue, Jun 07, 2016 at 01:47:56PM +0200, Boris Brezillon wrote: > Adapt drm_pick_crtcs() and update_connector_routing() to fallback to > drm_atomic_helper_best_encoder() if funcs->best_encoder() is NULL so > that DRM drivers can leave this hook unassigned if they know they want > to use drm_atomic_helper_best_encoder(). > > Update the vtables documentation accordingly. > > Signed-off-by: Boris Brezillon Applied to drm-misc, thanks. I think I'll wait with the driver patches until next week or so. -Daniel > --- > drivers/gpu/drm/drm_atomic_helper.c | 4 +++- > drivers/gpu/drm/drm_fb_helper.c | 13 ++++++++++++- > include/drm/drm_modeset_helper_vtables.h | 10 ++++++++-- > 3 files changed, 23 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c > index f6a3350..849d029 100644 > --- a/drivers/gpu/drm/drm_atomic_helper.c > +++ b/drivers/gpu/drm/drm_atomic_helper.c > @@ -300,8 +300,10 @@ update_connector_routing(struct drm_atomic_state *state, > if (funcs->atomic_best_encoder) > new_encoder = funcs->atomic_best_encoder(connector, > connector_state); > - else > + else if (funcs->best_encoder) > new_encoder = funcs->best_encoder(connector); > + else > + new_encoder = drm_atomic_helper_best_encoder(connector); > > if (!new_encoder) { > DRM_DEBUG_ATOMIC("No suitable encoder found for [CONNECTOR:%d:%s]\n", > diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c > index 7c2eb75..d44389a 100644 > --- a/drivers/gpu/drm/drm_fb_helper.c > +++ b/drivers/gpu/drm/drm_fb_helper.c > @@ -2000,7 +2000,18 @@ static int drm_pick_crtcs(struct drm_fb_helper *fb_helper, > my_score++; > > connector_funcs = connector->helper_private; > - encoder = connector_funcs->best_encoder(connector); > + > + /* > + * If the DRM device implements atomic hooks and ->best_encoder() is > + * NULL we fallback to the default drm_atomic_helper_best_encoder() > + * helper. > + */ > + if (fb_helper->dev->mode_config.funcs->atomic_commit && > + !connector_funcs->best_encoder) > + encoder = drm_atomic_helper_best_encoder(connector); > + else > + encoder = connector_funcs->best_encoder(connector); > + > if (!encoder) > goto out; > > diff --git a/include/drm/drm_modeset_helper_vtables.h b/include/drm/drm_modeset_helper_vtables.h > index d4619dc..4e7a53b 100644 > --- a/include/drm/drm_modeset_helper_vtables.h > +++ b/include/drm/drm_modeset_helper_vtables.h > @@ -736,6 +736,11 @@ struct drm_connector_helper_funcs { > * inspect dynamic configuration state should instead use > * @atomic_best_encoder. > * > + * You can leave this function to NULL if the connector is only > + * attached to a single encoder and you are using the atomic helpers. > + * In this case, the core will call drm_atomic_helper_best_encoder() > + * for you. > + * > * RETURNS: > * > * Encoder that should be used for the given connector and connector > @@ -752,8 +757,9 @@ struct drm_connector_helper_funcs { > * need to select the best encoder depending upon the desired > * configuration and can't select it statically. > * > - * This function is used by drm_atomic_helper_check_modeset() and either > - * this or @best_encoder is required. > + * This function is used by drm_atomic_helper_check_modeset(). > + * If it is not implemented, the core will fallback to @best_encoder > + * (or drm_atomic_helper_best_encoder() if @best_encoder is NULL). > * > * NOTE: > * > -- > 2.7.4 > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch From mboxrd@z Thu Jan 1 00:00:00 1970 From: daniel@ffwll.ch (Daniel Vetter) Date: Tue, 7 Jun 2016 16:39:34 +0200 Subject: [PATCH v2 01/20] drm/atomic: Fix remaining places where !funcs->best_encoder is valid In-Reply-To: <1465300095-16971-2-git-send-email-boris.brezillon@free-electrons.com> References: <1465300095-16971-1-git-send-email-boris.brezillon@free-electrons.com> <1465300095-16971-2-git-send-email-boris.brezillon@free-electrons.com> Message-ID: <20160607143934.GA3363@phenom.ffwll.local> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Tue, Jun 07, 2016 at 01:47:56PM +0200, Boris Brezillon wrote: > Adapt drm_pick_crtcs() and update_connector_routing() to fallback to > drm_atomic_helper_best_encoder() if funcs->best_encoder() is NULL so > that DRM drivers can leave this hook unassigned if they know they want > to use drm_atomic_helper_best_encoder(). > > Update the vtables documentation accordingly. > > Signed-off-by: Boris Brezillon Applied to drm-misc, thanks. I think I'll wait with the driver patches until next week or so. -Daniel > --- > drivers/gpu/drm/drm_atomic_helper.c | 4 +++- > drivers/gpu/drm/drm_fb_helper.c | 13 ++++++++++++- > include/drm/drm_modeset_helper_vtables.h | 10 ++++++++-- > 3 files changed, 23 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c > index f6a3350..849d029 100644 > --- a/drivers/gpu/drm/drm_atomic_helper.c > +++ b/drivers/gpu/drm/drm_atomic_helper.c > @@ -300,8 +300,10 @@ update_connector_routing(struct drm_atomic_state *state, > if (funcs->atomic_best_encoder) > new_encoder = funcs->atomic_best_encoder(connector, > connector_state); > - else > + else if (funcs->best_encoder) > new_encoder = funcs->best_encoder(connector); > + else > + new_encoder = drm_atomic_helper_best_encoder(connector); > > if (!new_encoder) { > DRM_DEBUG_ATOMIC("No suitable encoder found for [CONNECTOR:%d:%s]\n", > diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c > index 7c2eb75..d44389a 100644 > --- a/drivers/gpu/drm/drm_fb_helper.c > +++ b/drivers/gpu/drm/drm_fb_helper.c > @@ -2000,7 +2000,18 @@ static int drm_pick_crtcs(struct drm_fb_helper *fb_helper, > my_score++; > > connector_funcs = connector->helper_private; > - encoder = connector_funcs->best_encoder(connector); > + > + /* > + * If the DRM device implements atomic hooks and ->best_encoder() is > + * NULL we fallback to the default drm_atomic_helper_best_encoder() > + * helper. > + */ > + if (fb_helper->dev->mode_config.funcs->atomic_commit && > + !connector_funcs->best_encoder) > + encoder = drm_atomic_helper_best_encoder(connector); > + else > + encoder = connector_funcs->best_encoder(connector); > + > if (!encoder) > goto out; > > diff --git a/include/drm/drm_modeset_helper_vtables.h b/include/drm/drm_modeset_helper_vtables.h > index d4619dc..4e7a53b 100644 > --- a/include/drm/drm_modeset_helper_vtables.h > +++ b/include/drm/drm_modeset_helper_vtables.h > @@ -736,6 +736,11 @@ struct drm_connector_helper_funcs { > * inspect dynamic configuration state should instead use > * @atomic_best_encoder. > * > + * You can leave this function to NULL if the connector is only > + * attached to a single encoder and you are using the atomic helpers. > + * In this case, the core will call drm_atomic_helper_best_encoder() > + * for you. > + * > * RETURNS: > * > * Encoder that should be used for the given connector and connector > @@ -752,8 +757,9 @@ struct drm_connector_helper_funcs { > * need to select the best encoder depending upon the desired > * configuration and can't select it statically. > * > - * This function is used by drm_atomic_helper_check_modeset() and either > - * this or @best_encoder is required. > + * This function is used by drm_atomic_helper_check_modeset(). > + * If it is not implemented, the core will fallback to @best_encoder > + * (or drm_atomic_helper_best_encoder() if @best_encoder is NULL). > * > * NOTE: > * > -- > 2.7.4 > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch