From cd309778a9e218ca63a873f58fac14009ecfcfb4 Mon Sep 17 00:00:00 2001 From: Samuel Cobb Date: Thu, 25 Jul 2024 14:57:00 +0100 Subject: [PATCH] Revert "apply patch" This reverts commit 828d07a4c1a80813fbc40eb3e95674240933cc80. --- include/aquamarine/backend/Backend.hpp | 2 +- src/backend/Backend.cpp | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/include/aquamarine/backend/Backend.hpp b/include/aquamarine/backend/Backend.hpp index 273bd58..6e40d62 100644 --- a/include/aquamarine/backend/Backend.hpp +++ b/include/aquamarine/backend/Backend.hpp @@ -114,7 +114,7 @@ namespace Aquamarine { void removeIdleEvent(Hyprutils::Memory::CSharedPointer> pfn); // utils - int reopenDRMNode(int drmFD, bool allowRenderNode = false); + int reopenDRMNode(int drmFD, bool allowRenderNode = true); struct { Hyprutils::Signal::CSignal newOutput; diff --git a/src/backend/Backend.cpp b/src/backend/Backend.cpp index a85c8b2..93f251f 100644 --- a/src/backend/Backend.cpp +++ b/src/backend/Backend.cpp @@ -271,6 +271,31 @@ void Aquamarine::CBackend::dispatchIdle() { // Yoinked from wlroots, render/allocator/allocator.c // Ref-counting reasons, see https://gitlab.freedesktop.org/mesa/drm/-/merge_requests/110 int Aquamarine::CBackend::reopenDRMNode(int drmFD, bool allowRenderNode) { + + if (drmIsMaster(drmFD)) { + // Only recent kernels support empty leases + uint32_t lesseeID = 0; + int leaseFD = drmModeCreateLease(drmFD, nullptr, 0, O_CLOEXEC, &lesseeID); + log(AQ_LOG_TRACE, std::format("lesseeID: {}, leaseFD: {}", lesseeID, leaseFD)); + if (leaseFD >= 0) { + log(AQ_LOG_TRACE, std::format("leaseFD Passed: {}", leaseFD)); + char* name = nullptr; + if (allowRenderNode) + name = drmGetRenderDeviceNameFromFd(leaseFD); + + if(name) { + log(AQ_LOG_TRACE, std::format("Render device has name inside drmIsMaster: {}", name)); + } + + free(name); + return leaseFD; + } else if (leaseFD != -EINVAL && leaseFD != -EOPNOTSUPP) { + log(AQ_LOG_ERROR, "reopenDRMNode: drmModeCreateLease failed"); + return -1; + } + log(AQ_LOG_DEBUG, "reopenDRMNode: drmModeCreateLease failed, falling back to open"); + } + char* name = nullptr; if (allowRenderNode) name = drmGetRenderDeviceNameFromFd(drmFD);