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
This commit is contained in:
parent
f15b49e0fd
commit
d30cc19d25
5 changed files with 54 additions and 61 deletions
|
|
@ -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<Hyprlang::INT>("opengl:nvidia_anti_flicker");
|
||||
|
||||
PMONITOR->commitSeq++;
|
||||
|
||||
g_pHyprOpenGL->m_RenderData.damage = m_sRenderPass.render(g_pHyprOpenGL->m_RenderData.damage);
|
||||
|
||||
auto cleanup = CScopeGuard([this]() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue