From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Jani Nikula <jani.nikula@linux.intel.com>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [Intel-gfx] [PATCH 09/15] drm/i915: Define bitmasks for ilk pfit window pos/size
Date: Tue, 25 Apr 2023 13:49:08 +0300 [thread overview]
Message-ID: <ZEewJLbgD1SEmhLh@intel.com> (raw)
In-Reply-To: <ZEErZ4ma5P1IU3tW@intel.com>
On Thu, Apr 20, 2023 at 03:09:11PM +0300, Ville Syrjälä wrote:
> On Wed, Apr 19, 2023 at 06:34:00PM +0300, Jani Nikula wrote:
> > On Tue, 18 Apr 2023, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> > > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > >
> > > Define and use the bitmasks for the x/y components
> > > of the ilk+ panel filter window pos/size registers.
> >
> > This reduces the field sizes by 3-4 bits. Maybe that's what they're in
> > the spec, but it's at least worth mentioning here.
>
> Aye. I just double checked this and on BDW these are in
> fact the only bits that can be set in the registers. On
> older hw every bit can apparently be set, but resumably
> the high bits just have no effect. And intel_mode_valid()
> will anyway reject modes with bigger hdisplay/vdisplay
> so we should never see out of bounds values here.
After pondering this a bit more, I think I'll go back to
16bit masks to make the thing more future proof. Seems unlikely
we'd get any other kinds of bits getting added to these registers
and we are using the full 16 bit masks also for the transcoder
timing registers and PIPESRC.
>
> >
> > BR,
> > Jani.
> >
> > >
> > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > ---
> > > drivers/gpu/drm/i915/display/intel_display.c | 12 ++++++++----
> > > drivers/gpu/drm/i915/i915_reg.h | 8 ++++++++
> > > 2 files changed, 16 insertions(+), 4 deletions(-)
> > >
> > > diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> > > index fb49d0ed61b4..626a5f41a1f1 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_display.c
> > > +++ b/drivers/gpu/drm/i915/display/intel_display.c
> > > @@ -812,8 +812,10 @@ static void ilk_pfit_enable(const struct intel_crtc_state *crtc_state)
> > > else
> > > intel_de_write_fw(dev_priv, PF_CTL(pipe), PF_ENABLE |
> > > PF_FILTER_MED_3x3);
> > > - intel_de_write_fw(dev_priv, PF_WIN_POS(pipe), x << 16 | y);
> > > - intel_de_write_fw(dev_priv, PF_WIN_SZ(pipe), width << 16 | height);
> > > + intel_de_write_fw(dev_priv, PF_WIN_POS(pipe),
> > > + PF_WIN_XPOS(x) | PF_WIN_YPOS(y));
> > > + intel_de_write_fw(dev_priv, PF_WIN_SZ(pipe),
> > > + PF_WIN_XSIZE(width) | PF_WIN_YSIZE(height));
> > > }
> > >
> > > static void intel_crtc_dpms_overlay_disable(struct intel_crtc *crtc)
> > > @@ -3246,8 +3248,10 @@ static void ilk_get_pfit_config(struct intel_crtc_state *crtc_state)
> > > size = intel_de_read(dev_priv, PF_WIN_SZ(crtc->pipe));
> > >
> > > drm_rect_init(&crtc_state->pch_pfit.dst,
> > > - pos >> 16, pos & 0xffff,
> > > - size >> 16, size & 0xffff);
> > > + REG_FIELD_GET(PF_WIN_XPOS_MASK, pos),
> > > + REG_FIELD_GET(PF_WIN_YPOS_MASK, pos),
> > > + REG_FIELD_GET(PF_WIN_XSIZE_MASK, size),
> > > + REG_FIELD_GET(PF_WIN_YSIZE_MASK, size));
> > >
> > > /*
> > > * We currently do not free assignements of panel fitters on
> > > diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> > > index 3c02f6c70733..75e1f30adda1 100644
> > > --- a/drivers/gpu/drm/i915/i915_reg.h
> > > +++ b/drivers/gpu/drm/i915/i915_reg.h
> > > @@ -4020,8 +4020,16 @@
> > > #define PF_FILTER_EDGE_SOFTEN REG_FIELD_PREP(PF_FILTER_EDGE_MASK, 3)
> > > #define _PFA_WIN_SZ 0x68074
> > > #define _PFB_WIN_SZ 0x68874
> > > +#define PF_WIN_XSIZE_MASK REG_GENMASK(28, 16)
> > > +#define PF_WIN_XSIZE(w) REG_FIELD_PREP(PF_WIN_XSIZE_MASK, (w))
> > > +#define PF_WIN_YSIZE_MASK REG_GENMASK(11, 0)
> > > +#define PF_WIN_YSIZE(h) REG_FIELD_PREP(PF_WIN_YSIZE_MASK, (h))
> > > #define _PFA_WIN_POS 0x68070
> > > #define _PFB_WIN_POS 0x68870
> > > +#define PF_WIN_XPOS_MASK REG_GENMASK(28, 16)
> > > +#define PF_WIN_XPOS(x) REG_FIELD_PREP(PF_WIN_XPOS_MASK, (x))
> > > +#define PF_WIN_YPOS_MASK REG_GENMASK(11, 0)
> > > +#define PF_WIN_YPOS(y) REG_FIELD_PREP(PF_WIN_YPOS_MASK, (y))
> > > #define _PFA_VSCALE 0x68084
> > > #define _PFB_VSCALE 0x68884
> > > #define _PFA_HSCALE 0x68090
> >
> > --
> > Jani Nikula, Intel Open Source Graphics Center
>
> --
> Ville Syrjälä
> Intel
--
Ville Syrjälä
Intel
next prev parent reply other threads:[~2023-04-25 10:49 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-04-18 17:55 [Intel-gfx] [PATCH 00/15] drm/i915: Scaler/pfit stuff Ville Syrjala
2023-04-18 17:55 ` [Intel-gfx] [PATCH 01/15] drm/i915: Check pipe source size when using skl+ scalers Ville Syrjala
2023-04-19 15:11 ` Jani Nikula
2023-04-18 17:55 ` [Intel-gfx] [PATCH 02/15] drm/i915: Relocate VBLANK_EVASION_TIME_US Ville Syrjala
2023-04-19 15:13 ` Jani Nikula
2023-04-18 17:55 ` [Intel-gfx] [PATCH 03/15] drm/i915: Relocate intel_atomic_setup_scalers() Ville Syrjala
2023-04-19 15:16 ` Jani Nikula
2023-04-18 17:55 ` [Intel-gfx] [PATCH 04/15] drm/i915: Relocate skl_get_pfit_config() Ville Syrjala
2023-04-19 15:17 ` Jani Nikula
2023-04-18 17:55 ` [Intel-gfx] [PATCH 05/15] drm/i915: Use REG_BIT() & co for the pre-ilk pfit registers Ville Syrjala
2023-04-19 15:28 ` Jani Nikula
2023-04-18 17:55 ` [Intel-gfx] [PATCH 06/15] drm/i915: Namespace pfit registers properly Ville Syrjala
2023-04-19 15:28 ` Jani Nikula
2023-04-18 17:55 ` [Intel-gfx] [PATCH 07/15] drm/i915: Use REG_BIT() & co. for ilk+ pfit registers Ville Syrjala
2023-04-19 15:29 ` Jani Nikula
2023-04-18 17:55 ` [Intel-gfx] [PATCH 08/15] drm/i915: Drop a useless forward declararion Ville Syrjala
2023-04-19 15:30 ` Jani Nikula
2023-04-18 17:55 ` [Intel-gfx] [PATCH 09/15] drm/i915: Define bitmasks for ilk pfit window pos/size Ville Syrjala
2023-04-19 15:34 ` Jani Nikula
2023-04-20 12:09 ` Ville Syrjälä
2023-04-25 10:49 ` Ville Syrjälä [this message]
2023-04-18 17:55 ` [Intel-gfx] [PATCH 10/15] drm/i915: Remove dead scaler register defines Ville Syrjala
2023-04-19 15:35 ` Jani Nikula
2023-04-18 17:55 ` [Intel-gfx] [PATCH 11/15] drm/i915: Rename skl+ scaler binding bits Ville Syrjala
2023-04-18 19:36 ` [Intel-gfx] [PATCH v2 " Ville Syrjala
2023-04-19 15:38 ` Jani Nikula
2023-04-18 22:06 ` [Intel-gfx] [PATCH " kernel test robot
2023-04-19 15:38 ` Jani Nikula
2023-04-18 17:55 ` [Intel-gfx] [PATCH 12/15] drm/i915: s/PS_COEE_INDEX_AUTO_INC/PS_COEF_INDEX_AUTO_INC/ Ville Syrjala
2023-04-19 15:38 ` Jani Nikula
2023-04-18 17:55 ` [Intel-gfx] [PATCH 13/15] drm/i915: Define bitmasks for sik+ scaler window pos/size Ville Syrjala
2023-04-19 15:41 ` Jani Nikula
2023-04-18 17:55 ` [Intel-gfx] [PATCH 14/15] drm/i915: Use REG_BIT() & co. for pipe scaler registers Ville Syrjala
2023-04-19 15:48 ` Jani Nikula
2023-04-18 17:55 ` [Intel-gfx] [PATCH 15/15] drm/i915: Define more PS_CTRL bits Ville Syrjala
2023-04-18 18:31 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for drm/i915: Scaler/pfit stuff Patchwork
2023-04-18 22:20 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915: Scaler/pfit stuff (rev2) Patchwork
2023-04-18 22:20 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork
2023-04-18 22:30 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2023-04-19 4:12 ` [Intel-gfx] ✓ Fi.CI.IGT: " 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=ZEewJLbgD1SEmhLh@intel.com \
--to=ville.syrjala@linux.intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=jani.nikula@linux.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