mbox series

[RFC,v1,0/3] drm/i915: Add support for XRandR Border property

Message ID 20240221085246.808287-1-vivek.kasireddy@intel.com (mailing list archive)
Headers show
Series drm/i915: Add support for XRandR Border property | expand

Message

Vivek Kasireddy Feb. 21, 2024, 8:47 a.m. UTC
Some customers and users have expressed interest in adding borders
(or margins) to certain displays in their multi-display configurations.
To address this need, this patchset implements the XRandR Border
property as defined here:
https://cgit.freedesktop.org/xorg/proto/randrproto/tree/randrproto.txt#n2032

---

Patchset overview:

Patch 1: Create skl_program_crtc_scaler() to program scaler for crtc
Patch 2: Create and attach the Border property to DP and HDMI
Patch 3: Implement Border property by enabling crtc scalar

This series is tested using following method:
- Run the following xrandr command with different parameters:
xrandr --output HDMI-3 --pos 1920x0 --mode 1280x1024 --fb 3840x2160 --scale 2.11x2.11 --set "Border" 150,0,150,0

The following patch was also added to the modesetting driver to
implement the Border property:
https://gitlab.freedesktop.org/Vivek/xserver/-/commit/62abfc438f0d17fe7f88bf2826c9784c2b36443b

Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Matt Roper <matthew.d.roper@intel.com>
Cc: Dongwon Kim <dongwon.kim@intel.com>

Vivek Kasireddy (3):
  drm/i915: Rename skl_pfit_enable() to skl_program_crtc_scaler()
  drm/i915: Attach the Border property to DP and HDMI connectors
  drm/i915: Apply border adjustments and enable scaler on the crtc

 drivers/gpu/drm/i915/display/intel_atomic.c   | 29 ++++++++++-
 .../gpu/drm/i915/display/intel_connector.c    | 49 +++++++++++++++++++
 .../gpu/drm/i915/display/intel_connector.h    |  3 ++
 drivers/gpu/drm/i915/display/intel_display.c  | 25 ++++++++--
 .../gpu/drm/i915/display/intel_display_core.h |  1 +
 .../drm/i915/display/intel_display_types.h    |  6 +++
 drivers/gpu/drm/i915/display/intel_dp.c       | 11 +++++
 drivers/gpu/drm/i915/display/intel_hdmi.c     | 11 +++++
 drivers/gpu/drm/i915/display/skl_scaler.c     | 27 ++++++----
 drivers/gpu/drm/i915/display/skl_scaler.h     |  3 +-
 10 files changed, 149 insertions(+), 16 deletions(-)

Comments

Ville Syrjälä Feb. 21, 2024, 7:57 p.m. UTC | #1
On Wed, Feb 21, 2024 at 12:47:53AM -0800, Vivek Kasireddy wrote:
> Some customers and users have expressed interest in adding borders
> (or margins) to certain displays in their multi-display configurations.
> To address this need, this patchset implements the XRandR Border
> property as defined here:
> https://cgit.freedesktop.org/xorg/proto/randrproto/tree/randrproto.txt#n2032
> 
> ---
> 
> Patchset overview:
> 
> Patch 1: Create skl_program_crtc_scaler() to program scaler for crtc
> Patch 2: Create and attach the Border property to DP and HDMI
> Patch 3: Implement Border property by enabling crtc scalar
> 
> This series is tested using following method:
> - Run the following xrandr command with different parameters:
> xrandr --output HDMI-3 --pos 1920x0 --mode 1280x1024 --fb 3840x2160 --scale 2.11x2.11 --set "Border" 150,0,150,0
> 
> The following patch was also added to the modesetting driver to
> implement the Border property:
> https://gitlab.freedesktop.org/Vivek/xserver/-/commit/62abfc438f0d17fe7f88bf2826c9784c2b36443b

I have an old branch implementing the margin properties:
https://github.com/vsyrjala/linux.git hdmi_margins_3

but it got stalled due to the scaler code being in a very poor state.
I started sketching some reworks there, but that got put on the
backburner due to other stuff:
https://github.com/vsyrjala/linux.git scaler_rework_2

I might have somehting more recent than that locally, but I'd have
to trawl through my branches to check what's the latest state.

> 
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Cc: Matt Roper <matthew.d.roper@intel.com>
> Cc: Dongwon Kim <dongwon.kim@intel.com>
> 
> Vivek Kasireddy (3):
>   drm/i915: Rename skl_pfit_enable() to skl_program_crtc_scaler()
>   drm/i915: Attach the Border property to DP and HDMI connectors
>   drm/i915: Apply border adjustments and enable scaler on the crtc
> 
>  drivers/gpu/drm/i915/display/intel_atomic.c   | 29 ++++++++++-
>  .../gpu/drm/i915/display/intel_connector.c    | 49 +++++++++++++++++++
>  .../gpu/drm/i915/display/intel_connector.h    |  3 ++
>  drivers/gpu/drm/i915/display/intel_display.c  | 25 ++++++++--
>  .../gpu/drm/i915/display/intel_display_core.h |  1 +
>  .../drm/i915/display/intel_display_types.h    |  6 +++
>  drivers/gpu/drm/i915/display/intel_dp.c       | 11 +++++
>  drivers/gpu/drm/i915/display/intel_hdmi.c     | 11 +++++
>  drivers/gpu/drm/i915/display/skl_scaler.c     | 27 ++++++----
>  drivers/gpu/drm/i915/display/skl_scaler.h     |  3 +-
>  10 files changed, 149 insertions(+), 16 deletions(-)
> 
> -- 
> 2.43.0
Vivek Kasireddy Feb. 22, 2024, 7:41 a.m. UTC | #2
Hi Ville,

> > Some customers and users have expressed interest in adding borders
> > (or margins) to certain displays in their multi-display configurations.
> > To address this need, this patchset implements the XRandR Border
> > property as defined here:
> >
> https://cgit.freedesktop.org/xorg/proto/randrproto/tree/randrproto.txt#n2
> 032
> >
> > ---
> >
> > Patchset overview:
> >
> > Patch 1: Create skl_program_crtc_scaler() to program scaler for crtc
> > Patch 2: Create and attach the Border property to DP and HDMI
> > Patch 3: Implement Border property by enabling crtc scalar
> >
> > This series is tested using following method:
> > - Run the following xrandr command with different parameters:
> > xrandr --output HDMI-3 --pos 1920x0 --mode 1280x1024 --fb 3840x2160 --
> scale 2.11x2.11 --set "Border" 150,0,150,0
> >
> > The following patch was also added to the modesetting driver to
> > implement the Border property:
> > https://gitlab.freedesktop.org/Vivek/xserver/-
> /commit/62abfc438f0d17fe7f88bf2826c9784c2b36443b
> 
> I have an old branch implementing the margin properties:
> https://github.com/vsyrjala/linux.git hdmi_margins_3
> 
> but it got stalled due to the scaler code being in a very poor state.
> I started sketching some reworks there, but that got put on the
> backburner due to other stuff:
> https://github.com/vsyrjala/linux.git scaler_rework_2
> 
> I might have somehting more recent than that locally, but I'd have
> to trawl through my branches to check what's the latest state.
There is a lot to unpack in these two branches than what I had anticipated.
However, it looks like some of the patches are already merged. Do
you have any plan to revive this work anytime soon?

And, besides the remaining unmerged patches in the above two branches,
are there still any other missing pieces preventing this feature from
getting merged?

Thanks,
Vivek

> 
> >
> > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > Cc: Matt Roper <matthew.d.roper@intel.com>
> > Cc: Dongwon Kim <dongwon.kim@intel.com>
> >
> > Vivek Kasireddy (3):
> >   drm/i915: Rename skl_pfit_enable() to skl_program_crtc_scaler()
> >   drm/i915: Attach the Border property to DP and HDMI connectors
> >   drm/i915: Apply border adjustments and enable scaler on the crtc
> >
> >  drivers/gpu/drm/i915/display/intel_atomic.c   | 29 ++++++++++-
> >  .../gpu/drm/i915/display/intel_connector.c    | 49 +++++++++++++++++++
> >  .../gpu/drm/i915/display/intel_connector.h    |  3 ++
> >  drivers/gpu/drm/i915/display/intel_display.c  | 25 ++++++++--
> >  .../gpu/drm/i915/display/intel_display_core.h |  1 +
> >  .../drm/i915/display/intel_display_types.h    |  6 +++
> >  drivers/gpu/drm/i915/display/intel_dp.c       | 11 +++++
> >  drivers/gpu/drm/i915/display/intel_hdmi.c     | 11 +++++
> >  drivers/gpu/drm/i915/display/skl_scaler.c     | 27 ++++++----
> >  drivers/gpu/drm/i915/display/skl_scaler.h     |  3 +-
> >  10 files changed, 149 insertions(+), 16 deletions(-)
> >
> > --
> > 2.43.0
> 
> --
> Ville Syrjälä
> Intel