summaryrefslogtreecommitdiff
path: root/src/Compositor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Compositor.cpp')
-rw-r--r--src/Compositor.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/Compositor.cpp b/src/Compositor.cpp
index 53f79012..58292c8a 100644
--- a/src/Compositor.cpp
+++ b/src/Compositor.cpp
@@ -73,6 +73,7 @@
#include <sys/resource.h>
#include <malloc.h>
#include <unistd.h>
+#include <xf86drm.h>
using namespace Hyprutils::String;
using namespace Aquamarine;
@@ -167,6 +168,10 @@ void CCompositor::restoreNofile() {
Debug::log(ERR, "Failed restoring NOFILE limits");
}
+bool CCompositor::supportsDrmSyncobjTimeline() const {
+ return m_bDrmSyncobjTimelineSupported;
+}
+
void CCompositor::setMallocThreshold() {
#ifdef M_TRIM_THRESHOLD
// The default is 128 pages,
@@ -354,6 +359,16 @@ void CCompositor::initServer(std::string socketName, int socketFd) {
m_drmFD = m_aqBackend->drmFD();
Debug::log(LOG, "Running on DRMFD: {}", m_drmFD);
+ if (m_drmFD >= 0) {
+ uint64_t cap = 0;
+ int ret = drmGetCap(m_drmFD, DRM_CAP_SYNCOBJ_TIMELINE, &cap);
+ m_bDrmSyncobjTimelineSupported = (ret == 0 && cap != 0);
+ Debug::log(LOG, "DRM syncobj timeline support: {}", m_bDrmSyncobjTimelineSupported ? "yes" : "no");
+ } else {
+ m_bDrmSyncobjTimelineSupported = false;
+ Debug::log(LOG, "DRM syncobj timeline support: no (no DRM FD)");
+ }
+
if (!socketName.empty() && socketFd != -1) {
fcntl(socketFd, F_SETFD, FD_CLOEXEC);
const auto RETVAL = wl_display_add_socket_fd(m_wlDisplay, socketFd);