D29131: [scene] Generate window quads for sub-surfaces
Vlad Zahorodnii <[email protected]>
| Newsgroups | gmane.comp.kde.devel.kwin |
|---|---|
| Message-ID | <[email protected]> |
zzag created this revision. zzag added a reviewer: KWin. Herald added a project: KWin. Herald added a subscriber: kwin. zzag requested review of this revision. REVISION SUMMARY No window quads are generated for sub-surfaces right now. This means that effects that operate on window quads are not able to transform sub-surfaces. Furthermore, the OpenGL scene needs window quads to clip windows without using the scissor test. The best (imho) way to render sub-surfaces would be with some help from a scene graph. Unfortunately, KDE hasn't developed any scene graph implementation that we could plug inti kwin and let the scene graph do its magic. As a short term solution, this patch adjusts relevant parts of the scene to make it generate window quads for sub-surfaces. In order to build window quads, we traverse the current window pixmap tree in DFS manner. When we enter a pixmap, we generate window quads. An id is assigned to each quad that can be later used to match a list of window quads against some particular window pixmap. With the proposed change, no changes to effects are required. Effects see window quads for sub-surfaces as regular WindowQuadContents quads. Cross-fading is still kind of broken. In order to cross-fade between two window pixmap trees, we need to render each tree in a texture, then cross-fade between those two textures in a shader. Unfortunately, this is not easy to do with the current design, so I only left a FIXME comment. Although it should be pretty straightforward with a scene graph. BUG: 387313 TEST PLAN Enabled the wobbly windows effect, moved weston-subsurfaces around on the screen. REPOSITORY R108 KWin BRANCH subsurface-quads REVISION DETAIL https://phabricator.kde.org/D29131 AFFECTED FILES CMakeLists.txt platformsupport/scenes/opengl/abstract_egl_backend.cpp plugins/scenes/opengl/scene_opengl.cpp plugins/scenes/opengl/scene_opengl.h plugins/scenes/qpainter/scene_qpainter.cpp plugins/scenes/qpainter/scene_qpainter.h scene.cpp scene.h subsurfacemonitor.cpp subsurfacemonitor.h To: zzag, #kwin Cc: kwin, Orage, cacarry, LeGast00n, The-Feren-OS-Dev, cblack, jraleigh, zachus, fbampaloukas, mkulinski, ragreen, jackyalcine, iodelay, crozbo, bwowk, ZrenBot, ngraham, alexeymin, himcesjf, lesliezhai, ali-mohamed, hardening, romangg, jensreuterberg, abetts, sebas, apol, ahiemstra, mart