From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Radhakrishna Sripada <radhakrishna.sripada@intel.com>
Cc: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>,
intel-gfx@lists.freedesktop.org,
Kishore Kadiyala <kishore.kadiyala@intel.com>,
Manasi Navare <manasi.d.navare@intel.com>,
dri-devel@lists.freedesktop.org,
Rodrigo Vivi <rodrigo.vivi@intel.com>
Subject: Re: [PATCH v4 1/2] drm: Add connector property to limit max bpc
Date: Thu, 30 Aug 2018 18:26:10 +0300 [thread overview]
Message-ID: <20180830152610.GM5565@intel.com> (raw)
In-Reply-To: <20180830150649.760-1-radhakrishna.sripada@intel.com>
On Thu, Aug 30, 2018 at 08:06:48AM -0700, Radhakrishna Sripada wrote:
> At times 12bpc HDMI cannot be driven due to faulty cables, dongles
> level shifters etc. To workaround them we may need to drive the output
> at a lower bpc. Currently the user space does not have a way to limit
> the bpc. The default bpc to be programmed is decided by the driver and
> is run against connector limitations.
>
> Creating a new connector property "max bpc" in order to limit the bpc.
> xrandr can make use of this connector property to make sure that bpc does
> not exceed the configured value. This property can be used by userspace to
> set the bpc.
>
> V2: Initialize max_bpc to satisfy kms_properties
> V3: Move the property to drm_connector
> V4: Split drm and i915 components(Ville)
>
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Cc: Kishore Kadiyala <kishore.kadiyala@intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Cc: Manasi Navare <manasi.d.navare@intel.com>
> Cc: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
> Signed-off-by: Radhakrishna Sripada <radhakrishna.sripada@intel.com>
> ---
> drivers/gpu/drm/drm_atomic.c | 4 ++++
> drivers/gpu/drm/drm_atomic_helper.c | 4 ++++
> include/drm/drm_connector.h | 6 ++++++
> include/drm/drm_mode_config.h | 5 +++++
> 4 files changed, 19 insertions(+)
>
> diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c
> index d0478abc01bd..4e352fc1f0a0 100644
> --- a/drivers/gpu/drm/drm_atomic.c
> +++ b/drivers/gpu/drm/drm_atomic.c
> @@ -1420,6 +1420,8 @@ static int drm_atomic_connector_set_property(struct drm_connector *connector,
>
> return set_out_fence_for_connector(state->state, connector,
> fence_ptr);
> + } else if (property == config->max_bpc_property) {
> + state->max_bpc = val;
> } else if (connector->funcs->atomic_set_property) {
> return connector->funcs->atomic_set_property(connector,
> state, property, val);
> @@ -1515,6 +1517,8 @@ drm_atomic_connector_get_property(struct drm_connector *connector,
> *val = 0;
> } else if (property == config->writeback_out_fence_ptr_property) {
> *val = 0;
> + } else if (property == config->max_bpc_property) {
> + *val = state->max_bpc;
> } else if (connector->funcs->atomic_get_property) {
> return connector->funcs->atomic_get_property(connector,
> state, property, val);
> diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
> index 2c23a48482da..7f763650a623 100644
> --- a/drivers/gpu/drm/drm_atomic_helper.c
> +++ b/drivers/gpu/drm/drm_atomic_helper.c
> @@ -638,6 +638,10 @@ drm_atomic_helper_check_modeset(struct drm_device *dev,
> if (old_connector_state->link_status !=
> new_connector_state->link_status)
> new_crtc_state->connectors_changed = true;
> +
> + if (old_connector_state->max_bpc !=
> + new_connector_state->max_bpc)
> + new_crtc_state->connectors_changed = true;
> }
>
> if (funcs->atomic_check)
> diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
> index 97ea41dc678f..fc11f40aae51 100644
> --- a/include/drm/drm_connector.h
> +++ b/include/drm/drm_connector.h
> @@ -460,6 +460,12 @@ struct drm_connector_state {
> * drm_writeback_signal_completion()
> */
> struct drm_writeback_job *writeback_job;
> +
> + /**
> + * @max_bpc: Connector property to limit the maximum bit depth of
> + * the pixels.
> + */
> + unsigned int max_bpc;
> };
>
> /**
> diff --git a/include/drm/drm_mode_config.h b/include/drm/drm_mode_config.h
> index a0b202e1d69a..b9cd7a73b244 100644
> --- a/include/drm/drm_mode_config.h
> +++ b/include/drm/drm_mode_config.h
> @@ -562,6 +562,11 @@ struct drm_mode_config {
> */
> struct drm_property *link_status_property;
> /**
> + * @max_bpc_property: Default connector property for the max bpc to be
> + * driven out of the connector.
> + */
> + struct drm_property *max_bpc_property;
If we want the exposed limits to be accurate this needs to be
per-connector. The other option of course is to just expose the
global min-max range for the entire device.
The way you wrote the i915 bits suggest you wanted to go for
the per-connector apporach instead.
> + /**
> * @plane_type_property: Default plane property to differentiate
> * CURSOR, PRIMARY and OVERLAY legacy uses of planes.
> */
> --
> 2.9.3
--
Ville Syrjälä
Intel
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2018-08-30 15:26 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-08-30 15:06 [PATCH v4 1/2] drm: Add connector property to limit max bpc Radhakrishna Sripada
2018-08-30 15:06 ` [PATCH v4 2/2] drm/i915: Allow "max bpc" property to limit pipe_bpp Radhakrishna Sripada
2018-08-30 15:26 ` Ville Syrjälä [this message]
2018-08-30 15:50 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [v4,1/2] drm: Add connector property to limit max bpc Patchwork
2018-08-30 16:11 ` ✓ Fi.CI.BAT: success " Patchwork
2018-08-30 21:23 ` ✗ Fi.CI.IGT: failure " Patchwork
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=20180830152610.GM5565@intel.com \
--to=ville.syrjala@linux.intel.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=kishore.kadiyala@intel.com \
--cc=manasi.d.navare@intel.com \
--cc=radhakrishna.sripada@intel.com \
--cc=rodrigo.vivi@intel.com \
--cc=stanislav.lisovskiy@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.