renderer: allow tearing with DS with invisible cursors (#13155)
This commit is contained in:
parent
cfbbfb591a
commit
9f9dbb0dc5
5 changed files with 27 additions and 22 deletions
|
|
@ -1724,6 +1724,10 @@ uint8_t CMonitor::isTearingBlocked(bool full) {
|
|||
}
|
||||
}
|
||||
|
||||
// TODO: remove this when kernel allows tearing + hw cursor updated
|
||||
if (g_pPointerManager->hasVisibleHWCursor(m_self.lock()))
|
||||
reasons |= TC_HW_CURSOR;
|
||||
|
||||
if (m_solitaryClient.expired()) {
|
||||
reasons |= TC_CANDIDATE;
|
||||
return reasons;
|
||||
|
|
@ -1765,12 +1769,6 @@ uint16_t CMonitor::isDSBlocked(bool full) {
|
|||
}
|
||||
}
|
||||
|
||||
if (m_tearingState.activelyTearing) {
|
||||
reasons |= DS_BLOCK_TEARING;
|
||||
if (!full)
|
||||
return reasons;
|
||||
}
|
||||
|
||||
if (!m_mirrors.empty() || isMirror()) {
|
||||
reasons |= DS_BLOCK_MIRROR;
|
||||
if (!full)
|
||||
|
|
@ -1862,7 +1860,7 @@ bool CMonitor::attemptDirectScanout() {
|
|||
}
|
||||
|
||||
//#TODO this entire bit is bootleg deluxe, above bit is to not make vrr go down the drain, returning early here means fifo gets forever locked.
|
||||
if (PSURFACE->m_fifo && *PSAMEFIFO)
|
||||
if (PSURFACE->m_fifo && !m_tearingState.activelyTearing && *PSAMEFIFO)
|
||||
PSURFACE->m_stateQueue.unlockFirst(LOCK_REASON_FIFO);
|
||||
|
||||
return true;
|
||||
|
|
|
|||
|
|
@ -233,9 +233,8 @@ class CMonitor {
|
|||
DS_BLOCK_SURFACE = (1 << 8),
|
||||
DS_BLOCK_TRANSFORM = (1 << 9),
|
||||
DS_BLOCK_DMA = (1 << 10),
|
||||
DS_BLOCK_TEARING = (1 << 11),
|
||||
DS_BLOCK_FAILED = (1 << 12),
|
||||
DS_BLOCK_CM = (1 << 13),
|
||||
DS_BLOCK_FAILED = (1 << 11),
|
||||
DS_BLOCK_CM = (1 << 12),
|
||||
|
||||
DS_CHECKS_COUNT = 14,
|
||||
};
|
||||
|
|
@ -276,8 +275,9 @@ class CMonitor {
|
|||
TC_SUPPORT = (1 << 4),
|
||||
TC_CANDIDATE = (1 << 5),
|
||||
TC_WINDOW = (1 << 6),
|
||||
TC_HW_CURSOR = (1 << 7),
|
||||
|
||||
TC_CHECKS_COUNT = 7,
|
||||
TC_CHECKS_COUNT = 8,
|
||||
};
|
||||
|
||||
// methods
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue