[Differential] [Request, 299 lines] D1282: Consider change in sub-surface tree as a full damage
graesslin (Martin Gräßlin)
noreply at phabricator.kde.org
Fri Apr 1 08:10:35 UTC 2016
graesslin created this revision.
graesslin added a reviewer: Plasma.
Herald added a project: Plasma.
Herald added a subscriber: plasma-devel.
REVISION SUMMARY
A sub-surface changed in a way which needs a repaint. Of course only
if the surface is mapped.
Make Scene::Window::window() and WindowPixmap::toplevel() const
No need to have them not const.
Add support for SubSurface to WindowPixmap
This change introduces a tree for WindowPixmap. A WindowPixmap can
have a parent WindowPixmap and children. Each child represents a
SubSurface and references the buffer of that SubSurface.
The tree of WindowPixmaps is updated each time updateBuffer is called.
If there are new SubSurfaces new WindowPixmaps are created, for removed
SubSurfaces the old WindowPixmap gets removed. Also the ordering is
updated to reflect the current state.
This is currently rather expensive and should be changed to only rebuild
the tree if it actually changed.
Add a SurfaceInterface *WindowPixmap::surface() const
Convenience method to get the Surface for a WindowPixmap which is either
the toplevel's surface or a SubSurface.
Use new surface() method in WindowPixmap::updateBuffer
Render child WindowPixmap in SceneQPainter
The rendering is done in a recursive way. For updating the buffer an
important change is done: the buffer is copied into a new QImage on each
change and the differences are no longer painted. This is due to damage
region in a sub-surface tree being basically unknown.
Create sub OpenGLWindowPixmap for sub-surfaces
Properly update EGL Texture for sub-surface buffers
We need to use the tracked damage instead of Toplevel's damage.
Render sub-surfaces in OpenGL compositor
This is more a hack than an actual implementation. It just renders
all sub-surfaces after the main window got rendered. But it does not:
- use window quads (e.g. splitting not supported)
- is not combined with rendering of the main surface
- does not support previous pixmap
Still it renders, which is the main goal at the moment.
Announce support for subcompositor protocol
REPOSITORY
rKWIN KWin
BRANCH
subcompositor-arc
REVISION DETAIL
https://phabricator.kde.org/D1282
AFFECTED FILES
abstract_egl_backend.cpp
scene.cpp
scene.h
scene_opengl.cpp
scene_opengl.h
scene_qpainter.cpp
scene_qpainter.h
toplevel.cpp
wayland_server.cpp
EMAIL PREFERENCES
https://phabricator.kde.org/settings/panel/emailpreferences/
To: graesslin, Plasma
Cc: plasma-devel, sebas
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/plasma-devel/attachments/20160401/0894142a/attachment.html>
More information about the Plasma-devel
mailing list