From 05aa3a62e18ed70edfd6138d026577b006a63df3 Mon Sep 17 00:00:00 2001 From: Ivan Malison Date: Wed, 29 Apr 2026 07:41:45 -0700 Subject: [PATCH] hyprexpo: use alpha format for overview framebuffers --- hyprexpo/overview.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/hyprexpo/overview.cpp b/hyprexpo/overview.cpp index b6f8319..a909ca5 100644 --- a/hyprexpo/overview.cpp +++ b/hyprexpo/overview.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -66,6 +67,11 @@ static const CConfigValue& PDISTANCE() { return VALUE; } +static uint32_t framebufferFormatWithAlpha(uint32_t drmFormat) { + const auto alphaFormat = NFormatUtils::alphaFormat(drmFormat); + return alphaFormat == 0 ? DRM_FORMAT_ABGR8888 : alphaFormat; +} + static void clearWithColor(const CHyprColor& color) { glClearColor(color.r, color.g, color.b, color.a); glClear(GL_COLOR_BUFFER_BIT); @@ -292,7 +298,7 @@ COverview::COverview(PHLWORKSPACE startedOn_, bool swipe_) : startedOn(startedOn for (size_t i = 0; i < (size_t)(SIDE_LENGTH * SIDE_LENGTH); ++i) { COverview::SWorkspaceImage& image = images[i]; - ensureFramebuffer(image, monbox, PMONITOR->m_output->state->state().drmFormat); + ensureFramebuffer(image, monbox, framebufferFormatWithAlpha(PMONITOR->m_output->state->state().drmFormat)); CRegion fakeDamage{0, 0, INT16_MAX, INT16_MAX}; g_pHyprRenderer->beginRender(PMONITOR, fakeDamage, Render::RENDER_MODE_FULL_FAKE, nullptr, image.fb); @@ -424,7 +430,7 @@ void COverview::redrawID(int id, bool forcelowres) { auto& image = images[id]; - ensureFramebuffer(image, monbox, pMonitor->m_output->state->state().drmFormat); + ensureFramebuffer(image, monbox, framebufferFormatWithAlpha(pMonitor->m_output->state->state().drmFormat)); CRegion fakeDamage{0, 0, INT16_MAX, INT16_MAX}; g_pHyprRenderer->beginRender(pMonitor.lock(), fakeDamage, Render::RENDER_MODE_FULL_FAKE, nullptr, image.fb);