997cf97c9f
This is Milestone 1 of full support of Atomic Mode Setting (AMS) and Universal Planes in the KWin DRM backend. With Milestone 1 we can use the primary plane of a DRM output and do an AMS commit (this means mode setting aswell as page flipping), if the driver supports it. Until now the functionality is only tested on Intel graphics. You need the drm-next kernel for most recent DRM kernel developments. As boot option set "i915.nuclear_pageflip". Additionally at the moment AMS is still hidden behind the environment variable KWIN_DRM_AMS. Set it, if you want to try out AMS. What needs to be done next: Make it possible to transfer EGL buffers directly to planes and implement logic for deciding about using a plane or not for a specific buffer. You can read more about it on LWN: https://lwn.net/Articles/653071 And on Martin's blog: https://blog.martin-graesslin.com/blog/2015/08/layered-compositing/ I used as model previous work by Daniel Stone for Weston: https://git.collabora.com/cgit/user/daniels/weston.git Reviewed-by: mgraesslin Tags: #kwin Differential Revision: https://phabricator.kde.org/D2370
31 lines
684 B
CMake
31 lines
684 B
CMake
set(DRM_SOURCES
|
|
drm_backend.cpp
|
|
drm_object.cpp
|
|
drm_object_connector.cpp
|
|
drm_object_crtc.cpp
|
|
drm_object_plane.cpp
|
|
drm_output.cpp
|
|
drm_buffer.cpp
|
|
drm_inputeventfilter.cpp
|
|
logging.cpp
|
|
scene_qpainter_drm_backend.cpp
|
|
screens_drm.cpp
|
|
)
|
|
|
|
if(HAVE_GBM)
|
|
set(DRM_SOURCES ${DRM_SOURCES} egl_gbm_backend.cpp)
|
|
endif()
|
|
|
|
add_library(KWinWaylandDrmBackend MODULE ${DRM_SOURCES})
|
|
target_link_libraries(KWinWaylandDrmBackend kwin Libdrm::Libdrm)
|
|
|
|
if(HAVE_GBM)
|
|
target_link_libraries(KWinWaylandDrmBackend gbm::gbm)
|
|
endif()
|
|
|
|
install(
|
|
TARGETS
|
|
KWinWaylandDrmBackend
|
|
DESTINATION
|
|
${PLUGIN_INSTALL_DIR}/org.kde.kwin.waylandbackends/
|
|
)
|