D18570: EGLStream DRM Backend Initial Implementation
Erik Kurzinger <[email protected]>
| Newsgroups | gmane.comp.kde.devel.kwin |
|---|---|
| Message-ID | <[email protected]> |
ekurzinger updated this revision to Diff 53757. ekurzinger edited the summary of this revision. ekurzinger added a comment. Sorry for the delay, but the new backend now integrates into the atomic modesetting path of DrmOutput::present eliminating the need to expose the internal pageFlipPending flag and is a bit cleaner in general, I think. It leverages the existing code for modesets (which are now actually working correctly), however page flips are still performed through EGL. This necessitated adding an early return from DrmOutput::presentAtomically as well as not registering the flip event when using the EGLStream backend. I tried to make this as minimally-invasive as I could, and since there's already a fair amount of coupling between DrmOutput and DrmBackend hopefully a little bit more isn't the end of the world. Modesets use an empty dumb buffer, which is the same strategy that Mutter and Weston's EGLStream backends employ. I thought this might fix hardware cursors, but they still appear to cause some strange issues so I left them disabled for now. I suspect this might be a bug in the NVIDIA driver. Additionally, I've changed the EGLOutput stream to operate in mailbox mode which eliminates some potential problematic interactions with DPMS. Anyway, let me know what you think. REPOSITORY R108 KWin CHANGES SINCE LAST UPDATE https://phabricator.kde.org/D18570?vs=52113&id=53757 REVISION DETAIL https://phabricator.kde.org/D18570 AFFECTED FILES CMakeLists.txt config-kwin.h.cmake plugins/platforms/drm/CMakeLists.txt plugins/platforms/drm/drm_backend.cpp plugins/platforms/drm/drm_backend.h plugins/platforms/drm/drm_output.cpp plugins/platforms/drm/drm_output.h plugins/platforms/drm/egl_stream_backend.cpp plugins/platforms/drm/egl_stream_backend.h workspace.cpp To: ekurzinger, davidedmundson, graesslin, #kwin, romangg Cc: eszlari, abalaji, mati865, wchilders, ognarb, abrahams, schernikov, guilhermesi, fredrik, cfeck, rapiteanu, romangg, hein, nicolasfella, zzag, kwin, jraleigh, GB_2, mkulinski, ragreen, jackyalcine, Pitel, iodelay, bwowk, ZrenBot, ngraham, alexeymin, lesliezhai, ali-mohamed, hardening, jensreuterberg, abetts, sebas, apol, mart