From 02bb350bb3355b5f08e7b0635be10ee47c69346a Mon Sep 17 00:00:00 2001 From: Vaxry <43317083+vaxerski@users.noreply.github.com> Date: Mon, 8 Sep 2025 11:07:04 +0200 Subject: screencopy: add force 8 bit to fix 10b screensharing (#11623) ref https://github.com/hyprwm/xdg-desktop-portal-hyprland/issues/270 --- src/render/OpenGL.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src/render/OpenGL.cpp') diff --git a/src/render/OpenGL.cpp b/src/render/OpenGL.cpp index 0780adf9..d7ea5842 100644 --- a/src/render/OpenGL.cpp +++ b/src/render/OpenGL.cpp @@ -3113,7 +3113,17 @@ void CHyprOpenGLImpl::setCapStatus(int cap, bool status) { } uint32_t CHyprOpenGLImpl::getPreferredReadFormat(PHLMONITOR pMonitor) { - return pMonitor->m_output->state->state().drmFormat; + static const auto PFORCE8BIT = CConfigValue("misc:screencopy_force_8b"); + + if (!*PFORCE8BIT) + return pMonitor->m_output->state->state().drmFormat; + + auto fmt = pMonitor->m_output->state->state().drmFormat; + + if (fmt == DRM_FORMAT_BGRA1010102 || fmt == DRM_FORMAT_ARGB2101010 || fmt == DRM_FORMAT_XRGB2101010 || fmt == DRM_FORMAT_BGRX1010102) + return DRM_FORMAT_XRGB8888; + + return fmt; } bool CHyprOpenGLImpl::explicitSyncSupported() { -- cgit v1.2.3