From: Robert Foss <robert.foss@collabora.com>
To: Mauro Rossi <issor.oruam@gmail.com>
Cc: ML dri-devel <dri-devel@lists.freedesktop.org>,
"Yu, Qiang" <qiang.yu@amd.com>, Jim Bish <jim.bish@intel.com>
Subject: Re: [drm_hwcomposer PATCH] Take Connection state into account. (v2)
Date: Wed, 03 Jan 2018 16:25:19 +0100 [thread overview]
Message-ID: <1514993119.8410.8.camel@collabora.com> (raw)
In-Reply-To: <CAEQFVGZC-zyht=0Fn0EZEMVu6eqt2s4-RhKnc9HDXEErU0VPxg@mail.gmail.com>
[-- Attachment #1.1: Type: text/plain, Size: 6965 bytes --]
Hey Mauro,
On Wed, 2018-01-03 at 13:40 +0100, Mauro Rossi wrote:
>
>
> 2018-01-03 12:16 GMT+01:00 Robert Foss <robert.foss@collabora.com>:
> > Hey Mauro,
> > /
> > Thanks for the patch! It builds and looks good to me, but I have
> > some
> > suggestions however.
> >
> >
> > On Wed, 2018-01-03 at 11:10 +0100, Mauro Rossi wrote:
> > > These changes avoid following logcat error on integrated and
> > > dedicated GPUs:
> > >
> > > ... 2245 2245 E hwc-drm-resources: Could not find a suitable
> > > encoder/crtc for display 2
> > > ... 2245 2245 E hwc-drm-resources: Failed CreateDisplayPipe 56
> > with
> > > -19
> > > ... 2245 2245 E hwcomposer-drm: Can't initialize Drm object -19
> >
> > It isn't quite clear clear which errors belong to which changes,
> > to make this patch a bit more bisectable it would be nice to see
> > independent commits created for each error.
>
> Hi Robert,
>
> In this case I honestly do not think that splitting would add too
> much value,
> original commit (v1) is well documented in [1] and tackles with bug
> in drmresources.cpp
> which currently fails to find workable crtc -> encoder -> display
> output combination
> for integrated and dedicated GPUs. Besides that it was also adding
> DisplayPort drm mode connector type
>
> So changes in drmresources.cpp belong to solving "Could not find a
> suitable encoder/crtc for display X" problem,
> which is a show stopper for enabling mainline graphics in android-x86
>
> Other developers observed independently that the current
> implementation is "embedded oriented" and only checks the first
> display output,
> isn't it?
As far as I remember it prioritizes the internal connections, if none
are found, it will use the external ones.
>
> The only change I did in drmconnector.cpp is to account for the
> additional external drm mode connectors types
> which were missing (DVID, DVII, VGA) . One question on my side: Do we
> need more?
I think they can be added as need be, that's been the process this far.
>
> Besides these minor types lists discussions, I would propose you to
> check with Jim Bish if he should have the credit for the patch
> and review the coding of his changes.
So, I think we could just have both of you SOBs in the commit message,
and the would be fine.
>
>
> > >
> > > (v1) There are various places where we should be really taking
> > > connection
> > > state into account before querying the properties or assuming it
> > > as primary. This patch fixes them.
> > >
> > > BUG=None.
> > > TEST=System boots up and shows UI.
> > >
> > > (v1) Signed-off-by: Jim Bish <jim.bish@intel.com>
> > >
> > > (v2) porting of original commit 76fb87e675 of android-ia master
> > > with additional external connector types (DisplayPort, DVID,
> > DVII,
> > > VGA)
> > > Tested with i965 on Sandybridge and nouveau on GT120, GT610
> >
> > The commit message isn't really following the usual format. It
> > doesn't
> > need to include a changelog (that is typically placed between the
> > "---"
> > markers in the email instead),
> > and it is missing a signoff from the submitter (you).
>
> Sorry I don't have a signature, as usually my patches need sign-off
> from professionals,
> I'm a (crash test dummy) hobbyist..really :-)
>
> Maybe Rob Herring, Qiang Yu or Chih-Wei could review and sign-off
> the proposed patch
If you've tested or modified the code I would encourage you to add your
Signoff-by or Tested-by.
>
>
> > The BUG and TEST fields are not strictly required either, but
> > aren't a
> > problem.
>
> That part is the original Jim Bish commit message [1], my changes
> version is (v2)
> Sorry if I was not clear enought
That's quite alright. So let's clean up this commit message, and add
your Tested-by or Signoff-by (depending on if you changed any of the
code) and then I'll merge it.
Lastly, thanks for having a look at this, your contributions are very
welcome!
>
> > > ---
> > > drmconnector.cpp | 4 +++-
> > > drmresources.cpp | 9 +++++++--
> > > 2 files changed, 10 insertions(+), 3 deletions(-)
> > >
> > > diff --git a/drmconnector.cpp b/drmconnector.cpp
> > > index 247f56b..145518f 100644
> > > --- a/drmconnector.cpp
> > > +++ b/drmconnector.cpp
> > > @@ -73,7 +73,9 @@ bool DrmConnector::internal() const {
> > > }
> > >
> > > bool DrmConnector::external() const {
> > > - return type_ == DRM_MODE_CONNECTOR_HDMIA;
> > > + return type_ == DRM_MODE_CONNECTOR_HDMIA || type_ ==
> > > DRM_MODE_CONNECTOR_DisplayPort ||
> > > + type_ == DRM_MODE_CONNECTOR_DVID || type_ ==
> > > DRM_MODE_CONNECTOR_DVII ||
> > > + type_ == DRM_MODE_CONNECTOR_VGA;
> > > }
> >
> > The changes to external() should probably be broken out into it's
> > own
> > commit, since external() is called elsewhere changes to it _could_
> > introduce issues.
>
> Will you check the code, involving Jim Bish if necessary, about these
> potential issues?
> I am available to perform changes/tests, but the original maker will
> be better.
> Cheers
>
> Mauro
I won't, but it's ok the way it is, making small atomic patches is
preferable in general.
>
> > >
> > > bool DrmConnector::valid_type() const {
> > > diff --git a/drmresources.cpp b/drmresources.cpp
> > > index 32dd376..d582cfe 100644
> > > --- a/drmresources.cpp
> > > +++ b/drmresources.cpp
> > > @@ -159,7 +159,7 @@ int DrmResources::Init() {
> > >
> > > // First look for primary amongst internal connectors
> > > for (auto &conn : connectors_) {
> > > - if (conn->internal() && !found_primary) {
> > > + if (conn->state() == DRM_MODE_CONNECTED && conn->internal()
> > &&
> > > !found_primary) {
> > > conn->set_display(0);
> > > found_primary = true;
> > > } else {
> > > @@ -170,7 +170,7 @@ int DrmResources::Init() {
> > >
> > > // Then look for primary amongst external connectors
> > > for (auto &conn : connectors_) {
> > > - if (conn->external() && !found_primary) {
> > > + if (conn->state() == DRM_MODE_CONNECTED && conn->external()
> > &&
> > > !found_primary) {
> > > conn->set_display(0);
> > > found_primary = true;
> > > }
> > > @@ -288,6 +288,11 @@ int DrmResources::TryEncoderForDisplay(int
> > > display, DrmEncoder *enc) {
> > >
> > > int DrmResources::CreateDisplayPipe(DrmConnector *connector) {
> > > int display = connector->display();
> > > +
> > > + // skip not connected
> > > + if (connector->state() == DRM_MODE_DISCONNECTED)
> > > + return 0;
> > > +
> > > /* Try to use current setup first */
> > > if (connector->encoder()) {
> > > int ret = TryEncoderForDisplay(display, connector-
> > >encoder());
> >
>
> [1] https://github.com/android-ia/external-drm_hwcomposer/commit/76fb
> 87e675a20449d1261fccba5303aee7be3dba
>
[-- Attachment #1.2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 801 bytes --]
[-- Attachment #2: Type: text/plain, Size: 160 bytes --]
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2018-01-03 15:25 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-03 10:10 [drm_hwcomposer PATCH] Take Connection state into account. (v2) Mauro Rossi
2018-01-03 11:16 ` Robert Foss
2018-01-03 12:40 ` Mauro Rossi
2018-01-03 15:25 ` Robert Foss [this message]
2018-01-03 18:32 ` Bish, Jim
2018-01-04 17:46 ` Rob Herring
-- strict thread matches above, loose matches on Subject: below --
2018-01-05 23:59 [drm_hwcomposer] [PATCH] " Mauro Rossi
2018-01-08 13:41 ` Robert Foss
2018-01-08 20:41 ` Sean Paul
2018-01-08 20:46 ` Sean Paul
2018-02-01 4:42 ` Mauro Rossi
2018-02-01 14:27 ` Sean Paul
2018-02-02 8:42 ` Daniel Vetter
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1514993119.8410.8.camel@collabora.com \
--to=robert.foss@collabora.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=issor.oruam@gmail.com \
--cc=jim.bish@intel.com \
--cc=qiang.yu@amd.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox