++

On 3/10/21, 3:47 AM, "Hans de Goede" <[email protected]> wrote:

    Hi,
    
    On 3/9/21 5:34 PM, Madhurkiran Harikrishnan wrote:
    > From: Hyun Kwon <[email protected]>
    > 
    > There is cursor bleeding for the devices which try to acclerate the
    > Desktop environment using low powered ARM Mali GPUs. The area under
    > the cusrsor is not updated for every swap call within the armsoc,
    > resulting in the block artifact.
    > 
    > Expose miDCSaveUnderCursor2 API, so that other graphics layer like
    > armsoc can inoke and save the area under the cursor before actually
    > perfroming a swap between the backbuffer and the frontbuffer.
    
    Thank you for the updated version with this nice commit message.
    
    So it seems that this is another approach to fixing the same issue
    which I fixed in the modesetting driver with this commit:
    
    
https://cgit.freedesktop.org/xorg/xserver/commit/?id=0aaac8d783e78c040a70a55ba8d67809abd7e625
    
    Interesting...
    
    If this works reliable for you, so that you don't need to disable
    page-flipping then this seems like a good idea to me.
    
    Regards,
    
    Hans
    
    
    
    > 
    > Signed-off-by: Hyun Kwon <[email protected]>
    > Signed-off-by: Madhurkiran Harikrishnan 
<[email protected]>
    > ---
    >  mi/mipointer.h |  2 ++
    >  mi/misprite.c  | 17 +++++++++++++++++
    >  2 files changed, 19 insertions(+)
    > 
    > diff --git a/mi/mipointer.h b/mi/mipointer.h
    > index 7ce6409..107b24f 100644
    > --- a/mi/mipointer.h
    > +++ b/mi/mipointer.h
    > @@ -127,4 +127,6 @@ extern _X_EXPORT DevPrivateKeyRec 
miPointerScreenKeyRec;
    >  
    >  #define miPointerScreenKey (&miPointerScreenKeyRec)
    >  
    > +extern _X_EXPORT void miDCSaveUnderCursor2(ScreenPtr pScreen);
    > +
    >  #endif                          /* MIPOINTER_H */
    > diff --git a/mi/misprite.c b/mi/misprite.c
    > index add2c55..46ce9f0 100644
    > --- a/mi/misprite.c
    > +++ b/mi/misprite.c
    > @@ -955,3 +955,20 @@ miSpriteComputeSaved(DeviceIntPtr pDev, ScreenPtr 
pScreen)
    >      pCursorInfo->saved.x2 = pCursorInfo->saved.x1 + w + wpad * 2;
    >      pCursorInfo->saved.y2 = pCursorInfo->saved.y1 + h + hpad * 2;
    >  }
    > +
    > +void
    > +miDCSaveUnderCursor2(ScreenPtr pScreen)
    > +{
    > + DeviceIntPtr pDev;
    > + miCursorInfoPtr pCursorInfo;
    > +
    > + for (pDev = inputInfo.devices; pDev; pDev = pDev->next) {
    > +         if (DevHasCursor(pDev)) {
    > +                 pCursorInfo = GetSprite(pDev);
    > +                 if (pCursorInfo && pCursorInfo->isUp
    > +                     && pCursorInfo->pScreen == pScreen) {
    > +                         miSpriteSaveUnderCursor(pDev, pScreen);
    > +                 }
    > +         }
    > + }
    > +}
    > 
    
    

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: https://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to