[Intel-gfx] [PATCH v2 3/5] drm/i915/display: Workaround cursor left overs with PSR2 selective fetch enabled

Ville Syrjälä ville.syrjala at linux.intel.com
Thu Sep 16 13:17:52 UTC 2021


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.

> So I can't understand why it is incompatible.

Because all the other planes already got their selective fetch area
updated earlir, and now the cursor's new update area is something
totally different. Doesn't the total area need to computed to comprise
of a single crtc space rectangle essentially?

So we could start with something like:

sel fetch area
 |
 v
 ________________
| ________       |
| | plane |      |
| |       |_____ |
| _________     ||
|   _   | plane ||
|  |_|  |_______||
|________________|   
    ^
    |
cursor

Then the cursor moves before the hardware has even latched the previous
update:

old sel fetch area
 |
 v
 ________________
| ________       |
| | plane |      |    _
| |       |_____ |   |_|
| _________     ||    ^
|       | plane ||    |
|       |_______||   cursor
|________________|    

-- 
Ville Syrjälä
Intel


More information about the Intel-gfx mailing list