From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: "José Roberto de Souza" <jose.souza@intel.com>
Cc: Daniel Vetter <daniel.vetter@intel.com>,
intel-gfx@lists.freedesktop.org,
Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
Subject: Re: [Intel-gfx] [PATCH 1/2] drm/i915/display/fbc: Make fences a nice-to-have for GEN9+
Date: Wed, 29 Jan 2020 13:58:00 +0200 [thread overview]
Message-ID: <20200129115800.GV13686@intel.com> (raw)
In-Reply-To: <20200129114449.GS13686@intel.com>
On Wed, Jan 29, 2020 at 01:44:49PM +0200, Ville Syrjälä wrote:
> On Tue, Jan 28, 2020 at 03:52:40PM -0800, José Roberto de Souza wrote:
> > dGFX have local memory so it do not have aperture and do not support
> > CPU fences but even for iGFX it have a small number of fences.
> >
> > As replacement for fences to track frontbuffer modifications by CPU
> > we have a software tracking that is already in used by FBC and PSR.
> > PSR don't support fences so it shows that this tracking is reliable.
> >
> > So lets make fences a nice-to-have to activate FBC for GEN9+(as we
> > only have a good CI coverage for GEN9+), this will allow us to enable
> > FBC for dGFXs and iGFXs even when there is no available fence.
> >
> > intel_fbc_hw_tracking_covers_screen() maybe can also have the same
> > treatment as fences but BSpec is not clear if the size limitation is
> > for hardware tracking or general use of FBC and I don't have a 5K
> > display to test it, so keeping as is for safety.
> >
> > Cc: Daniel Vetter <daniel.vetter@intel.com>
> > Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
> > Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
> > ---
> > drivers/gpu/drm/i915/display/intel_fbc.c | 12 ++++++++----
> > 1 file changed, 8 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c b/drivers/gpu/drm/i915/display/intel_fbc.c
> > index 2a3f1333c8ff..1f0d24a1dec1 100644
> > --- a/drivers/gpu/drm/i915/display/intel_fbc.c
> > +++ b/drivers/gpu/drm/i915/display/intel_fbc.c
> > @@ -717,11 +717,15 @@ static bool intel_fbc_can_activate(struct intel_crtc *crtc)
> > return false;
> > }
> >
> > - /* The use of a CPU fence is mandatory in order to detect writes
> > - * by the CPU to the scanout and trigger updates to the FBC.
> > + /* The use of a CPU fence is one of two ways to detect writes by the
> > + * CPU to the scanout and trigger updates to the FBC.
> > + *
> > + * The other method is by software tracking(see
> > + * intel_fbc_invalidate/flush()), it will manually notify FBC and nuke
> > + * the current compressed buffer and recompress it.
> > *
> > * Note that is possible for a tiled surface to be unmappable (and
> > - * so have no fence associated with it) due to aperture constaints
> > + * so have no fence associated with it) due to aperture constraints
> > * at the time of pinning.
> > *
> > * FIXME with 90/270 degree rotation we should use the fence on
> > @@ -730,7 +734,7 @@ static bool intel_fbc_can_activate(struct intel_crtc *crtc)
> > * For now this will effecively disable FBC with 90/270 degree
> > * rotation.
> > */
> > - if (cache->fence_id < 0) {
> > + if (cache->fence_id < 0 && INTEL_GEN(dev_priv) < 9) {
>
> Not enough. We need to check that the tiling format is actually supported.
Actually not sure if all of them are or not. IIRC some docs just said
X/Y tile is supported (and in some other place linear was also listed).
> Also the tracking stuff is busted in intel ddx so need to get
> https://patchwork.freedesktop.org/series/70636/ merged somehow.
>
> > fbc->no_fbc_reason = "framebuffer not tiled or fenced";
> > return false;
> > }
> > --
> > 2.25.0
> >
> > _______________________________________________
> > Intel-gfx mailing list
> > Intel-gfx@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/intel-gfx
>
> --
> Ville Syrjälä
> Intel
--
Ville Syrjälä
Intel
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2020-01-29 11:58 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-28 23:52 [Intel-gfx] [PATCH 1/2] drm/i915/display/fbc: Make fences a nice-to-have for GEN9+ José Roberto de Souza
2020-01-28 23:52 ` [Intel-gfx] [PATCH 2/2] drm/i915/dgfx: Do not write in removed FBC fence registers José Roberto de Souza
2020-01-29 11:42 ` Ville Syrjälä
2020-02-04 2:06 ` Souza, Jose
2020-02-04 13:47 ` Ville Syrjälä
2020-01-29 3:19 ` [Intel-gfx] ✗ Fi.CI.BAT: failure for series starting with [1/2] drm/i915/display/fbc: Make fences a nice-to-have for GEN9+ Patchwork
2020-01-29 11:44 ` [Intel-gfx] [PATCH 1/2] " Ville Syrjälä
2020-01-29 11:58 ` Ville Syrjälä [this message]
2020-02-04 1:42 ` Souza, Jose
2020-01-30 2:44 ` [Intel-gfx] ✗ Fi.CI.BAT: failure for series starting with [1/2] drm/i915/display/fbc: Make fences a nice-to-have for GEN9+ (rev2) Patchwork
2020-02-04 20:58 ` [Intel-gfx] ✓ Fi.CI.BAT: success for series starting with [1/2] drm/i915/display/fbc: Make fences a nice-to-have for GEN9+ (rev3) Patchwork
2020-02-06 20:29 ` [Intel-gfx] ✗ 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=20200129115800.GV13686@intel.com \
--to=ville.syrjala@linux.intel.com \
--cc=daniel.vetter@intel.com \
--cc=dhinakaran.pandiyan@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=jose.souza@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