diff options
| author | Tom Englund <tomenglund26@gmail.com> | 2025-05-07 19:02:07 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-05-07 19:02:07 +0200 |
| commit | 6abb5b0c7e98e064c752075b78cb7389ea818f46 (patch) | |
| tree | 63db06ee86724beb5a0d00392b09b84d91f0bb52 /src/render/Renderer.cpp | |
| parent | 0dfcba9825f1c9fb24987e9b255e8b43be4aae6d (diff) | |
renderer: precompute fullalpha (#10319)
precompute it once instead of calculating it every single call, was showing
up as a lot of time wasted in profiling.
Diffstat (limited to 'src/render/Renderer.cpp')
| -rw-r--r-- | src/render/Renderer.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp index ed767cbd..dde53f5d 100644 --- a/src/render/Renderer.cpp +++ b/src/render/Renderer.cpp @@ -519,10 +519,12 @@ void CHyprRenderer::renderWindow(PHLWINDOW pWindow, PHLMONITOR pMonitor, const T EMIT_HOOK_EVENT("render", RENDER_PRE_WINDOW); + const auto fullAlpha = renderdata.alpha * renderdata.fadeAlpha; + if (*PDIMAROUND && pWindow->m_windowData.dimAround.valueOrDefault() && !m_bRenderingSnapshot && mode != RENDER_PASS_POPUP) { CBox monbox = {0, 0, g_pHyprOpenGL->m_renderData.pMonitor->m_transformedSize.x, g_pHyprOpenGL->m_renderData.pMonitor->m_transformedSize.y}; CRectPassElement::SRectData data; - data.color = CHyprColor(0, 0, 0, *PDIMAROUND * renderdata.alpha * renderdata.fadeAlpha); + data.color = CHyprColor(0, 0, 0, *PDIMAROUND * fullAlpha); data.box = monbox; m_renderPass.add(makeShared<CRectPassElement>(data)); } @@ -555,14 +557,14 @@ void CHyprRenderer::renderWindow(PHLWINDOW pWindow, PHLMONITOR pMonitor, const T if (wd->getDecorationLayer() != DECORATION_LAYER_BOTTOM) continue; - wd->draw(pMonitor, renderdata.alpha * renderdata.fadeAlpha); + wd->draw(pMonitor, fullAlpha); } for (auto const& wd : pWindow->m_windowDecorations) { if (wd->getDecorationLayer() != DECORATION_LAYER_UNDER) continue; - wd->draw(pMonitor, renderdata.alpha * renderdata.fadeAlpha); + wd->draw(pMonitor, fullAlpha); } } @@ -603,7 +605,7 @@ void CHyprRenderer::renderWindow(PHLWINDOW pWindow, PHLMONITOR pMonitor, const T if (wd->getDecorationLayer() != DECORATION_LAYER_OVER) continue; - wd->draw(pMonitor, renderdata.alpha * renderdata.fadeAlpha); + wd->draw(pMonitor, fullAlpha); } } @@ -674,7 +676,7 @@ void CHyprRenderer::renderWindow(PHLWINDOW pWindow, PHLMONITOR pMonitor, const T if (wd->getDecorationLayer() != DECORATION_LAYER_OVERLAY) continue; - wd->draw(pMonitor, renderdata.alpha * renderdata.fadeAlpha); + wd->draw(pMonitor, fullAlpha); } } } |
