Commit graph

25141 commits

Author SHA1 Message Date
Vlad Zahorodnii
e81fa52c76 backends/drm: Prefer egl import mode
The egl import mode ensures that there's a local buffer, which is
preferred as it minimizes the number of data transfers over PCIe.

With dmabuf, it's unclear what the driver will do. But the main takeaway
from discussion with mesa developers is that it's undesired for
gbm_bo_import() to migrate or perform data transfers behind the user's
back, it should be done explicitly.
2023-06-19 22:43:01 +03:00
Vlad Zahorodnii
082301920e backends/drm: Port to GraphicsBuffer
This change ports the drm backend to the GraphicsBuffer and
GraphicsBufferAllocator.

The main motivation is to unify graphics buffer abstractions across
various backends and to prepare it for output layers, which could be
nicer if we could have direct control over the buffers.
2023-06-19 22:42:58 +03:00
Vlad Zahorodnii
8fa6c5307b backends/drm: Reopen the drm node
GEM handles are not reference counted and are unique per drm file
descriptor.

With the upcoming changes, dmabuf and dumb buffers will be abstraced
using DmaBufAttributes.

The issue with it is that we need GEM handles to get a drm framebuffer.
drmPrimeFDToHandle() can be used to get the GEM handle for a drm file
descriptor, but we would hit the reference counting issues then and
potentially double close GEM handles.

In order to resolve that, this change makes the drm backend reopen the
drm node to get a new GEM handle namespace for rendering.
2023-06-19 16:47:26 +03:00
Vlad Zahorodnii
0a7bfcf1a3 backends: Remove concrete graphics buffer types 2023-06-19 16:47:26 +03:00
Vlad Zahorodnii
ea639ad170 core: Add GraphicsBuffer map flags
This allows to specify whether the graphics buffer will be read or
written. It's mainly needed to map our APIs to gbm APIs.
2023-06-19 16:47:26 +03:00
Vlad Zahorodnii
9bbe0cc4ac core: Allow GbmGraphicsBufferAllocator allocate dumb buffers
The drm backend needs to allocate both dmabuf and dumb buffers, for
example for multi-gpu import.

Allowing GbmGraphicsBufferAllocator to allocate dumb buffers allows us
to avoid using several buffer allocators in the drm backend.
2023-06-19 16:47:26 +03:00
Vlad Zahorodnii
7782cb6853 core: Add GraphicsBufferOptions::software
The software flag indicates whether the graphics buffer allocator needs
to allocate a buffer suitable for software rendering. Its intended usage
is to allow the gbm allocator to allocate both dmabuf and dumb buffers.
2023-06-19 16:47:26 +03:00
Vlad Zahorodnii
1833d790f5 core: Introduce GraphicsBufferOptions
GraphicsBufferOptions describes the properties of the allocated graphics
buffer.
2023-06-19 16:47:26 +03:00
Vlad Zahorodnii
bdc14f247e core: Allow allocating linear gbm buffers with implicit modifier 2023-06-19 16:47:26 +03:00
Vlad Zahorodnii
f579b073c9 core: Change type of DmaBufAttributes::{pitch,offset}
Change it to uint32_t[] to match drmModeAddFB() API.
2023-06-19 16:47:26 +03:00
Vlad Zahorodnii
b98f68d581 Use proper ellipsis in user actions menu
"…" is not same as "..."
2023-06-19 14:48:35 +03:00
l10n daemon script
754beff474 GIT_SILENT Sync po/docbooks with svn 2023-06-19 02:39:55 +00:00
l10n daemon script
9c90e04c3c SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2023-06-19 02:36:02 +00:00
l10n daemon script
130f42cbee GIT_SILENT Sync po/docbooks with svn 2023-06-18 03:58:01 +00:00
l10n daemon script
87ac5476d9 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2023-06-18 03:45:16 +00:00
David Edmundson
c5a29b4b66 effects: Make OpenGL context current before deleting framebuffer
When we delete a window we unredirect, when we unredirect, we delete the
framebuffer which requires an openGL context.

handleWindowDeleted is the entry point from workspace events to effects
code, so it's made current here.

