diff options
| author | Pppp1116 <pcaiadoguerreiro@gmail.com> | 2026-04-03 13:27:57 +0100 |
|---|---|---|
| committer | Vaxry <43317083+vaxerski@users.noreply.github.com> | 2026-04-04 08:26:24 -0400 |
| commit | 2b9696eb7259fa16bfd1408694a26e2e06c969d1 (patch) | |
| tree | f3b9d8f5e9298b47b0a5d29d525db286a5a68fb6 /src/helpers/Monitor.cpp | |
| parent | 4c42269ce6c44af40ea63f048d67dc0b898c8213 (diff) | |
renderer: skip redundant render-path work
Diffstat (limited to 'src/helpers/Monitor.cpp')
| -rw-r--r-- | src/helpers/Monitor.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/helpers/Monitor.cpp b/src/helpers/Monitor.cpp index 39951028..6e88357e 100644 --- a/src/helpers/Monitor.cpp +++ b/src/helpers/Monitor.cpp @@ -1118,6 +1118,7 @@ void CMonitor::addDamage(const CBox& box) { if (m_cursorZoom->value() != 1.f && g_pCompositor->getMonitorFromCursor() == m_self) { m_damage.damageEntire(); g_pCompositor->scheduleFrameForMonitor(m_self.lock(), Aquamarine::IOutput::AQ_SCHEDULE_DAMAGE); + return; } if (m_damage.damage(box)) @@ -2419,7 +2420,7 @@ CMonitorState::CMonitorState(CMonitor* owner) : m_owner(owner) { } void CMonitorState::ensureBufferPresent() { - const auto STATE = m_owner->m_output->state->state(); + const auto& STATE = m_owner->m_output->state->state(); if (!STATE.enabled) { Log::logger->log(Log::TRACE, "CMonitorState::ensureBufferPresent: Ignoring, monitor is not enabled"); return; @@ -2459,13 +2460,18 @@ bool CMonitorState::test() { } bool CMonitorState::updateSwapchain() { - auto options = m_owner->m_output->swapchain->currentOptions(); + const auto& OPTIONS = m_owner->m_output->swapchain->currentOptions(); const auto& STATE = m_owner->m_output->state->state(); const auto& MODE = STATE.mode ? STATE.mode : STATE.customMode; if (!MODE) { Log::logger->log(Log::WARN, "updateSwapchain: No mode?"); return true; } + + if (OPTIONS.format == m_owner->m_drmFormat && OPTIONS.scanout && OPTIONS.length == 3 && OPTIONS.size == MODE->pixelSize) + return true; + + auto options = OPTIONS; options.format = m_owner->m_drmFormat; options.scanout = true; options.length = 3; |
