From 1d1981b0f44cc2dab2e5a5998ebd62bb5e05ff5b Mon Sep 17 00:00:00 2001 From: Xaver Hugl Date: Mon, 28 Aug 2023 21:29:05 +0200 Subject: [PATCH] backends/drm: make buffer age environment variable work again It can be very useful for debugging --- src/backends/drm/drm_egl_layer_surface.cpp | 4 +++- src/backends/wayland/wayland_egl_backend.cpp | 7 +++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/backends/drm/drm_egl_layer_surface.cpp b/src/backends/drm/drm_egl_layer_surface.cpp index a34b34b675..97c3e97988 100644 --- a/src/backends/drm/drm_egl_layer_surface.cpp +++ b/src/backends/drm/drm_egl_layer_surface.cpp @@ -31,6 +31,8 @@ static const QVector linearModifier = {DRM_FORMAT_MOD_LINEAR}; static const QVector implicitModifier = {DRM_FORMAT_MOD_INVALID}; static const QVector cpuCopyFormats = {DRM_FORMAT_ARGB8888, DRM_FORMAT_XRGB8888}; +static const bool bufferAgeEnabled = qEnvironmentVariable("KWIN_USE_BUFFER_AGE") != QStringLiteral("0"); + static gbm_format_name_desc formatName(uint32_t format) { gbm_format_name_desc ret; @@ -90,7 +92,7 @@ std::optional EglGbmLayerSurface::startRendering(cons } } - QRegion repaint = m_surface.damageJournal.accumulate(slot->age(), infiniteRegion()); + const QRegion repaint = bufferAgeEnabled ? m_surface.damageJournal.accumulate(slot->age(), infiniteRegion()) : infiniteRegion(); if (enableColormanagement) { if (!m_surface.shadowBuffer || m_surface.shadowTexture->size() != m_surface.gbmSwapchain->size()) { m_surface.shadowTexture = GLTexture::allocate(GL_RGBA16F, m_surface.gbmSwapchain->size()); diff --git a/src/backends/wayland/wayland_egl_backend.cpp b/src/backends/wayland/wayland_egl_backend.cpp index 264ecff239..d8c70aa835 100644 --- a/src/backends/wayland/wayland_egl_backend.cpp +++ b/src/backends/wayland/wayland_egl_backend.cpp @@ -31,6 +31,8 @@ namespace KWin namespace Wayland { +static const bool bufferAgeEnabled = qEnvironmentVariable("KWIN_USE_BUFFER_AGE") != QStringLiteral("0"); + WaylandEglPrimaryLayer::WaylandEglPrimaryLayer(WaylandOutput *output, WaylandEglBackend *backend) : m_waylandOutput(output) , m_backend(backend) @@ -86,10 +88,7 @@ std::optional WaylandEglPrimaryLayer::beginFrame() return std::nullopt; } - QRegion repair; - if (m_backend->supportsBufferAge()) { - repair = m_damageJournal.accumulate(m_buffer->age(), infiniteRegion()); - } + const QRegion repair = bufferAgeEnabled ? m_damageJournal.accumulate(m_buffer->age(), infiniteRegion()) : infiniteRegion(); if (!m_query) { m_query = std::make_unique(); }