Bug 493897 - Breeze screen locker theme uses a ton of VRAM on a 4k screen (even with a black background)
Summary: Breeze screen locker theme uses a ton of VRAM on a 4k screen (even with a bla...
Status: CONFIRMED
Alias: None
Product: plasmashell
Classification: Plasma
Component: Screen locking (other bugs)
Version First Reported In: 6.2.4
Platform: Arch Linux Linux
: NOR minor
Target Milestone: 1.0
Assignee: Plasma Bugs List
URL:
Keywords: efficiency-and-performance
Depends on:
Blocks:
 
Reported: 2024-10-01 05:57 UTC by Kelvie Wong
Modified: 2025-12-12 08:31 UTC (History)
4 users (show)

See Also:
Latest Commit:
Version Fixed/Implemented In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Kelvie Wong 2024-10-01 05:57:57 UTC
***
If you're not sure this is actually a bug, instead post about it at https://discuss.kde.org

If you're reporting a crash, attach a backtrace with debug symbols; see https://community.kde.org/Guidelines_and_HOWTOs/Debugging/How_to_create_useful_crash_reports

Please remove this comment after reading and before submitting - thanks!
***

SUMMARY


STEPS TO REPRODUCE
1. Have a 4k monitor (144hz) on an nvidia graphics card
2. Lock screen
3. ssh in and run nvtop

OBSERVED RESULT
Notice that kscreenlocker_greet uses over 1GB of VRAM

EXPECTED RESULT
It uses maybe a few hundred, but not 1GB, I use a black colour as the background

SOFTWARE/OS VERSIONS
KDE Plasma Version: 6.1.5
KDE Frameworks Version: 6.6.0
Qt Version: 6.7.3
Kernel Version: 6.10.10-arch1-1 (64-bit)
Graphics Platform: Wayland
Processors: 32 × AMD Ryzen 9 5950X 16-Core Processor
Memory: 62.7 GiB of RAM
Graphics Processor: NVIDIA GeForce RTX 4090/PCIe/SSE2

ADDITIONAL INFORMATION
Comment 1 Nate Graham 2024-10-01 18:11:31 UTC
Does the VRAM usage change if you use different backgrounds types?
Comment 2 Kelvie Wong 2024-10-02 03:42:05 UTC
I've tried "Image" and "Slideshow" and they both use over 900MB of VRAM.
Comment 3 Nate Graham 2024-10-03 14:17:23 UTC
Thanks. Does it create an observable problem at all?
Comment 4 Kelvie Wong 2024-10-04 04:53:43 UTC
I mean, it uses a lot of VRAM. My use-case is that sometimes I use my desktop (which has the best GPU) to run local LLMs while it's idle, if kscreenlocker uses 1GB of that, that's a lot less context tokens I can use for the LLM.
Comment 5 Kelvie Wong 2025-04-03 04:40:25 UTC
After messing around with it a bunch more, I find that commenting out the WallpaperFader part of /usr/share/plasma/shells/org.kde.plasma.desktop/contents/lockscreen/LockScreenUi.qml (not sure if it's a different path depending on distro) reduces the VRAM usage by half, down to about 500MB rather than almost a gig.
Comment 6 Andres Betts 2025-08-14 14:06:11 UTC
For what it's worth, when my laptop is in locked mode the fans speed up a lot. I have tried checking into what process is causing this but I am not sure. When I exit the lock screen the fans go back to normal and cpu and ram usage falls.
Comment 7 Robin Laing 2025-12-12 08:31:46 UTC
I see this as well with Fedora 42.  A locked, monitor into powr down mode, vram usage is 286MiB which is double plasmashell.

kwayland-6.5.3-1

kernel 6.17.9-200

Another machine, active in usage with two account operational.  kscreenlocker at 254Mib with just a plain colour background.  Event turned the clock off on that login screen.

strace of the kscreenlocker just repeats these lines until I do something.


ppoll([{fd=4, events=POLLIN}, {fd=13, events=POLLIN}, {fd=39, events=POLLIN}, {fd=46, events=POLLIN}, {fd=47, events=POLLIN}, {fd=48, events=POLLIN}, {fd=288, events=POLLIN}], 7, {tv_sec=0, tv_nsec=998000000}, NULL, 8) = 0 (Timeout)
newfstatat(AT_FDCWD, "/etc/localtime", {st_mode=S_IFREG|0644, st_size=2332, ...}, 0) = 0
newfstatat(AT_FDCWD, "/etc/localtime", {st_mode=S_IFREG|0644, st_size=2332, ...}, 0) = 0
newfstatat(AT_FDCWD, "/etc/localtime", {st_mode=S_IFREG|0644, st_size=2332, ...}, 0) = 0
newfstatat(AT_FDCWD, "/etc/localtime", {st_mode=S_IFREG|0644, st_size=2332, ...}, 0) = 0
newfstatat(AT_FDCWD, "/etc/localtime", {st_mode=S_IFREG|0644, st_size=2332, ...}, 0) = 0
newfstatat(AT_FDCWD, "/etc/localtime", {st_mode=S_IFREG|0644, st_size=2332, ...}, 0) = 0
newfstatat(AT_FDCWD, "/etc/localtime", {st_mode=S_IFREG|0644, st_size=2332, ...}, 0) = 0
newfstatat(AT_FDCWD, "/etc/localtime", {st_mode=S_IFREG|0644, st_size=2332, ...}, 0) = 0
ppoll([{fd=4, events=POLLIN}, {fd=13, events=POLLIN}, {fd=39, events=POLLIN}, {fd=46, events=POLLIN}, {fd=47, events=POLLIN}, {fd=48, events=POLLIN}, {fd=288, events=POLLIN}], 7, {tv_sec=0, tv_nsec=0}, NULL, 8) = 0 (Timeout)