All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jani Nikula <jani.nikula@linux.intel.com>
To: Daniel Vetter <daniel@ffwll.ch>
Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Subject: Re: [Intel-gfx] [PATCH 1/3] drm: Introduce scaling filter mode property
Date: Thu, 24 Oct 2019 15:12:07 +0300	[thread overview]
Message-ID: <87blu6cpgo.fsf@intel.com> (raw)
In-Reply-To: <20191024120656.GB11828@phenom.ffwll.local>

On Thu, 24 Oct 2019, Daniel Vetter <daniel@ffwll.ch> wrote:
> On Wed, Oct 23, 2019 at 03:44:17PM +0300, Jani Nikula wrote:
>> On Tue, 22 Oct 2019, Daniel Vetter <daniel@ffwll.ch> wrote:
>> > On Tue, Oct 22, 2019 at 03:29:44PM +0530, Shashank Sharma wrote:
>> >> This patch adds a scaling filter mode porperty
>> >> to allow:
>> >> - A driver/HW to showcase it's scaling filter capabilities.
>> >> - A userspace to pick a desired effect while scaling.
>> >> 
>> >> This option will be particularly useful in the scenarios where
>> >> Integer mode scaling is possible, and a UI client wants to pick
>> >> filters like Nearest-neighbor applied for non-blurry outputs.
>> >> 
>> >> There was a RFC patch series published, to discus the request to enable
>> >> Integer mode scaling by some of the gaming communities, which can be
>> >> found here:
>> >> https://patchwork.freedesktop.org/series/66175/
>> >> 
>> >> Signed-off-by: Shashank Sharma <shashank.sharma@intel.com>
>> >
>> > Two things:
>> >
>> > - needs real property docs for this in the kms property chapter
>> > - would be good if we could somehow subsume the panel fitter prop into
>> >   this? Or at least document possible interactions with that.
>> >
>> > Plus userspace ofc, recommended best practices is to add a Link: tag
>> > pointing at the userspace patch series/merge request directly to the patch
>> > that adds the new uapi.
>> 
>> I think Link: should only be used for referencing the patch that became
>> the commit?
>
> Dave brought up the Link: bikeshed in his uapi rfc, I'm just following the
> herd here. But yeah maybe we want something else.
>> 
>> References: perhaps?
>
> Or Userspace: to make it real obvious?

Works for me, as long as we don't conflate Link. (Maybe Link: should've
been Patch: or Submission: or whatever.)

BR,
Jani.


