From d30cc19d253a3db784ad10c3084f58cbb52d325a Mon Sep 17 00:00:00 2001 From: Ikalco <73481042+ikalco@users.noreply.github.com> Date: Sat, 8 Mar 2025 13:24:22 -0600 Subject: renderer: skip ds commits if buffer didn't change (#9556) this fixes direct scanout glitches by ensuring that attemptDirectScanout doesn't try to recommit the same buffer to AQ which would cause a pageflip event and the backendRelease to release the same buffer too early --- src/render/Renderer.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/render/Renderer.cpp') diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp index 2ebf5629..3175b915 100644 --- a/src/render/Renderer.cpp +++ b/src/render/Renderer.cpp @@ -1486,6 +1486,8 @@ static hdr_output_metadata createHDRMetadata(SImageDescription settings, Aquamar } bool CHyprRenderer::commitPendingAndDoExplicitSync(PHLMONITOR pMonitor) { + pMonitor->commitSeq++; + // apply timelines for explicit sync // save inFD otherwise reset will reset it CFileDescriptor inFD{pMonitor->output->state->state().explicitInFence}; @@ -2278,8 +2280,6 @@ void CHyprRenderer::endRender() { const auto PMONITOR = g_pHyprOpenGL->m_RenderData.pMonitor; static auto PNVIDIAANTIFLICKER = CConfigValue("opengl:nvidia_anti_flicker"); - PMONITOR->commitSeq++; - g_pHyprOpenGL->m_RenderData.damage = m_sRenderPass.render(g_pHyprOpenGL->m_RenderData.damage); auto cleanup = CScopeGuard([this]() { -- cgit v1.2.3