From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: "Sharma, Shashank" <shashank.sharma@intel.com>
Cc: Jose Abreu <Jose.Abreu@synopsys.com>,
"Lin, Jia" <lin.a.jia@intel.com>,
Akashdeep Sharma <akashdeep.sharma@intel.com>,
Emil Velikov <emil.l.velikov@gmail.com>,
dri-devel@lists.freedesktop.org,
Daniel Vetter <daniel.vetter@ffwll.ch>,
"Nautiyal, Ankit K" <ankit.k.nautiyal@intel.com>,
Jim Bride <jim.bride@linux.intel.com>
Subject: Re: [PATCH v3 3/8] drm/edid: Fix cea mode aspect ratio handling
Date: Wed, 17 Jan 2018 17:29:26 +0200 [thread overview]
Message-ID: <20180117152926.GL10981@intel.com> (raw)
In-Reply-To: <9cc4e294-42ac-55de-7a97-34f4b67ebfa1@intel.com>
On Wed, Jan 17, 2018 at 02:35:40PM +0530, Sharma, Shashank wrote:
> Regards
>
> Shashank
>
>
> On 1/12/2018 11:51 AM, Nautiyal, Ankit K wrote:
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >
> > commit 6dffd431e229 ("drm: Add aspect ratio parsing in DRM layer")
> > cause us to not send out any VICs in the AVI infoframes. That commit
> > was since reverted, but if and when we add aspect ratio handing back
> > we need to be more careful.
> >
> > Let's handle this by considering the aspect ratio as a requirement
> > for cea mode matching only if the passed in mode actually has a
> > non-zero aspect ratio field. This will keep userspace that doesn't
> > provide an aspect ratio working as before by matching it to the
> > first otherwise equal cea mode. And once userspace starts to
> > provide the aspect ratio it will be considerd a hard requirement
> > for the match.
> >
> > Also change the hdmi mode matching to use drm_mode_match() for
> > consistency, but we don't match on aspect ratio there since the
> > spec doesn't list a specific aspect ratio for those modes.
> >
> > Cc: Shashank Sharma <shashank.sharma@intel.com>
> > Cc: "Lin, Jia" <lin.a.jia@intel.com>
> > Cc: Akashdeep Sharma <akashdeep.sharma@intel.com>
> > Cc: Jim Bride <jim.bride@linux.intel.com>
> > Cc: Jose Abreu <Jose.Abreu@synopsys.com>
> > Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
> > Cc: Emil Velikov <emil.l.velikov@gmail.com>
> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > ---
> > drivers/gpu/drm/drm_edid.c | 18 ++++++++++++++----
> > 1 file changed, 14 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
> > index 1818a71..3d57c41 100644
> > --- a/drivers/gpu/drm/drm_edid.c
> > +++ b/drivers/gpu/drm/drm_edid.c
> > @@ -2908,11 +2908,15 @@ cea_mode_alternate_timings(u8 vic, struct drm_display_mode *mode)
> > static u8 drm_match_cea_mode_clock_tolerance(const struct drm_display_mode *to_match,
> > unsigned int clock_tolerance)
> > {
> > + unsigned int match_flags = DRM_MODE_MATCH_TIMINGS | DRM_MODE_MATCH_FLAGS;
> > u8 vic;
> >
> > if (!to_match->clock)
> > return 0;
> >
> > + if (to_match->picture_aspect_ratio)
> > + match_flags |= DRM_MODE_MATCH_ASPECT_RATIO;
> > +
> > for (vic = 1; vic < ARRAY_SIZE(edid_cea_modes); vic++) {
> > struct drm_display_mode cea_mode = edid_cea_modes[vic];
> > unsigned int clock1, clock2;
> > @@ -2926,7 +2930,7 @@ static u8 drm_match_cea_mode_clock_tolerance(const struct drm_display_mode *to_m
> > continue;
> >
> > do {
> > - if (drm_mode_equal_no_clocks_no_stereo(to_match, &cea_mode))
> > + if (drm_mode_match(to_match, &cea_mode, match_flags))
> > return vic;
> > } while (cea_mode_alternate_timings(vic, &cea_mode));
> > }
> > @@ -2943,11 +2947,15 @@ static u8 drm_match_cea_mode_clock_tolerance(const struct drm_display_mode *to_m
> > */
> > u8 drm_match_cea_mode(const struct drm_display_mode *to_match)
> > {
> > + unsigned int match_flags = DRM_MODE_MATCH_TIMINGS | DRM_MODE_MATCH_FLAGS;
> > u8 vic;
> >
> > if (!to_match->clock)
> > return 0;
> >
> > + if (to_match->picture_aspect_ratio)
> > + match_flags |= DRM_MODE_MATCH_ASPECT_RATIO;
> > +
> How about stereo flags ? CEA modes can be 3d and in that case we might
> want to add DRM_MODE_MATCH_3D_FLAGS here
There are no separate VICs for stereo vs. no stereo. So ignoring the
stereo flags here seems like the correct thing to do.
>
> - Shashank
> > for (vic = 1; vic < ARRAY_SIZE(edid_cea_modes); vic++) {
> > struct drm_display_mode cea_mode = edid_cea_modes[vic];
> > unsigned int clock1, clock2;
> > @@ -2961,7 +2969,7 @@ u8 drm_match_cea_mode(const struct drm_display_mode *to_match)
> > continue;
> >
> > do {
> > - if (drm_mode_equal_no_clocks_no_stereo(to_match, &cea_mode))
> > + if (drm_mode_match(to_match, &cea_mode, match_flags))
> > return vic;
> > } while (cea_mode_alternate_timings(vic, &cea_mode));
> > }
> > @@ -3008,6 +3016,7 @@ hdmi_mode_alternate_clock(const struct drm_display_mode *hdmi_mode)
> > static u8 drm_match_hdmi_mode_clock_tolerance(const struct drm_display_mode *to_match,
> > unsigned int clock_tolerance)
> > {
> > + unsigned int match_flags = DRM_MODE_MATCH_TIMINGS | DRM_MODE_MATCH_FLAGS;
> > u8 vic;
> >
> > if (!to_match->clock)
> > @@ -3025,7 +3034,7 @@ static u8 drm_match_hdmi_mode_clock_tolerance(const struct drm_display_mode *to_
> > abs(to_match->clock - clock2) > clock_tolerance)
> > continue;
> >
> > - if (drm_mode_equal_no_clocks_no_stereo(to_match, hdmi_mode))
> > + if (drm_mode_match(to_match, hdmi_mode, match_flags))
> > return vic;
> > }
> >
> > @@ -3042,6 +3051,7 @@ static u8 drm_match_hdmi_mode_clock_tolerance(const struct drm_display_mode *to_
> > */
> > static u8 drm_match_hdmi_mode(const struct drm_display_mode *to_match)
> > {
> > + unsigned int match_flags = DRM_MODE_MATCH_TIMINGS | DRM_MODE_MATCH_FLAGS;
> > u8 vic;
> >
> > if (!to_match->clock)
> > @@ -3057,7 +3067,7 @@ static u8 drm_match_hdmi_mode(const struct drm_display_mode *to_match)
> >
> > if ((KHZ2PICOS(to_match->clock) == KHZ2PICOS(clock1) ||
> > KHZ2PICOS(to_match->clock) == KHZ2PICOS(clock2)) &&
> > - drm_mode_equal_no_clocks_no_stereo(to_match, hdmi_mode))
> > + drm_mode_match(to_match, hdmi_mode, match_flags))
> > return vic;
> > }
> > return 0;
--
Ville Syrjälä
Intel OTC
_______________________________________________
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-17 15:29 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-12 6:21 [PATCH v3 0/8] Aspect ratio support in DRM layer Nautiyal, Ankit K
2018-01-12 6:21 ` [PATCH v3 1/8] drm/modes: Introduce drm_mode_match() Nautiyal, Ankit K
2018-01-17 8:41 ` Sharma, Shashank
2018-01-17 15:21 ` Ville Syrjälä
2018-01-18 6:10 ` Sharma, Shashank
2018-01-12 6:21 ` [PATCH v3 2/8] drm/edid: Use drm_mode_match_no_clocks_no_stereo() for consistentcy Nautiyal, Ankit K
2018-01-17 8:53 ` Sharma, Shashank
2018-01-12 6:21 ` [PATCH v3 3/8] drm/edid: Fix cea mode aspect ratio handling Nautiyal, Ankit K
2018-01-17 9:05 ` Sharma, Shashank
2018-01-17 15:29 ` Ville Syrjälä [this message]
2018-01-18 6:14 ` Sharma, Shashank
2018-01-12 6:21 ` [PATCH v3 4/8] drm: Add DRM client cap for aspect-ratio Nautiyal, Ankit K
2018-01-17 9:11 ` Sharma, Shashank
2018-01-18 10:16 ` Maarten Lankhorst
2018-01-18 15:41 ` ankit.k.nautiyal
2018-01-18 16:04 ` Ville Syrjälä
2018-01-19 5:44 ` Nautiyal, Ankit K
2018-01-22 4:34 ` [PATCH v4 " Nautiyal, Ankit K
2018-01-12 6:21 ` [PATCH v3 5/8] drm: Handle aspect ratio info in atomic and legacy modeset paths Nautiyal, Ankit K
2018-01-29 18:53 ` Ville Syrjälä
2018-01-31 6:34 ` Nautiyal, Ankit K
2018-01-31 13:09 ` Ville Syrjälä
2018-02-01 11:05 ` Nautiyal, Ankit K
2018-02-01 12:54 ` Ville Syrjälä
2018-02-08 4:29 ` Nautiyal, Ankit K
2018-02-13 4:51 ` Nautiyal, Ankit K
2018-02-13 13:18 ` Ville Syrjälä
2018-02-13 16:23 ` Nautiyal, Ankit K
2018-02-13 16:45 ` Ville Syrjälä
2018-02-15 11:57 ` Nautiyal, Ankit K
2018-01-12 6:21 ` [PATCH v3 6/8] drm: Expose modes with aspect ratio, only if requested Nautiyal, Ankit K
2018-01-29 18:58 ` Ville Syrjälä
2018-01-31 8:00 ` Nautiyal, Ankit K
2018-01-12 6:21 ` [PATCH v3 7/8] drm: Add aspect ratio parsing in DRM layer Nautiyal, Ankit K
2018-01-12 6:21 ` [PATCH v3 8/8] drm: Add and handle new aspect ratios " Nautiyal, Ankit K
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=20180117152926.GL10981@intel.com \
--to=ville.syrjala@linux.intel.com \
--cc=Jose.Abreu@synopsys.com \
--cc=akashdeep.sharma@intel.com \
--cc=ankit.k.nautiyal@intel.com \
--cc=daniel.vetter@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=emil.l.velikov@gmail.com \
--cc=jim.bride@linux.intel.com \
--cc=lin.a.jia@intel.com \
--cc=shashank.sharma@intel.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