From: "Souza, Jose" <jose.souza@intel.com>
To: "ville.syrjala@linux.intel.com" <ville.syrjala@linux.intel.com>
Cc: "Mun, Gwan-gyeong" <gwan-gyeong.mun@intel.com>,
"intel-gfx@lists.freedesktop.org"
<intel-gfx@lists.freedesktop.org>
Subject: Re: [Intel-gfx] [PATCH v2 3/5] drm/i915/display: Workaround cursor left overs with PSR2 selective fetch enabled
Date: Tue, 21 Sep 2021 22:37:53 +0000 [thread overview]
Message-ID: <61306afdb2d733d342336c3eb57df558c497afe4.camel@intel.com> (raw)
In-Reply-To: <YUnfvMLGDbhopmEj@intel.com>
On Tue, 2021-09-21 at 16:35 +0300, Ville Syrjälä wrote:
> On Fri, Sep 17, 2021 at 09:33:59PM +0000, Souza, Jose wrote:
> > On Fri, 2021-09-17 at 20:49 +0300, Ville Syrjälä wrote:
> > > On Fri, Sep 17, 2021 at 05:02:21PM +0000, Souza, Jose wrote:
> > > > On Fri, 2021-09-17 at 16:04 +0300, Ville Syrjälä wrote:
> > > > > On Thu, Sep 16, 2021 at 05:09:08PM +0000, Souza, Jose wrote:
> > > > > > On Thu, 2021-09-16 at 16:17 +0300, Ville Syrjälä wrote:
> > > > > > > On Wed, Sep 15, 2021 at 06:18:35PM +0000, Souza, Jose wrote:
> > > > > > > > On Wed, 2021-09-15 at 17:58 +0300, Ville Syrjälä wrote:
> > > > > > > > > On Tue, Sep 14, 2021 at 02:25:05PM -0700, José Roberto de Souza wrote:
> > > > > > > > > > Not sure why but when moving the cursor fast it causes some artifacts
> > > > > > > > > > of the cursor to be left in the cursor path, adding some pixels above
> > > > > > > > > > the cursor to the damaged area fixes the issue, so leaving this as a
> > > > > > > > > > workaround until proper fix is found.
> > > > > > > > >
> > > > > > > > > Have you tried warping the cursor clear across the screen while
> > > > > > > > > a partial update is already pending? I think it will go badly.
> > > > > > > >
> > > > > > > > You mean move the cursor for example from 0x0 to 500x500 in one frame?
> > > > > > > > It will mark as damaged the previous area and the new one.
> > > > > > >
> > > > > > > Legacy cursor updates bypass all that stuff so you're not going to
> > > > > > > updating the sel fetch area for the other planes.
> > > > > > >
> > > > > > > >
> > > > > > > > >
> > > > > > > > > In fact I'm thinking the mailbox style legacy cursor updates are just
> > > > > > > > > fundementally incompatible with partial updates since the cursor
> > > > > > > > > can move outside of the already committed update region any time.
> > > > > > > > > Ie. I suspect while the cursor is visible we simply can't do partial
> > > > > > > > > updates.
> > > > > > > >
> > > > > > > > Probably I did not understand what you want to say, but each cursor update will be in one frame, updating the necessary area.
> > > > > > >
> > > > > > > The legacy cursor uses mailbox updates so there is no 1:1 relationship
> > > > > > > between actual scanned out frames and cursor ioctl calls. You can
> > > > > > > have umpteen thousand cursor updates per frame.
> > > > > >
> > > > > > Not if intel_legacy_cursor_update() is changed to go to the slow path and do one atomic commit for each move.
> > > > > > https://patchwork.freedesktop.org/patch/453192/?series=94522&rev=1
> > > > >
> > > > > That's not going to fly. The whole reason for the legacy cursor thing is
> > > > > that X likes to do thousands of cursor updates per frame.
> > > >
> > > > From user experience perspective there is no issues in converting to atomic commit, those 3 videos that I shared with you have this conversion.
> > >
> > > I don't know what you've tested but the legacy cursor fastpath is very
> > > much needed. We've have numerous bug reports whenever it has
> > > accidentally regressed, and I've witnessed the carnage myself as well.
> > > Hmm, I guess you didn't actually disable it fully. To do that you
> > > would have to clear state->legacy_cursor_update explicitly somewhere.
> >
> > Thanks for pointing out state->legacy_cursor_update and yes setting it to false makes causes the cursor to lag.
> >
> > >
> > > Either way I just retested the earlier patches just with the nonblocking
> > > commit for dirtyfb hacked in, and I left the cursor code using the
> > > half fast path you made it take. The user experience is still as bad
> > > as before. Just moving the mouse around makes glxgears stutter, and the
> > > reported fps drops to ~400 from that alone. And doing anything more
> > > involved like moving windows around is still a total fail.
> >
> > I have tested it in a TGL and ADL-P, will try to get some gen9 to try it.
> > Other than that I don't know what could this big difference between our setups.
> > I'm using Mate like you with 'enable software compositing window manager' disabled.
>
> Not sure.
>
> BTW another thing I noticed is that the sel_fetch coordinate calculation
> code seems super confused:
> - it seems to do operations between coordinates that don't even live in
> the same coordinate space (eg. drm_rect_intersect(&clip, &src) where
> clip is the straight userspace damage coordinates but src is
> PLANE_SURF relative plane source coordinates)
On the first for_each_oldnew_intel_plane_in_state() it calculates the plane damaged area and then in the last 3 lines converts it to pipe coordinate
space.
The second for_each_oldnew_intel_plane_in_state() takes the pipe coordinate space damaged area and sets new_plane_state->psr2_sel_fetch_area with the
plane coordinate space damaged area.
> - no checks for plane scaling that I can see but it still assumes it can
> just assume a 1:1 relationship between src and dst coordinates
My understanding is that intel_atomic_plane_check_clipping() will adjust src to match dst width and height.
> - bigjoiner also affects the coordinate spaces, so that part too is probably
> busted
>
I don't think there is a commercial available eDP panel that would require bigjoiner.
We could definitely rule PSR2 out if such case shows up by adding a check in intel_psr2_sel_fetch_config_valid().
next prev parent reply other threads:[~2021-09-21 22:37 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-14 21:25 [Intel-gfx] [PATCH v2 1/5] drm/i915/display/adlp: Fix PSR2_MAN_TRK_CTL_SU_REGION_END_ADDR calculation José Roberto de Souza
2021-09-14 21:25 ` [Intel-gfx] [PATCH v2 2/5] drm/i915/display: Wait at least 2 frames before selective update José Roberto de Souza
2021-09-14 21:25 ` [Intel-gfx] [PATCH v2 3/5] drm/i915/display: Workaround cursor left overs with PSR2 selective fetch enabled José Roberto de Souza
2021-09-15 14:58 ` Ville Syrjälä
2021-09-15 18:18 ` Souza, Jose
2021-09-16 13:17 ` Ville Syrjälä
2021-09-16 17:09 ` Souza, Jose
2021-09-17 13:04 ` Ville Syrjälä
2021-09-17 17:02 ` Souza, Jose
2021-09-17 17:49 ` Ville Syrjälä
2021-09-17 21:33 ` Souza, Jose
2021-09-21 13:35 ` Ville Syrjälä
2021-09-21 22:37 ` Souza, Jose [this message]
2021-09-22 13:41 ` Ville Syrjälä
2021-09-22 15:51 ` Souza, Jose
2021-09-14 21:25 ` [Intel-gfx] [PATCH v2 4/5] drm/i915/display/psr: Use drm damage helpers to calculate plane damaged area José Roberto de Souza
2021-09-14 21:25 ` [Intel-gfx] [PATCH v2 5/5] drm/i915/display/adlp: Add new PSR2 workarounds José Roberto de Souza
2021-09-15 14:20 ` Gwan-gyeong Mun
2021-09-14 22:26 ` [Intel-gfx] ✗ Fi.CI.BAT: failure for series starting with [v2,1/5] drm/i915/display/adlp: Fix PSR2_MAN_TRK_CTL_SU_REGION_END_ADDR calculation Patchwork
2021-09-15 19:01 ` [Intel-gfx] ✗ Fi.CI.BAT: failure for series starting with [v2,1/5] drm/i915/display/adlp: Fix PSR2_MAN_TRK_CTL_SU_REGION_END_ADDR calculation (rev2) Patchwork
2021-09-15 20:33 ` [Intel-gfx] ✗ Fi.CI.BAT: failure for series starting with [v2,1/5] drm/i915/display/adlp: Fix PSR2_MAN_TRK_CTL_SU_REGION_END_ADDR calculation (rev3) Patchwork
2021-09-16 22:31 ` [Intel-gfx] ✗ Fi.CI.BAT: failure for series starting with [v2,1/5] drm/i915/display/adlp: Fix PSR2_MAN_TRK_CTL_SU_REGION_END_ADDR calculation (rev4) Patchwork
2021-09-17 0:30 ` [Intel-gfx] ✓ Fi.CI.BAT: success for series starting with [v2,1/5] drm/i915/display/adlp: Fix PSR2_MAN_TRK_CTL_SU_REGION_END_ADDR calculation (rev5) Patchwork
2021-09-17 4:29 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
2021-09-17 17:52 ` Souza, Jose
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=61306afdb2d733d342336c3eb57df558c497afe4.camel@intel.com \
--to=jose.souza@intel.com \
--cc=gwan-gyeong.mun@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=ville.syrjala@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