BUG: 444665
BUG: 471139
2023-06-17 13:12:30 +00:00
l10n daemon script
f41d95fef1 GIT_SILENT Sync po/docbooks with svn 2023-06-17 02:30:51 +00:00
l10n daemon script
cf2808c83a SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2023-06-17 02:26:31 +00:00
Laurent Montel
ba3bfbf4be Port PlasmaCore.Theme/ColorScope/Units etc to Kirigami
see https://pointieststick.com/2023/06/14/call-to-action-easy-porting-opportunity-in-plasma/
2023-06-16 14:39:21 +00:00
Nate Graham
ad4ce627ae plugins/overview: also do things when changing to active
We were binding to the statusChanged signal, but then only doing
anything if the status had changed to "Activating". This did not work
for when the effect was activated without a gesture, because then its
status would change straight to "Activated", bypassing the in-between
state of "Activating."

This fixes clearing the search text on activation without a gesture.
2023-06-16 07:24:54 +00:00
Vlad Zahorodnii
712fd3396c Sync EffectsHandler::windowAdded with Workspace::windowAdded
This change makes the EffectsHandler emit the windowAdded signal as soon
as the Workspace::windowAdded signal is received and minimize the
difference between the states observed in kwin core and effects.
2023-06-16 06:41:12 +00:00
Vlad Zahorodnii
a43ffb8182 Advance window animations in prePaintWindow()
This will ensure that the window animation is advanced only if the
window is painted. I'd like to rely on this to allow effects schedule
animations as soon as Workspace::windowAdded signal is emitted.

As is, the issue with delaying EffectsHandler::windowAdded is that we
don't filter out all "not ready" windows, which breaks some effects
because EffectWindows are leaked in some properties but no
EffectsHandler::windowRemoved signal is emitted so those effects can
perform cleanup. Fixing that by the means of ensuring that only renderable
EffectWindows are exposed is hard too, and it would also mean that
effects need to use their own api, which I would like to avoid and port
the effects to kwin core apis instead.
2023-06-16 06:41:12 +00:00
l10n daemon script
e8904819b7 GIT_SILENT Sync po/docbooks with svn 2023-06-16 02:22:29 +00:00
Aleix Pol Gonzalez
11e8b91cb0 Composite: Enforce KWIN_COMPOSE
Don't fall back into other composition systems if KWIN_COMPOSE is
explicitly set. In such case, just exit().

Signed-off-by: Victoria Fischer <victoria.fischer@mbition.io>
2023-06-15 08:45:25 +00:00
Nicolas Fella
45ad400f41 plugins/aurorae: Set layout for config module
There is no layout by default, which causes a crash
2023-06-15 06:34:21 +00:00
Nicolas Fella
3415d6e0b3 plugins/aurorae: Fix config module 2023-06-15 06:34:21 +00:00
l10n daemon script
280bfa3172 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2023-06-15 02:29:07 +00:00
Xaver Hugl
4541501ccc get rid of some unnecessary const_casts 2023-06-14 14:36:36 +00:00
Severin von Wnuck
dc4c463ca3 xwayland: Remove cursor definition
This is now handled by krdb.

BUG: 442839
BUG: 459468
2023-06-14 13:37:20 +00:00
Xaver Hugl
debe76733c libkwineffects/kwinglutils: handle alpha better with colormanagement
Alpha from clients is encoded in electrical values, and some of our code also relies
on compositing results being encoded in electrical values. To take care of this, we
need to undo the premultiplication of rgb values, convert to or from linear, and then
re-do the premultiplication. This doesn't result in exactly the same blending behavior
with linear blending, but it's close enough
2023-06-14 13:23:43 +00:00
Xaver Hugl
c112bb5c56 backends/drm: fix color management with sRGB output
We need to target the linear EOTF for rendering, even if the output EOTF
is sRGB
2023-06-14 15:01:40 +02:00
Nicolas Fella
bc62760186 kcms/decoration: Use KCMultiDialog to open decoration kcms
Now that decoration configs are separate plugins we can plug those into KCMultiDialog instead of hand-rolling it ourselves

As a nice side-effect this should allow to implement the decoration config in QML

BUG: 470902
2023-06-14 12:37:23 +00:00
Vlad Zahorodnii
23f533aa52 autotests: Skip ScreencastingTest::testOutputCasting when running in ci
The test is flaky. We work around it by passing --repeat until-pass, but
lately even it doesn't help us with this issue.

