From a34b74766193c21803e2bc6a51fa6c13d82eb39f Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Fri, 3 Mar 2023 21:28:22 +0000 Subject: [PATCH] update wlroots dep --- src/render/Renderer.cpp | 46 ++++++++--------------------------------- subprojects/wlroots | 2 +- 2 files changed, 10 insertions(+), 38 deletions(-) diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp index 07f043de..2f458641 100644 --- a/src/render/Renderer.cpp +++ b/src/render/Renderer.cpp @@ -746,48 +746,20 @@ void CHyprRenderer::setWindowScanoutMode(CWindow* pWindow) { return; } - const auto RENDERERDRMFD = wlr_renderer_get_drm_fd(g_pCompositor->m_sWLRRenderer); - const auto BACKENDDRMFD = wlr_backend_get_drm_fd(g_pCompositor->m_sWLRBackend); + const auto PMONITOR = g_pCompositor->getMonitorFromID(pWindow->m_iMonitorID); - if (RENDERERDRMFD < 0 || BACKENDDRMFD < 0) - return; - - auto deviceIDFromFD = [](int fd, unsigned long* deviceID) -> bool { - struct stat stat; - if (fstat(fd, &stat) != 0) { - return false; - } - *deviceID = stat.st_rdev; - return true; + const wlr_linux_dmabuf_feedback_v1_init_options INIT_OPTIONS = { + .main_renderer = g_pCompositor->m_sWLRRenderer, + .scanout_primary_output = PMONITOR->output, }; - unsigned long rendererDevice, scanoutDevice; - if (!deviceIDFromFD(RENDERERDRMFD, &rendererDevice) || !deviceIDFromFD(BACKENDDRMFD, &scanoutDevice)) + wlr_linux_dmabuf_feedback_v1 feedback = {0}; + + if (!wlr_linux_dmabuf_feedback_v1_init_with_options(&feedback, &INIT_OPTIONS)) return; - const auto PMONITOR = g_pCompositor->getMonitorFromID(pWindow->m_iMonitorID); - - const auto POUTPUTFORMATS = wlr_output_get_primary_formats(PMONITOR->output, WLR_BUFFER_CAP_DMABUF); - if (!POUTPUTFORMATS) - return; - - const auto PRENDERERFORMATS = wlr_renderer_get_dmabuf_texture_formats(g_pCompositor->m_sWLRRenderer); - wlr_drm_format_set scanoutFormats = {0}; - - if (!wlr_drm_format_set_intersect(&scanoutFormats, POUTPUTFORMATS, PRENDERERFORMATS)) - return; - - const wlr_linux_dmabuf_feedback_v1_tranche TRANCHES[] = { - {.target_device = scanoutDevice, .flags = ZWP_LINUX_DMABUF_FEEDBACK_V1_TRANCHE_FLAGS_SCANOUT, .formats = &scanoutFormats}, - {.target_device = rendererDevice, .formats = PRENDERERFORMATS}}; - - const wlr_linux_dmabuf_feedback_v1 FEEDBACK = {.main_device = rendererDevice, .tranches_len = sizeof(TRANCHES) / sizeof(TRANCHES[0]), .tranches = TRANCHES}; - - if (!wlr_linux_dmabuf_v1_set_surface_feedback(g_pCompositor->m_sWLRLinuxDMABuf, g_pXWaylandManager->getWindowSurface(pWindow), &FEEDBACK)) { - Debug::log(ERR, "Error in scanout mode setting: wlr_linux_dmabuf_v1_set_surface_feedback returned false."); - } - - wlr_drm_format_set_finish(&scanoutFormats); + wlr_linux_dmabuf_v1_set_surface_feedback(g_pCompositor->m_sWLRLinuxDMABuf, g_pXWaylandManager->getWindowSurface(pWindow), &feedback); + wlr_linux_dmabuf_feedback_v1_finish(&feedback); Debug::log(LOG, "Scanout mode ON set for %x", pWindow); } diff --git a/subprojects/wlroots b/subprojects/wlroots index 677a3f2f..5ae17de2 160000 --- a/subprojects/wlroots +++ b/subprojects/wlroots @@ -1 +1 @@ -Subproject commit 677a3f2f8847ed2de49dd60868f9d9487a546f58 +Subproject commit 5ae17de23f5fd9bb252a698f3771c840280e2c05