summaryrefslogtreecommitdiff
path: root/src/Compositor.cpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2022-11-05 12:50:47 +0000
committervaxerski <43317083+vaxerski@users.noreply.github.com>2022-11-05 12:50:47 +0000
commitf50c78664042e9187c090cf780c88136c4158d10 (patch)
treecbb27dd61f2f425a0fabeab57b3180e0a1c65756 /src/Compositor.cpp
parent70aece85224dcca42e6fc596a4b68d688ad6c295 (diff)
Added direct scanout
Diffstat (limited to 'src/Compositor.cpp')
-rw-r--r--src/Compositor.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/Compositor.cpp b/src/Compositor.cpp
index 70249ef3..1b2341fd 100644
--- a/src/Compositor.cpp
+++ b/src/Compositor.cpp
@@ -73,7 +73,15 @@ CCompositor::CCompositor() {
throw std::runtime_error("wlr_gles2_renderer_create_with_drm_fd() failed!");
}
- wlr_renderer_init_wl_display(m_sWLRRenderer, m_sWLDisplay);
+ wlr_renderer_init_wl_shm(m_sWLRRenderer, m_sWLDisplay);
+
+ if (wlr_renderer_get_dmabuf_texture_formats(m_sWLRRenderer)) {
+ if (wlr_renderer_get_drm_fd(m_sWLRRenderer) >= 0) {
+ wlr_drm_create(m_sWLDisplay, m_sWLRRenderer);
+ }
+
+ m_sWLRLinuxDMABuf = wlr_linux_dmabuf_v1_create(m_sWLDisplay, m_sWLRRenderer);
+ }
m_sWLRAllocator = wlr_allocator_autocreate(m_sWLRBackend, m_sWLRRenderer);
@@ -1699,6 +1707,9 @@ void CCompositor::setWindowFullscreen(CWindow* pWindow, bool on, eFullscreenMode
forceReportSizesToWindowsOnWorkspace(pWindow->m_iWorkspaceID);
g_pInputManager->recheckIdleInhibitorStatus();
+
+ // DMAbuf stuff for direct scanout
+ g_pHyprRenderer->setWindowScanoutMode(pWindow);
}
void CCompositor::moveUnmanagedX11ToWindows(CWindow* pWindow) {