diff options
| author | Vaxry <43317083+vaxerski@users.noreply.github.com> | 2025-09-08 11:07:04 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-09-08 11:07:04 +0200 |
| commit | 02bb350bb3355b5f08e7b0635be10ee47c69346a (patch) | |
| tree | 5dd75680837fd2586980aa069308f5c39d246283 /src/render/OpenGL.cpp | |
| parent | bce43f74eb8e4570d0d043f5fc8257eef7a57399 (diff) | |
screencopy: add force 8 bit to fix 10b screensharing (#11623)
ref https://github.com/hyprwm/xdg-desktop-portal-hyprland/issues/270
Diffstat (limited to 'src/render/OpenGL.cpp')
| -rw-r--r-- | src/render/OpenGL.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
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<Hyprlang::INT>("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() { |
