From 68783d904d850df65887adb1bab7eff59943c1ac Mon Sep 17 00:00:00 2001 From: Vaxry Date: Mon, 4 Dec 2023 03:52:54 +0000 Subject: screencopy: use buffer format for glReadPixels fixes #4029 --- src/render/OpenGL.cpp | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) (limited to 'src/render/OpenGL.cpp') diff --git a/src/render/OpenGL.cpp b/src/render/OpenGL.cpp index 061cc2b5..2c9151e5 100644 --- a/src/render/OpenGL.cpp +++ b/src/render/OpenGL.cpp @@ -2067,14 +2067,6 @@ void CHyprOpenGLImpl::setMonitorTransformEnabled(bool enabled) { m_bEndFrame = !enabled; } -struct SGLPixelFormat { - uint32_t drmFormat = DRM_FORMAT_INVALID; - GLint glInternalFormat = 0; - GLint glFormat = 0; - GLint glType = 0; - bool withAlpha = false; -}; - inline const SGLPixelFormat GLES2_FORMATS[] = { { .drmFormat = DRM_FORMAT_ARGB8888, @@ -2179,9 +2171,6 @@ inline const SGLPixelFormat GLES2_FORMATS[] = { }; uint32_t CHyprOpenGLImpl::getPreferredReadFormat(CMonitor* pMonitor) { - if (g_pHyprRenderer->isNvidia()) - return DRM_FORMAT_XBGR8888; - GLint glf = -1, glt = -1, as = -1; glGetIntegerv(GL_IMPLEMENTATION_COLOR_READ_FORMAT, &glf); glGetIntegerv(GL_IMPLEMENTATION_COLOR_READ_TYPE, &glt); @@ -2202,3 +2191,12 @@ uint32_t CHyprOpenGLImpl::getPreferredReadFormat(CMonitor* pMonitor) { return DRM_FORMAT_XBGR8888; } + +const SGLPixelFormat* CHyprOpenGLImpl::getPixelFormatFromDRM(uint32_t drmFormat) { + for (auto& fmt : GLES2_FORMATS) { + if (fmt.drmFormat == drmFormat) + return &fmt; + } + + return nullptr; +} \ No newline at end of file -- cgit v1.2.3