Bug 494426

Summary: When using the shake cursor effect, the new SVG cursor can still get pixelated at over 10x its original size
Product: [Plasma] kwin Reporter: Répási Dávid <hu.repasidavid>
Component: effects-variousAssignee: KWin default assignee <kwin-bugs-null>
Status: CONFIRMED ---    
Severity: minor CC: ad.liu.jin, nate, uhhadd
Priority: NOR    
Version First Reported In: 6.2.0   
Target Milestone: ---   
Platform: Arch Linux   
OS: Linux   
Latest Commit: Version Fixed/Implemented In:
Sentry Crash Report:
Attachments: example-of-the-pixelation

Description Répási Dávid 2024-10-10 12:41:36 UTC
Created attachment 174619 [details]
example-of-the-pixelation

This may actually be a kwin bug, can't really tell either way.

STEPS TO REPRODUCE
1. Enable shake cursor
2. Use the breeze cursor supporting svg theming (I did a dirty port of another theme, the problem still stands)
3. go ham with it

OBSERVED RESULT
At a certain size the cursor will look pixelated

EXPECTED RESULT
Have the advertised crisp look at any size

SOFTWARE/OS VERSIONS
Linux: EndeavourOS
KDE Plasma Version: 6.2.0
KDE Frameworks Version: 6.6.0
Qt Version: 6.7.3
Kernel Version: 6.11.2-arch1-1
Comment 1 Jin Liu 2024-10-10 14:27:04 UTC
IIUC, this effect pre-renders the SVG to about 10x your current cursor size. So if you shake it beyond that size, it can become pixelated, and it's by design. While the SVG can be rendered to any size in theory, the memory consumption and time to render is also a factor to consider.

Anyway, leaving this open as perhaps Vlad would consider increasing the render size.
Comment 2 Répási Dávid 2024-10-10 17:17:58 UTC
When in the shake cursor effect, the cursor is locked to the "default" icon, so only that one would need to be prerendered  to a bigger size, if that is still memory heavy, a hard cap could be introduced to the effect so no pixelation would be seen by the user.

Also, just for reference, how much memory are we talking about?
Comment 3 Vlad Zahorodnii 2024-10-14 01:31:24 UTC
(In reply to Répási Dávid from comment #2)
> When in the shake cursor effect, the cursor is locked to the "default" icon,
> so only that one would need to be prerendered  to a bigger size, if that is
> still memory heavy, a hard cap could be introduced to the effect so no
> pixelation would be seen by the user.

No cap is intentional. And we're talking about an edge case, which imho is very minor. You'd need to put some real dedication to shaking the cursor in order to start observing the pixelation.

> Also, just for reference, how much memory are we talking about?

Atm kwin renders the cursor at approximately 250x250-300x300 size. Progressive cursor rendering can be implemented, but as of now, in comparison to the additional code, I see no strong benefits in doing it.

> Have the advertised crisp look at any size

It's not advertised to look crisp in **every** scenario.