[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