So skip the test when running it inside KDE CI for a few months until
it gets a newer kernel.
2023-06-14 11:01:03 +00:00
l10n daemon script
1674b2b75b GIT_SILENT Sync po/docbooks with svn 2023-06-14 02:25:20 +00:00
Aleix Pol
fbbaab3eaf kcm/decoration: Allow specifying the kcm separately from the decoration
It makes decorations lighter as they don't need to bundle its
configuration logic.
Deprecates the kcmodule property in favour of kcmoduleName which instead
of assuming that the kcm is local to the plugin, it provides the plugin
name to find and load.
2023-06-13 12:20:21 +02:00
l10n daemon script
381de13973 GIT_SILENT Sync po/docbooks with svn 2023-06-13 02:29:26 +00:00
Vlad Zahorodnii
b9da04bf45 libkwineffects: Make OffscreenEffect render window with its output's scale
Render the window at its output's scale to make the window less blurry.

BUG: 470607
2023-06-12 16:09:51 +00:00
Vlad Zahorodnii
984af8f4f2 x11: Prevent handling some override-redirect window properties
It appears PyCharm can change WM_HINTS propery of override-redirect
windows when they are closed, which triggers a crash in kwin.

This change adds the corresponding guard. In addition to the icons, it
adds a few more guards to prevent kwin crashing when a rogue client sets
wrong properties on an override redirect window.

BUG: 470874
2023-06-12 09:58:16 +00:00
l10n daemon script
73fac19d2a GIT_SILENT Sync po/docbooks with svn 2023-06-12 02:56:58 +00:00
Ismael Asensio
c34bae007d kcms/rules: Add missing KCM namespace qualifier
There was a missing `KCM.` qualifier to `ContextHelpButton`
preventing the component to load

ammends 784f36affa

BUG: 470906
FIXED-IN: 6
2023-06-11 15:44:49 +02:00
l10n daemon script
a61ae0b07e GIT_SILENT Sync po/docbooks with svn 2023-06-11 02:31:00 +00:00
Alexander Lohnau
d251f3011c Remove unneeded QVariantList from KCM constructor args
The args are not needed and will be removed later in KF6
2023-06-10 06:50:27 +02:00
Aleix Pol
0a7db79e7c overview: Do not trigger the toggle action twice
It's already connected as it's created by EffectTogglableState.

BUG: 470603
2023-06-10 02:36:23 +02:00
Nate Graham
80b7ed62da kcms/scripts: fix namespacing to make it load again
BUG: 470781
2023-06-09 08:42:05 -06:00
Matthias Dahl
56f6bab0c3 scene: Pad damage if scale factor is fractional
Floating point arithmetic and/or the use of GL_LINEAR in the pipeline,
may result in visual glitches due to rounding (errors). As a short-term
fix until a proper (more involved) solution is in place for Plasma 6,
pad the damage slightly in all directions to alleviate those effects.
2023-06-09 15:05:06 +02:00
l10n daemon script
9ac6f71662 GIT_SILENT Sync po/docbooks with svn 2023-06-09 02:36:33 +00:00
Vlad Zahorodnii
6f3cb932df wayland: Rewrite wl-shm implementation
The main motivation for the rewrite is to properly port ShmClientBuffer
to our GraphicsBuffer abstractions. As is, libwayland implementation is
not suitable for our needs. We may need ShmClientBuffer to be alive when
its corresponding wl_shm_buffer resource is destroyed, for example to
play a window closing animation. With the existing api, we need to fight
libwayland. Besides that, libwayland doesn't provide a way to get
underlying pool file descriptor, which is needed to fill ShmAttributes.
2023-06-08 06:22:46 +00:00
Vlad Zahorodnii
f1d6366d4a core: Introduce GraphicsBufferView
GraphicsBufferView provides a way to map the contents of a graphics
buffer as an image.
2023-06-08 06:22:46 +00:00
l10n daemon script
592948e5ab GIT_SILENT Sync po/docbooks with svn 2023-06-08 02:34:31 +00:00
l10n daemon script
d75149c7b1 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2023-06-08 02:29:50 +00:00