> -Daniel
>
>> 
>> >
>> > Cheers, Daniel
>> >> ---
>> >>  drivers/gpu/drm/drm_atomic_uapi.c |  4 ++++
>> >>  include/drm/drm_crtc.h            | 26 ++++++++++++++++++++++++++
>> >>  include/drm/drm_mode_config.h     |  6 ++++++
>> >>  3 files changed, 36 insertions(+)
>> >> 
>> >> diff --git a/drivers/gpu/drm/drm_atomic_uapi.c b/drivers/gpu/drm/drm_atomic_uapi.c
>> >> index 0d466d3b0809..883329453a86 100644
>> >> --- a/drivers/gpu/drm/drm_atomic_uapi.c
>> >> +++ b/drivers/gpu/drm/drm_atomic_uapi.c
>> >> @@ -435,6 +435,8 @@ static int drm_atomic_crtc_set_property(struct drm_crtc *crtc,
>> >>  		return ret;
>> >>  	} else if (property == config->prop_vrr_enabled) {
>> >>  		state->vrr_enabled = val;
>> >> +	} else if (property == config->scaling_filter_property) {
>> >> +		state->scaling_filter = val;
>> >>  	} else if (property == config->degamma_lut_property) {
>> >>  		ret = drm_atomic_replace_property_blob_from_id(dev,
>> >>  					&state->degamma_lut,
>> >> @@ -503,6 +505,8 @@ drm_atomic_crtc_get_property(struct drm_crtc *crtc,
>> >>  		*val = (state->gamma_lut) ? state->gamma_lut->base.id : 0;
>> >>  	else if (property == config->prop_out_fence_ptr)
>> >>  		*val = 0;
>> >> +	else if (property == config->scaling_filter_property)
>> >> +		*val = state->scaling_filter;
>> >>  	else if (crtc->funcs->atomic_get_property)
>> >>  		return crtc->funcs->atomic_get_property(crtc, state, property, val);
>> >>  	else
>> >> diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
>> >> index 5e9b15a0e8c5..94c5509474a8 100644
>> >> --- a/include/drm/drm_crtc.h
>> >> +++ b/include/drm/drm_crtc.h
>> >> @@ -58,6 +58,25 @@ struct device_node;
>> >>  struct dma_fence;
>> >>  struct edid;
>> >>  
>> >> +enum drm_scaling_filters {
>> >> +	DRM_SCALING_FILTER_DEFAULT,
>> >> +	DRM_SCALING_FILTER_MEDIUM,
>> >> +	DRM_SCALING_FILTER_BILINEAR,
>> >> +	DRM_SCALING_FILTER_NN,
>> >> +	DRM_SCALING_FILTER_NN_IS_ONLY,
>> >> +	DRM_SCALING_FILTER_EDGE_ENHANCE,
>> >> +	DRM_SCALING_FILTER_INVALID,
>> >> +};
>> >> +
>> >> +static const struct drm_prop_enum_list drm_scaling_filter_enum_list[] = {
>> >> +	{ DRM_SCALING_FILTER_DEFAULT, "Default" },
>> >> +	{ DRM_SCALING_FILTER_MEDIUM, "Medium" },
>> >> +	{ DRM_SCALING_FILTER_BILINEAR, "Bilinear" },
>> >> +	{ DRM_SCALING_FILTER_NN, "Nearest Neighbor" },
>> >> +	{ DRM_SCALING_FILTER_NN_IS_ONLY, "Integer Mode Scaling" },
>> >> +	{ DRM_SCALING_FILTER_INVALID, "Invalid" },
>> >> +};
>> >> +
>> >>  static inline int64_t U642I64(uint64_t val)
>> >>  {
>> >>  	return (int64_t)*((int64_t *)&val);
>> >> @@ -283,6 +302,13 @@ struct drm_crtc_state {
>> >>  	 */
>> >>  	u32 target_vblank;
>> >>  
>> >> +	/**
>> >> +	 * @scaling_filter:
>> >> +	 *
>> >> +	 * Scaling filter mode to be applied
>> >> +	 */
>> >> +	u32 scaling_filter;
>> >> +
>> >>  	/**
>> >>  	 * @async_flip:
>> >>  	 *
>> >> diff --git a/include/drm/drm_mode_config.h b/include/drm/drm_mode_config.h
>> >> index 3bcbe30339f0..efd6fd55770f 100644
>> >> --- a/include/drm/drm_mode_config.h
>> >> +++ b/include/drm/drm_mode_config.h
>> >> @@ -914,6 +914,12 @@ struct drm_mode_config {
>> >>  	 */
>> >>  	struct drm_property *modifiers_property;
>> >>  
>> >> +	/**
>> >> +	 * @scaling_filter_property: CRTC property to apply a particular filter
>> >> +	 * while scaling in panel fitter mode.
>> >> +	 */
>> >> +	struct drm_property *scaling_filter_property;
>> >> +
>> >>  	/* cursor size */
>> >>  	uint32_t cursor_width, cursor_height;
>> >>  
>> >> -- 
>> >> 2.17.1
>> >> 
>> >> _______________________________________________
>> >> Intel-gfx mailing list
>> >> Intel-gfx@lists.freedesktop.org
>> >> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
>> 
>> -- 
>> Jani Nikula, Intel Open Source Graphics Center

-- 
Jani Nikula, Intel Open Source Graphics Center
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

WARNING: multiple messages have this Message-ID (diff)
From: Jani Nikula <jani.nikula@linux.intel.com>
To: Daniel Vetter <daniel@ffwll.ch>
Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Subject: Re: [Intel-gfx] [PATCH 1/3] drm: Introduce scaling filter mode property
Date: Thu, 24 Oct 2019 15:12:07 +0300	[thread overview]
Message-ID: <87blu6cpgo.fsf@intel.com> (raw)
Message-ID: <20191024121207.HLFGLUr5yHrnO54VjPx8H2renensVL5s4ryYbDps2_g@z> (raw)
In-Reply-To: <20191024120656.GB11828@phenom.ffwll.local>

On Thu, 24 Oct 2019, Daniel Vetter <daniel@ffwll.ch> wrote:
> On Wed, Oct 23, 2019 at 03:44:17PM +0300, Jani Nikula wrote:
>> On Tue, 22 Oct 2019, Daniel Vetter <daniel@ffwll.ch> wrote:
>> > On Tue, Oct 22, 2019 at 03:29:44PM +0530, Shashank Sharma wrote:
>> >> This patch adds a scaling filter mode porperty
>> >> to allow:
>> >> - A driver/HW to showcase it's scaling filter capabilities.
>> >> - A userspace to pick a desired effect while scaling.
>> >> 
>> >> This option will be particularly useful in the scenarios where
>> >> Integer mode scaling is possible, and a UI client wants to pick
>> >> filters like Nearest-neighbor applied for non-blurry outputs.
>> >> 
>> >> There was a RFC patch series published, to discus the request to enable
>> >> Integer mode scaling by some of the gaming communities, which can be
>> >> found here:
>> >> https://patchwork.freedesktop.org/series/66175/
>> >> 
>> >> Signed-off-by: Shashank Sharma <shashank.sharma@intel.com>
>> >
>> > Two things:
>> >
>> > - needs real property docs for this in the kms property chapter
>> > - would be good if we could somehow subsume the panel fitter prop into
>> >   this? Or at least document possible interactions with that.
>> >
>> > Plus userspace ofc, recommended best practices is to add a Link: tag
>> > pointing at the userspace patch series/merge request directly to the patch
>> > that adds the new uapi.
>> 
>> I think Link: should only be used for referencing the patch that became
>> the commit?
>
> Dave brought up the Link: bikeshed in his uapi rfc, I'm just following the
> herd here. But yeah maybe we want something else.
>> 
>> References: perhaps?
>
> Or Userspace: to make it real obvious?

Works for me, as long as we don't conflate Link. (Maybe Link: should've
been Patch: or Submission: or whatever.)

BR,
Jani.


> -Daniel
>
>> 
>> >
>> > Cheers, Daniel
>> >> ---
>> >>  drivers/gpu/drm/drm_atomic_uapi.c |  4 ++++
>> >>  include/drm/drm_crtc.h            | 26 ++++++++++++++++++++++++++
>> >>  include/drm/drm_mode_config.h     |  6 ++++++
>> >>  3 files changed, 36 insertions(+)
>> >> 
>> >> diff --git a/drivers/gpu/drm/drm_atomic_uapi.c b/drivers/gpu/drm/drm_atomic_uapi.c
>> >> index 0d466d3b0809..883329453a86 100644
>> >> --- a/drivers/gpu/drm/drm_atomic_uapi.c
>> >> +++ b/drivers/gpu/drm/drm_atomic_uapi.c
>> >> @@ -435,6 +435,8 @@ static int drm_atomic_crtc_set_property(struct drm_crtc *crtc,
>> >>  		return ret;
>> >>  	} else if (property == config->prop_vrr_enabled) {
>> >>  		state->vrr_enabled = val;
>> >> +	} else if (property == config->scaling_filter_property) {
>> >> +		state->scaling_filter = val;
>> >>  	} else if (property == config->degamma_lut_property) {
>> >>  		ret = drm_atomic_replace_property_blob_from_id(dev,
>> >>  					&state->degamma_lut,
>> >> @@ -503,6 +505,8 @@ drm_atomic_crtc_get_property(struct drm_crtc *crtc,
>> >>  		*val = (state->gamma_lut) ? state->gamma_lut->base.id : 0;
>> >>  	else if (property == config->prop_out_fence_ptr)
>> >>  		*val = 0;
>> >> +	else if (property == config->scaling_filter_property)
>> >> +		*val = state->scaling_filter;
>> >>  	else if (crtc->funcs->atomic_get_property)
>> >>  		return crtc->funcs->atomic_get_property(crtc, state, property, val);
>> >>  	else
>> >> diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
>> >> index 5e9b15a0e8c5..94c5509474a8 100644
>> >> --- a/include/drm/drm_crtc.h
>> >> +++ b/include/drm/drm_crtc.h
>> >> @@ -58,6 +58,25 @@ struct device_node;
>> >>  struct dma_fence;
>> >>  struct edid;
>> >>  
>> >> +enum drm_scaling_filters {
>> >> +	DRM_SCALING_FILTER_DEFAULT,
>> >> +	DRM_SCALING_FILTER_MEDIUM,
>> >> +	DRM_SCALING_FILTER_BILINEAR,
>> >> +	DRM_SCALING_FILTER_NN,
>> >> +	DRM_SCALING_FILTER_NN_IS_ONLY,
>> >> +	DRM_SCALING_FILTER_EDGE_ENHANCE,
>> >> +	DRM_SCALING_FILTER_INVALID,
>> >> +};
>> >> +
>> >> +static const struct drm_prop_enum_list drm_scaling_filter_enum_list[] = {
>> >> +	{ DRM_SCALING_FILTER_DEFAULT, "Default" },
>> >> +	{ DRM_SCALING_FILTER_MEDIUM, "Medium" },
>> >> +	{ DRM_SCALING_FILTER_BILINEAR, "Bilinear" },
>> >> +	{ DRM_SCALING_FILTER_NN, "Nearest Neighbor" },
>> >> +	{ DRM_SCALING_FILTER_NN_IS_ONLY, "Integer Mode Scaling" },
>> >> +	{ DRM_SCALING_FILTER_INVALID, "Invalid" },
>> >> +};
>> >> +
>> >>  static inline int64_t U642I64(uint64_t val)
>> >>  {
>> >>  	return (int64_t)*((int64_t *)&val);
>> >> @@ -283,6 +302,13 @@ struct drm_crtc_state {
>> >>  	 */
>> >>  	u32 target_vblank;
>> >>  
>> >> +	/**
>> >> +	 * @scaling_filter:
>> >> +	 *
>> >> +	 * Scaling filter mode to be applied
>> >> +	 */
>> >> +	u32 scaling_filter;
>> >> +
>> >>  	/**
>> >>  	 * @async_flip:
>> >>  	 *
>> >> diff --git a/include/drm/drm_mode_config.h b/include/drm/drm_mode_config.h
>> >> index 3bcbe30339f0..efd6fd55770f 100644
>> >> --- a/include/drm/drm_mode_config.h
>> >> +++ b/include/drm/drm_mode_config.h
>> >> @@ -914,6 +914,12 @@ struct drm_mode_config {
>> >>  	 */
>> >>  	struct drm_property *modifiers_property;
>> >>  
>> >> +	/**
>> >> +	 * @scaling_filter_property: CRTC property to apply a particular filter
>> >> +	 * while scaling in panel fitter mode.
>> >> +	 */
>> >> +	struct drm_property *scaling_filter_property;
>> >> +
>> >>  	/* cursor size */
>> >>  	uint32_t cursor_width, cursor_height;
>> >>  
>> >> -- 
>> >> 2.17.1
>> >> 
>> >> _______________________________________________
>> >> Intel-gfx mailing list
>> >> Intel-gfx@lists.freedesktop.org
>> >> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
>> 
>> -- 
>> Jani Nikula, Intel Open Source Graphics Center

-- 
Jani Nikula, Intel Open Source Graphics Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2019-10-24 12:12 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-22  9:59 [PATCH 0/3] Add scaling filters in DRM layer Shashank Sharma
2019-10-22  9:59 ` [PATCH 1/3] drm: Introduce scaling filter mode property Shashank Sharma
2019-10-22 10:08   ` [Intel-gfx] " Daniel Vetter
2019-10-22 10:12     ` Sharma, Shashank
2019-10-22 12:25       ` Ville Syrjälä
2019-10-23 12:44     ` Jani Nikula
2019-10-23 12:44       ` [Intel-gfx] " Jani Nikula
2019-10-23 12:44       ` Jani Nikula
2019-10-24 12:06       ` Daniel Vetter
2019-10-24 12:06         ` Daniel Vetter
2019-10-24 12:12         ` Jani Nikula [this message]
2019-10-24 12:12           ` Jani Nikula
2019-10-24 12:14           ` Daniel Vetter
2019-10-24 12:14             ` Daniel Vetter
2019-10-24 12:23             ` Jani Nikula
2019-10-24 12:23               ` [Intel-gfx] " Jani Nikula
2019-10-24 12:23               ` Jani Nikula
2019-10-22 12:20   ` Ville Syrjälä
2019-10-22 14:06     ` Harry Wentland
2019-10-22 15:28       ` Sharma, Shashank
2019-10-22 15:42       ` Ville Syrjälä
2019-10-22 15:18     ` Sharma, Shashank
2019-10-23  7:34       ` Pekka Paalanen
2019-10-23 12:41         ` Ville Syrjälä
2019-10-23 12:41           ` [Intel-gfx] " Ville Syrjälä
2019-10-23 12:41           ` Ville Syrjälä
2019-10-22 12:26   ` Ville Syrjälä
2019-10-22 15:21     ` Sharma, Shashank
2019-10-22 15:38       ` Ville Syrjälä
2019-10-22 13:26   ` Mihail Atanassov
2019-10-22 13:32     ` Mihail Atanassov
2019-10-22 15:25     ` Sharma, Shashank
2019-10-22  9:59 ` [PATCH 2/3] drm/i915: Add support for scaling filters Shashank Sharma
2019-10-22  9:59 ` [PATCH 3/3] drm/i915: Handle nearest-neighbor scaling filter Shashank Sharma
2019-10-22 13:18 ` ✗ Fi.CI.CHECKPATCH: warning for Add scaling filters in DRM layer Patchwork
2019-10-22 13:21 ` ✗ Fi.CI.SPARSE: " Patchwork
2019-10-22 13:50 ` ✓ Fi.CI.BAT: success " Patchwork
2019-10-22 23:06 ` ✗ 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=87blu6cpgo.fsf@intel.com \
    --to=jani.nikula@linux.intel.com \
    --cc=daniel@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    /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.