From 5ceb0ec15df6301cafe95a1b1f73b4f4bf255968 Mon Sep 17 00:00:00 2001 From: Tom Englund Date: Thu, 15 May 2025 11:13:24 +0200 Subject: [PATCH] core: drop the legacy renderer (#10408) * core: drop the legacy renderer the legacy renderer is broken and barely used, drop it. * Nix: drop support for legacyRenderer --------- Co-authored-by: Mihai Fufezan --- CMakeLists.txt | 11 +- Makefile | 8 -- flake.nix | 1 - meson.build | 4 - meson_options.txt | 1 - nix/default.nix | 6 +- nix/overlays.nix | 8 +- src/debug/CrashReporter.cpp | 3 - src/debug/HyprCtl.cpp | 8 +- src/debug/HyprDebugOverlay.cpp | 3 - src/debug/HyprNotificationOverlay.cpp | 3 - src/helpers/Format.cpp | 111 +++++------------- src/hyprerror/HyprError.cpp | 3 - src/includes.hpp | 6 - src/protocols/Screencopy.cpp | 8 -- src/protocols/ToplevelExport.cpp | 6 - src/render/Framebuffer.cpp | 14 --- src/render/OpenGL.cpp | 107 +---------------- src/render/Texture.cpp | 6 +- .../decorations/CHyprGroupBarDecoration.cpp | 3 - 20 files changed, 50 insertions(+), 270 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 16007dc5f..4267a59d2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -99,11 +99,7 @@ message(STATUS "Checking deps...") find_package(Threads REQUIRED) -if(LEGACY_RENDERER) - set(GLES_VERSION "GLES2") -else() - set(GLES_VERSION "GLES3") -endif() +set(GLES_VERSION "GLES3") find_package(OpenGL REQUIRED COMPONENTS ${GLES_VERSION}) pkg_check_modules(aquamarine_dep REQUIRED IMPORTED_TARGET aquamarine>=0.8.0) @@ -216,11 +212,6 @@ if(NOT HAS_INOTIFY AND inotify_FOUND) target_link_libraries(Hyprland PkgConfig::inotify) endif() -if(LEGACY_RENDERER) - message(STATUS "Using the legacy GLES2 renderer!") - add_compile_definitions(LEGACY_RENDERER) -endif() - if(NO_XWAYLAND) message(STATUS "Using the NO_XWAYLAND flag, disabling XWayland!") add_compile_definitions(NO_XWAYLAND) diff --git a/Makefile b/Makefile index 7405cfad7..01d1d650d 100644 --- a/Makefile +++ b/Makefile @@ -3,14 +3,6 @@ PREFIX = /usr/local stub: @echo "Do not run $(MAKE) directly without any arguments. Please refer to the wiki on how to compile Hyprland." -legacyrenderer: - cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:STRING=${PREFIX} -DLEGACY_RENDERER:BOOL=true -S . -B ./build - cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF` - -legacyrendererdebug: - cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_INSTALL_PREFIX:STRING=${PREFIX} -DLEGACY_RENDERER:BOOL=true -S . -B ./build - cmake --build ./build --config Debug --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF` - release: cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:STRING=${PREFIX} -S . -B ./build cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF` diff --git a/flake.nix b/flake.nix index 801d96ecb..dde2860ca 100644 --- a/flake.nix +++ b/flake.nix @@ -132,7 +132,6 @@ # hyprland-packages hyprland hyprland-debug - hyprland-legacy-renderer hyprland-unwrapped # hyprland-extras xdg-desktop-portal-hyprland diff --git a/meson.build b/meson.build index bf518216b..58ec2475a 100644 --- a/meson.build +++ b/meson.build @@ -77,10 +77,6 @@ if (systemd_option.enabled()) subdir('systemd') endif -if get_option('legacy_renderer').enabled() - add_project_arguments('-DLEGACY_RENDERER', language: 'cpp') -endif - if get_option('buildtype') == 'debug' add_project_arguments('-DHYPRLAND_DEBUG', language: 'cpp') endif diff --git a/meson_options.txt b/meson_options.txt index 3eb01696d..e50b4ccee 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -1,6 +1,5 @@ option('xwayland', type: 'feature', value: 'auto', description: 'Enable support for X11 applications') option('systemd', type: 'feature', value: 'auto', description: 'Enable systemd integration') option('uwsm', type: 'feature', value: 'enabled', description: 'Enable uwsm integration (only if systemd is enabled)') -option('legacy_renderer', type: 'feature', value: 'disabled', description: 'Enable legacy renderer') option('hyprpm', type: 'feature', value: 'enabled', description: 'Enable hyprpm') option('tracy_enable', type: 'boolean', value: false , description: 'Enable profiling') diff --git a/nix/default.nix b/nix/default.nix index f66bac93b..6832006f9 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -41,7 +41,6 @@ xwayland, debug ? false, enableXWayland ? true, - legacyRenderer ? false, withSystemd ? lib.meta.availableOn stdenv.hostPlatform systemd, wrapRuntimeDeps ? true, version ? "git", @@ -52,6 +51,7 @@ enableNvidiaPatches ? false, nvidiaPatches ? false, hidpiXWayland ? false, + legacyRenderer ? false, }: let inherit (builtins) baseNameOf foldl' readFile; inherit (lib.asserts) assertMsg; @@ -70,6 +70,7 @@ in assert assertMsg (!nvidiaPatches) "The option `nvidiaPatches` has been removed."; assert assertMsg (!enableNvidiaPatches) "The option `enableNvidiaPatches` has been removed."; assert assertMsg (!hidpiXWayland) "The option `hidpiXWayland` has been removed. Please refer https://wiki.hyprland.org/Configuring/XWayland"; + assert assertMsg (!legacyRenderer) "The option `legacyRenderer` has been removed. Legacy renderer is no longer supported."; customStdenv.mkDerivation (finalAttrs: { pname = "hyprland${optionalString debug "-debug"}"; inherit version; @@ -142,7 +143,7 @@ in wayland-scanner xorg.libXcursor ] - (optionals customStdenv.hostPlatform.isBSD [ epoll-shim ]) + (optionals customStdenv.hostPlatform.isBSD [epoll-shim]) (optionals customStdenv.hostPlatform.isMusl [libexecinfo]) (optionals enableXWayland [ xorg.libxcb @@ -165,7 +166,6 @@ in mesonFlags = flatten [ (mapAttrsToList mesonEnable { "xwayland" = enableXWayland; - "legacy_renderer" = legacyRenderer; "systemd" = withSystemd; "uwsm" = false; "hyprpm" = false; diff --git a/nix/overlays.nix b/nix/overlays.nix index 1f50e88d9..687a49d46 100644 --- a/nix/overlays.nix +++ b/nix/overlays.nix @@ -50,9 +50,15 @@ in { hyprutils = final.hyprutils.override {debug = true;}; debug = true; }; - hyprland-legacy-renderer = final.hyprland.override {legacyRenderer = true;}; # deprecated packages + hyprland-legacy-renderer = + builtins.trace '' + hyprland-legacy-renderer was removed. Please use the hyprland package. + Legacy renderer is no longer supported. + '' + final.hyprland; + hyprland-nvidia = builtins.trace '' hyprland-nvidia was removed. Please use the hyprland package. diff --git a/src/debug/CrashReporter.cpp b/src/debug/CrashReporter.cpp index e220b0ac9..38552c51f 100644 --- a/src/debug/CrashReporter.cpp +++ b/src/debug/CrashReporter.cpp @@ -109,9 +109,6 @@ void NCrashReporter::createAndSaveCrash(int sig) { finalCrashReport += "\nDate: "; finalCrashReport += GIT_COMMIT_DATE; finalCrashReport += "\nFlags:\n"; -#ifdef LEGACY_RENDERER - finalCrashReport += "legacyrenderer\n"; -#endif #if ISDEBUG finalCrashReport += "debug\n"; #endif diff --git a/src/debug/HyprCtl.cpp b/src/debug/HyprCtl.cpp index d3f9efa1a..adfbab1ee 100644 --- a/src/debug/HyprCtl.cpp +++ b/src/debug/HyprCtl.cpp @@ -931,13 +931,10 @@ std::string versionRequest(eHyprCtlOutputFormat format, std::string request) { HYPRLAND_VERSION, GIT_BRANCH, GIT_COMMIT_HASH, GIT_DIRTY, commitMsg, GIT_COMMIT_DATE, GIT_TAG, GIT_COMMITS, AQUAMARINE_VERSION, HYPRLANG_VERSION, HYPRUTILS_VERSION, HYPRCURSOR_VERSION, HYPRGRAPHICS_VERSION); -#if (!defined(LEGACY_RENDERER) && !ISDEBUG && !defined(NO_XWAYLAND)) +#if (!ISDEBUG && !defined(NO_XWAYLAND)) result += "no flags were set\n"; #else result += "flags set:\n"; -#ifdef LEGACY_RENDERER - result += "legacyrenderer\n"; -#endif #if ISDEBUG result += "debug\n"; #endif @@ -966,9 +963,6 @@ std::string versionRequest(eHyprCtlOutputFormat format, std::string request) { GIT_BRANCH, GIT_COMMIT_HASH, HYPRLAND_VERSION, (strcmp(GIT_DIRTY, "dirty") == 0 ? "true" : "false"), escapeJSONStrings(commitMsg), GIT_COMMIT_DATE, GIT_TAG, GIT_COMMITS, AQUAMARINE_VERSION, HYPRLANG_VERSION, HYPRUTILS_VERSION, HYPRCURSOR_VERSION, HYPRGRAPHICS_VERSION); -#ifdef LEGACY_RENDERER - result += "\"legacyrenderer\","; -#endif #if ISDEBUG result += "\"debug\","; #endif diff --git a/src/debug/HyprDebugOverlay.cpp b/src/debug/HyprDebugOverlay.cpp index 522b3a83e..332800ddd 100644 --- a/src/debug/HyprDebugOverlay.cpp +++ b/src/debug/HyprDebugOverlay.cpp @@ -263,11 +263,8 @@ void CHyprDebugOverlay::draw() { glBindTexture(GL_TEXTURE_2D, m_texture->m_texID); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - -#ifndef GLES2 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_R, GL_BLUE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_B, GL_RED); -#endif glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, PMONITOR->m_pixelSize.x, PMONITOR->m_pixelSize.y, 0, GL_RGBA, GL_UNSIGNED_BYTE, DATA); diff --git a/src/debug/HyprNotificationOverlay.cpp b/src/debug/HyprNotificationOverlay.cpp index f8dd69ab4..4e17e7978 100644 --- a/src/debug/HyprNotificationOverlay.cpp +++ b/src/debug/HyprNotificationOverlay.cpp @@ -238,11 +238,8 @@ void CHyprNotificationOverlay::draw(PHLMONITOR pMonitor) { glBindTexture(GL_TEXTURE_2D, m_texture->m_texID); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - -#ifndef GLES2 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_R, GL_BLUE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_B, GL_RED); -#endif glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, MONSIZE.x, MONSIZE.y, 0, GL_RGBA, GL_UNSIGNED_BYTE, DATA); diff --git a/src/helpers/Format.cpp b/src/helpers/Format.cpp index 6679e869c..c3d721859 100644 --- a/src/helpers/Format.cpp +++ b/src/helpers/Format.cpp @@ -14,26 +14,18 @@ */ inline const std::vector GLES3_FORMATS = { { - .drmFormat = DRM_FORMAT_ARGB8888, - .flipRB = true, -#ifndef GLES2 - .glFormat = GL_RGBA, -#else - .glFormat = GL_BGRA_EXT, -#endif + .drmFormat = DRM_FORMAT_ARGB8888, + .flipRB = true, + .glFormat = GL_RGBA, .glType = GL_UNSIGNED_BYTE, .withAlpha = true, .alphaStripped = DRM_FORMAT_XRGB8888, .bytesPerBlock = 4, }, { - .drmFormat = DRM_FORMAT_XRGB8888, - .flipRB = true, -#ifndef GLES2 - .glFormat = GL_RGBA, -#else - .glFormat = GL_BGRA_EXT, -#endif + .drmFormat = DRM_FORMAT_XRGB8888, + .flipRB = true, + .glFormat = GL_RGBA, .glType = GL_UNSIGNED_BYTE, .withAlpha = false, .alphaStripped = DRM_FORMAT_XRGB8888, @@ -104,96 +96,64 @@ inline const std::vector GLES3_FORMATS = { .bytesPerBlock = 2, }, { - .drmFormat = DRM_FORMAT_XBGR2101010, - .glFormat = GL_RGBA, -#ifndef GLES2 - .glType = GL_UNSIGNED_INT_2_10_10_10_REV, -#else - .glType = GL_UNSIGNED_INT_2_10_10_10_REV_EXT, -#endif + .drmFormat = DRM_FORMAT_XBGR2101010, + .glFormat = GL_RGBA, + .glType = GL_UNSIGNED_INT_2_10_10_10_REV, .withAlpha = false, .alphaStripped = DRM_FORMAT_XBGR2101010, .bytesPerBlock = 4, }, { - .drmFormat = DRM_FORMAT_ABGR2101010, - .glFormat = GL_RGBA, -#ifndef GLES2 - .glType = GL_UNSIGNED_INT_2_10_10_10_REV, -#else - .glType = GL_UNSIGNED_INT_2_10_10_10_REV_EXT, -#endif + .drmFormat = DRM_FORMAT_ABGR2101010, + .glFormat = GL_RGBA, + .glType = GL_UNSIGNED_INT_2_10_10_10_REV, .withAlpha = true, .alphaStripped = DRM_FORMAT_XBGR2101010, .bytesPerBlock = 4, }, { - .drmFormat = DRM_FORMAT_XRGB2101010, - .glFormat = GL_RGBA, -#ifndef GLES2 - .glType = GL_UNSIGNED_INT_2_10_10_10_REV, -#else - .glType = GL_UNSIGNED_INT_2_10_10_10_REV_EXT, -#endif + .drmFormat = DRM_FORMAT_XRGB2101010, + .glFormat = GL_RGBA, + .glType = GL_UNSIGNED_INT_2_10_10_10_REV, .withAlpha = false, .alphaStripped = DRM_FORMAT_XRGB2101010, .bytesPerBlock = 4, }, { - .drmFormat = DRM_FORMAT_ARGB2101010, - .glFormat = GL_RGBA, -#ifndef GLES2 - .glType = GL_UNSIGNED_INT_2_10_10_10_REV, -#else - .glType = GL_UNSIGNED_INT_2_10_10_10_REV_EXT, -#endif + .drmFormat = DRM_FORMAT_ARGB2101010, + .glFormat = GL_RGBA, + .glType = GL_UNSIGNED_INT_2_10_10_10_REV, .withAlpha = true, .alphaStripped = DRM_FORMAT_XRGB2101010, .bytesPerBlock = 4, }, { - .drmFormat = DRM_FORMAT_XBGR16161616F, - .glFormat = GL_RGBA, -#ifndef GLES2 - .glType = GL_HALF_FLOAT, -#else - .glType = GL_HALF_FLOAT_OES, -#endif + .drmFormat = DRM_FORMAT_XBGR16161616F, + .glFormat = GL_RGBA, + .glType = GL_HALF_FLOAT, .withAlpha = false, .alphaStripped = DRM_FORMAT_XBGR16161616F, .bytesPerBlock = 8, }, { - .drmFormat = DRM_FORMAT_ABGR16161616F, - .glFormat = GL_RGBA, -#ifndef GLES2 - .glType = GL_HALF_FLOAT, -#else - .glType = GL_HALF_FLOAT_OES, -#endif + .drmFormat = DRM_FORMAT_ABGR16161616F, + .glFormat = GL_RGBA, + .glType = GL_HALF_FLOAT, .withAlpha = true, .alphaStripped = DRM_FORMAT_XBGR16161616F, .bytesPerBlock = 8, }, { - .drmFormat = DRM_FORMAT_XBGR16161616, -#ifndef GLES2 - .glFormat = GL_RGBA16UI, -#else - .glFormat = GL_RGBA16_EXT, -#endif + .drmFormat = DRM_FORMAT_XBGR16161616, + .glFormat = GL_RGBA16UI, .glType = GL_UNSIGNED_SHORT, .withAlpha = false, .alphaStripped = DRM_FORMAT_XBGR16161616, .bytesPerBlock = 8, }, { - .drmFormat = DRM_FORMAT_ABGR16161616, -#ifndef GLES2 - .glFormat = GL_RGBA16UI, -#else - .glFormat = GL_RGBA16_EXT, -#endif + .drmFormat = DRM_FORMAT_ABGR16161616, + .glFormat = GL_RGBA16UI, .glType = GL_UNSIGNED_SHORT, .withAlpha = true, .alphaStripped = DRM_FORMAT_XBGR16161616, @@ -290,12 +250,7 @@ uint32_t NFormatUtils::drmFormatToGL(DRMFormat drm) { case DRM_FORMAT_XRGB8888: case DRM_FORMAT_XBGR8888: return GL_RGBA; // doesn't matter, opengl is gucci in this case. case DRM_FORMAT_XRGB2101010: - case DRM_FORMAT_XBGR2101010: -#ifdef GLES2 - return GL_RGB10_A2_EXT; -#else - return GL_RGB10_A2; -#endif + case DRM_FORMAT_XBGR2101010: return GL_RGB10_A2; default: return GL_RGBA; } UNREACHABLE(); @@ -303,13 +258,7 @@ uint32_t NFormatUtils::drmFormatToGL(DRMFormat drm) { } uint32_t NFormatUtils::glFormatToType(uint32_t gl) { - return gl != GL_RGBA ? -#ifdef GLES2 - GL_UNSIGNED_INT_2_10_10_10_REV_EXT : -#else - GL_UNSIGNED_INT_2_10_10_10_REV : -#endif - GL_UNSIGNED_BYTE; + return gl != GL_RGBA ? GL_UNSIGNED_INT_2_10_10_10_REV : GL_UNSIGNED_BYTE; } std::string NFormatUtils::drmFormatName(DRMFormat drm) { diff --git a/src/hyprerror/HyprError.cpp b/src/hyprerror/HyprError.cpp index d9f50db39..614fdd2e4 100644 --- a/src/hyprerror/HyprError.cpp +++ b/src/hyprerror/HyprError.cpp @@ -146,11 +146,8 @@ void CHyprError::createQueued() { glBindTexture(GL_TEXTURE_2D, m_texture->m_texID); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - -#ifndef GLES2 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_R, GL_BLUE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_B, GL_RED); -#endif glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, PMONITOR->m_pixelSize.x, PMONITOR->m_pixelSize.y, 0, GL_RGBA, GL_UNSIGNED_BYTE, DATA); diff --git a/src/includes.hpp b/src/includes.hpp index c00fec97d..e33e4e3f7 100644 --- a/src/includes.hpp +++ b/src/includes.hpp @@ -17,15 +17,9 @@ #include #include -#ifdef LEGACY_RENDERER -#include -#include -#define GLES2 -#else #define GLES32 #include #include -#endif #ifdef NO_XWAYLAND #define XWAYLAND false diff --git a/src/protocols/Screencopy.cpp b/src/protocols/Screencopy.cpp index e0ef67835..1afa477fd 100644 --- a/src/protocols/Screencopy.cpp +++ b/src/protocols/Screencopy.cpp @@ -264,11 +264,7 @@ bool CScreencopyFrame::copyShm() { g_pHyprOpenGL->renderTexture(g_pHyprOpenGL->m_screencopyDeniedTexture, texbox, 1); } -#ifndef GLES2 glBindFramebuffer(GL_READ_FRAMEBUFFER, fb.getFBID()); -#else - glBindFramebuffer(GL_FRAMEBUFFER, fb.getFBID()); -#endif const auto PFORMAT = NFormatUtils::getPixelFormatFromDRM(shm.format); if (!PFORMAT) { @@ -304,11 +300,7 @@ bool CScreencopyFrame::copyShm() { g_pHyprOpenGL->m_renderData.pMonitor.reset(); -#ifndef GLES2 glBindFramebuffer(GL_READ_FRAMEBUFFER, 0); -#else - glBindFramebuffer(GL_FRAMEBUFFER, 0); -#endif LOGM(TRACE, "Copied frame via shm"); diff --git a/src/protocols/ToplevelExport.cpp b/src/protocols/ToplevelExport.cpp index 498bcba95..e50f1fcef 100644 --- a/src/protocols/ToplevelExport.cpp +++ b/src/protocols/ToplevelExport.cpp @@ -281,10 +281,7 @@ bool CToplevelExportFrame::copyShm(const Time::steady_tp& now) { g_pHyprOpenGL->m_renderData.pMonitor = PMONITOR; outFB.bind(); -#ifndef GLES2 glBindFramebuffer(GL_READ_FRAMEBUFFER, outFB.getFBID()); -#endif - glPixelStorei(GL_PACK_ALIGNMENT, 1); auto glFormat = PFORMAT->flipRB ? GL_BGRA_EXT : GL_RGBA; @@ -318,10 +315,7 @@ bool CToplevelExportFrame::copyShm(const Time::steady_tp& now) { } outFB.unbind(); - -#ifndef GLES2 glBindFramebuffer(GL_READ_FRAMEBUFFER, 0); -#endif return true; } diff --git a/src/render/Framebuffer.cpp b/src/render/Framebuffer.cpp index ab5a14a3f..b3681c958 100644 --- a/src/render/Framebuffer.cpp +++ b/src/render/Framebuffer.cpp @@ -40,14 +40,11 @@ bool CFramebuffer::alloc(int w, int h, uint32_t drmFormat) { glBindFramebuffer(GL_FRAMEBUFFER, m_fb); glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, m_tex->m_texID, 0); -// TODO: Allow this with gles2 -#ifndef GLES2 if (m_stencilTex) { glBindTexture(GL_TEXTURE_2D, m_stencilTex->m_texID); glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH24_STENCIL8, w, h, 0, GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, nullptr); glFramebufferTexture2D(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_TEXTURE_2D, m_stencilTex->m_texID, 0); } -#endif auto status = glCheckFramebufferStatus(GL_FRAMEBUFFER); RASSERT((status == GL_FRAMEBUFFER_COMPLETE), "Framebuffer incomplete, couldn't create! (FB status: {}, GL Error: 0x{:x})", status, (int)glGetError()); @@ -64,8 +61,6 @@ bool CFramebuffer::alloc(int w, int h, uint32_t drmFormat) { } void CFramebuffer::addStencil(SP tex) { - // TODO: Allow this with gles2 -#ifndef GLES2 m_stencilTex = tex; glBindTexture(GL_TEXTURE_2D, m_stencilTex->m_texID); glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH24_STENCIL8, m_size.x, m_size.y, 0, GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, nullptr); @@ -79,15 +74,10 @@ void CFramebuffer::addStencil(SP tex) { glBindTexture(GL_TEXTURE_2D, 0); glBindFramebuffer(GL_FRAMEBUFFER, 0); -#endif } void CFramebuffer::bind() { -#ifndef GLES2 glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_fb); -#else - glBindFramebuffer(GL_FRAMEBUFFER, m_iFb); -#endif if (g_pHyprOpenGL) glViewport(0, 0, g_pHyprOpenGL->m_renderData.pMonitor->m_pixelSize.x, g_pHyprOpenGL->m_renderData.pMonitor->m_pixelSize.y); @@ -96,11 +86,7 @@ void CFramebuffer::bind() { } void CFramebuffer::unbind() { -#ifndef GLES2 glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0); -#else - glBindFramebuffer(GL_FRAMEBUFFER, 0); -#endif } void CFramebuffer::release() { diff --git a/src/render/OpenGL.cpp b/src/render/OpenGL.cpp index c42230854..20862a7aa 100644 --- a/src/render/OpenGL.cpp +++ b/src/render/OpenGL.cpp @@ -162,24 +162,14 @@ void CHyprOpenGLImpl::initEGL(bool gbm) { auto attrsNoVer = attrs; -#ifndef GLES2 attrs.push_back(EGL_CONTEXT_MAJOR_VERSION); attrs.push_back(3); attrs.push_back(EGL_CONTEXT_MINOR_VERSION); attrs.push_back(2); -#else - attrs.push_back(EGL_CONTEXT_CLIENT_VERSION); - attrs.push_back(2); - m_eglContextVersion = EGL_CONTEXT_GLES_2_0; -#endif - attrs.push_back(EGL_NONE); m_eglContext = eglCreateContext(m_eglDisplay, EGL_NO_CONFIG_KHR, EGL_NO_CONTEXT, attrs.data()); if (m_eglContext == EGL_NO_CONTEXT) { -#ifdef GLES2 - RASSERT(false, "EGL: failed to create a context with GLES2.0"); -#endif Debug::log(WARN, "EGL: Failed to create a context with GLES3.2, retrying 3.0"); attrs = attrsNoVer; @@ -362,10 +352,6 @@ CHyprOpenGLImpl::CHyprOpenGLImpl() : m_drmFD(g_pCompositor->m_drmFD) { TRACY_GPU_CONTEXT; -#ifdef GLES2 - Debug::log(WARN, "!RENDERER: Using the legacy GLES2 renderer!"); -#endif - initDRMFormats(); initAssets(); @@ -669,7 +655,6 @@ GLuint CHyprOpenGLImpl::compileShader(const GLuint& type, std::string src, bool void CHyprOpenGLImpl::beginSimple(PHLMONITOR pMonitor, const CRegion& damage, SP rb, CFramebuffer* fb) { m_renderData.pMonitor = pMonitor; -#ifndef GLES2 const GLenum RESETSTATUS = glGetGraphicsResetStatus(); if (RESETSTATUS != GL_NO_ERROR) { std::string errStr = ""; @@ -682,7 +667,6 @@ void CHyprOpenGLImpl::beginSimple(PHLMONITOR pMonitor, const CRegion& damage, SP RASSERT(false, "Aborting, glGetGraphicsResetStatus returned {}. Cannot continue until proper GPU reset handling is implemented.", errStr); return; } -#endif TRACY_GPU_ZONE("RenderBeginSimple"); @@ -721,7 +705,6 @@ void CHyprOpenGLImpl::beginSimple(PHLMONITOR pMonitor, const CRegion& damage, SP void CHyprOpenGLImpl::begin(PHLMONITOR pMonitor, const CRegion& damage_, CFramebuffer* fb, std::optional finalDamage) { m_renderData.pMonitor = pMonitor; -#ifndef GLES2 const GLenum RESETSTATUS = glGetGraphicsResetStatus(); if (RESETSTATUS != GL_NO_ERROR) { std::string errStr = ""; @@ -734,7 +717,6 @@ void CHyprOpenGLImpl::begin(PHLMONITOR pMonitor, const CRegion& damage_, CFrameb RASSERT(false, "Aborting, glGetGraphicsResetStatus returned {}. Cannot continue until proper GPU reset handling is implemented.", errStr); return; } -#endif TRACY_GPU_ZONE("RenderBegin"); @@ -860,11 +842,7 @@ void CHyprOpenGLImpl::end() { // check for gl errors const GLenum ERR = glGetError(); -#ifdef GLES2 - if (ERR == GL_CONTEXT_LOST_KHR) /* We don't have infra to recover from this */ -#else if (ERR == GL_CONTEXT_LOST) /* We don't have infra to recover from this */ -#endif RASSERT(false, "glGetError at Opengl::end() returned GL_CONTEXT_LOST. Cannot continue until proper GPU reset handling is implemented."); } @@ -946,9 +924,7 @@ bool CHyprOpenGLImpl::initShaders() { shaders->TEXVERTSRC320 = processShader("tex320.vert", includes); GLuint prog; -#ifdef GLES2 - m_cmSupported = false; -#else + if (!*PCM) m_cmSupported = false; else { @@ -983,7 +959,6 @@ bool CHyprOpenGLImpl::initShaders() { "WARNING: CM Shader failed compiling, color management will not work. It's likely because your GPU is an old piece of garbage, don't file bug reports " "about this!"); } -#endif const auto FRAGSHADOW = processShader(m_cmSupported ? "shadow.frag" : "shadow_legacy.frag", includes); const auto FRAGBORDER1 = processShader(m_cmSupported ? "border.frag" : "border_legacy.frag", includes); @@ -1392,13 +1367,7 @@ void CHyprOpenGLImpl::renderRectWithDamage(const CBox& box, const CHyprColor& co Mat3x3 glMatrix = m_renderData.projection.copy().multiply(matrix); useProgram(m_shaders->m_shQUAD.program); - -#ifndef GLES2 glUniformMatrix3fv(m_shaders->m_shQUAD.proj, 1, GL_TRUE, glMatrix.getMatrix().data()); -#else - glMatrix.transpose(); - glUniformMatrix3fv(m_renderData.pCurrentMonData->m_shQUAD.proj, 1, GL_FALSE, glMatrix.getMatrix().data()); -#endif // premultiply the color as well as we don't work with straight alpha glUniform4f(m_shaders->m_shQUAD.color, col.r * col.a, col.g * col.a, col.b * col.a, col.a); @@ -1602,12 +1571,7 @@ void CHyprOpenGLImpl::renderTextureInternalWithDamage(SP tex, const CB passCMUniforms(*shader, imageDescription); } -#ifndef GLES2 glUniformMatrix3fv(shader->proj, 1, GL_TRUE, glMatrix.getMatrix().data()); -#else - glMatrix.transpose(); - glUniformMatrix3fv(shader->proj, 1, GL_FALSE, glMatrix.getMatrix().data()); -#endif glUniform1i(shader->tex, 0); if ((usingFinalShader && *PDT == 0) || CRASHING) { @@ -1735,15 +1699,8 @@ void CHyprOpenGLImpl::renderTexturePrimitive(SP tex, const CBox& box) glBindTexture(tex->m_target, tex->m_texID); useProgram(shader->program); - -#ifndef GLES2 glUniformMatrix3fv(shader->proj, 1, GL_TRUE, glMatrix.getMatrix().data()); -#else - glMatrix.transpose(); - glUniformMatrix3fv(shader->proj, 1, GL_FALSE, glMatrix.getMatrix().data()); -#endif glUniform1i(shader->tex, 0); - glBindVertexArray(shader->shaderVao); for (auto const& RECT : m_renderData.damage.getRects()) { @@ -1777,13 +1734,7 @@ void CHyprOpenGLImpl::renderTextureMatte(SP tex, const CBox& box, CFra SShader* shader = &m_shaders->m_shMATTE; useProgram(shader->program); - -#ifndef GLES2 glUniformMatrix3fv(shader->proj, 1, GL_TRUE, glMatrix.getMatrix().data()); -#else - glMatrix.transpose(); - glUniformMatrix3fv(shader->proj, 1, GL_FALSE, glMatrix.getMatrix().data()); -#endif glUniform1i(shader->tex, 0); glUniform1i(shader->alphaMatte, 1); @@ -1886,12 +1837,7 @@ CFramebuffer* CHyprOpenGLImpl::blurFramebufferWithDamage(float a, CRegion* origi 1.0f); } -#ifndef GLES2 glUniformMatrix3fv(m_shaders->m_shBLURPREPARE.proj, 1, GL_TRUE, glMatrix.getMatrix().data()); -#else - glMatrix.transpose(); - glUniformMatrix3fv(m_shaders->m_shBLURPREPARE.proj, 1, GL_FALSE, glMatrix.getMatrix().data()); -#endif glUniform1f(m_shaders->m_shBLURPREPARE.contrast, *PBLURCONTRAST); glUniform1f(m_shaders->m_shBLURPREPARE.brightness, *PBLURBRIGHTNESS); glUniform1i(m_shaders->m_shBLURPREPARE.tex, 0); @@ -1927,12 +1873,7 @@ CFramebuffer* CHyprOpenGLImpl::blurFramebufferWithDamage(float a, CRegion* origi useProgram(pShader->program); // prep two shaders -#ifndef GLES2 glUniformMatrix3fv(pShader->proj, 1, GL_TRUE, glMatrix.getMatrix().data()); -#else - glMatrix.transpose(); - glUniformMatrix3fv(pShader->proj, 1, GL_FALSE, glMatrix.getMatrix().data()); -#endif glUniform1f(pShader->radius, *PBLURSIZE * a); // this makes the blursize change with a if (pShader == &m_shaders->m_shBLUR1) { glUniform2f(m_shaders->m_shBLUR1.halfpixel, 0.5f / (m_renderData.pMonitor->m_pixelSize.x / 2.f), 0.5f / (m_renderData.pMonitor->m_pixelSize.y / 2.f)); @@ -1997,13 +1938,7 @@ CFramebuffer* CHyprOpenGLImpl::blurFramebufferWithDamage(float a, CRegion* origi glTexParameteri(currentTex->m_target, GL_TEXTURE_MIN_FILTER, GL_LINEAR); useProgram(m_shaders->m_shBLURFINISH.program); - -#ifndef GLES2 glUniformMatrix3fv(m_shaders->m_shBLURFINISH.proj, 1, GL_TRUE, glMatrix.getMatrix().data()); -#else - glMatrix.transpose(); - glUniformMatrix3fv(m_shaders->m_shBLURFINISH.proj, 1, GL_FALSE, glMatrix.getMatrix().data()); -#endif glUniform1f(m_shaders->m_shBLURFINISH.noise, *PBLURNOISE); glUniform1f(m_shaders->m_shBLURFINISH.brightness, *PBLURBRIGHTNESS); @@ -2341,13 +2276,7 @@ void CHyprOpenGLImpl::renderBorder(const CBox& box, const CGradientValueData& gr if (!skipCM) passCMUniforms(m_shaders->m_shBORDER1, SImageDescription{}); -#ifndef GLES2 glUniformMatrix3fv(m_shaders->m_shBORDER1.proj, 1, GL_TRUE, glMatrix.getMatrix().data()); -#else - glMatrix.transpose(); - glUniformMatrix3fv(m_shaders->m_shBORDER1.proj, 1, GL_FALSE, glMatrix.getMatrix().data()); -#endif - glUniform4fv(m_shaders->m_shBORDER1.gradient, grad.m_colorsOkLabA.size() / 4, (float*)grad.m_colorsOkLabA.data()); glUniform1i(m_shaders->m_shBORDER1.gradientLength, grad.m_colorsOkLabA.size() / 4); glUniform1f(m_shaders->m_shBORDER1.angle, (int)(grad.m_angle / (PI / 180.0)) % 360 * (PI / 180.0)); @@ -2428,14 +2357,7 @@ void CHyprOpenGLImpl::renderBorder(const CBox& box, const CGradientValueData& gr blend(true); useProgram(m_shaders->m_shBORDER1.program); - -#ifndef GLES2 glUniformMatrix3fv(m_shaders->m_shBORDER1.proj, 1, GL_TRUE, glMatrix.getMatrix().data()); -#else - glMatrix.transpose(); - glUniformMatrix3fv(m_shaders->m_shBORDER1.proj, 1, GL_FALSE, glMatrix.getMatrix().data()); -#endif - glUniform4fv(m_shaders->m_shBORDER1.gradient, grad1.m_colorsOkLabA.size() / 4, (float*)grad1.m_colorsOkLabA.data()); glUniform1i(m_shaders->m_shBORDER1.gradientLength, grad1.m_colorsOkLabA.size() / 4); glUniform1f(m_shaders->m_shBORDER1.angle, (int)(grad1.m_angle / (PI / 180.0)) % 360 * (PI / 180.0)); @@ -2515,12 +2437,7 @@ void CHyprOpenGLImpl::renderRoundedShadow(const CBox& box, int round, float roun if (!skipCM) passCMUniforms(m_shaders->m_shSHADOW, SImageDescription{}); -#ifndef GLES2 glUniformMatrix3fv(m_shaders->m_shSHADOW.proj, 1, GL_TRUE, glMatrix.getMatrix().data()); -#else - glMatrix.transpose(); - glUniformMatrix3fv(m_shaders->m_shSHADOW.proj, 1, GL_FALSE, glMatrix.getMatrix().data()); -#endif glUniform4f(m_shaders->m_shSHADOW.color, col.r, col.g, col.b, col.a * a); const auto TOPLEFT = Vector2D(range + round, range + round); @@ -2675,26 +2592,20 @@ SP CHyprOpenGLImpl::loadAsset(const std::string& filename) { tex->allocate(); tex->m_size = {cairo_image_surface_get_width(CAIROSURFACE), cairo_image_surface_get_height(CAIROSURFACE)}; - const GLint glIFormat = CAIROFORMAT == CAIRO_FORMAT_RGB96F ? -#ifdef GLES2 - GL_RGB32F_EXT : -#else - GL_RGB32F : -#endif - GL_RGBA; - const GLint glFormat = CAIROFORMAT == CAIRO_FORMAT_RGB96F ? GL_RGB : GL_RGBA; - const GLint glType = CAIROFORMAT == CAIRO_FORMAT_RGB96F ? GL_FLOAT : GL_UNSIGNED_BYTE; + const GLint glIFormat = CAIROFORMAT == CAIRO_FORMAT_RGB96F ? GL_RGB32F : GL_RGBA; + const GLint glFormat = CAIROFORMAT == CAIRO_FORMAT_RGB96F ? GL_RGB : GL_RGBA; + const GLint glType = CAIROFORMAT == CAIRO_FORMAT_RGB96F ? GL_FLOAT : GL_UNSIGNED_BYTE; const auto DATA = cairo_image_surface_get_data(CAIROSURFACE); glBindTexture(GL_TEXTURE_2D, tex->m_texID); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); -#ifndef GLES2 + if (CAIROFORMAT != CAIRO_FORMAT_RGB96F) { glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_R, GL_BLUE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_B, GL_RED); } -#endif + glTexImage2D(GL_TEXTURE_2D, 0, glIFormat, tex->m_size.x, tex->m_size.y, 0, glFormat, glType, DATA); cairo_surface_destroy(CAIROSURFACE); @@ -2772,10 +2683,8 @@ SP CHyprOpenGLImpl::renderText(const std::string& text, CHyprColor col glBindTexture(GL_TEXTURE_2D, tex->m_texID); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); -#ifndef GLES2 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_R, GL_BLUE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_B, GL_RED); -#endif glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, tex->m_size.x, tex->m_size.y, 0, GL_RGBA, GL_UNSIGNED_BYTE, DATA); cairo_destroy(CAIRO); @@ -2815,10 +2724,8 @@ void CHyprOpenGLImpl::initMissingAssetTexture() { glBindTexture(GL_TEXTURE_2D, tex->m_texID); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); -#ifndef GLES2 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_R, GL_BLUE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_B, GL_RED); -#endif glTexImage2D(GL_TEXTURE_2D, 0, glFormat, tex->m_size.x, tex->m_size.y, 0, glFormat, glType, DATA); cairo_surface_destroy(CAIROSURFACE); @@ -2928,10 +2835,8 @@ void CHyprOpenGLImpl::createBGTextureForMonitor(PHLMONITOR pMonitor) { glBindTexture(GL_TEXTURE_2D, tex->m_texID); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); -#ifndef GLES2 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_R, GL_BLUE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_B, GL_RED); -#endif glTexImage2D(GL_TEXTURE_2D, 0, glFormat, tex->m_size.x, tex->m_size.y, 0, glFormat, glType, DATA); cairo_surface_destroy(CAIROSURFACE); diff --git a/src/render/Texture.cpp b/src/render/Texture.cpp index 74770cb94..52b79e8d3 100644 --- a/src/render/Texture.cpp +++ b/src/render/Texture.cpp @@ -72,12 +72,12 @@ void CTexture::createFromShm(uint32_t drmFormat, uint8_t* pixels, uint32_t strid GLCALL(glBindTexture(GL_TEXTURE_2D, m_texID)); GLCALL(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE)); GLCALL(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE)); -#ifndef GLES2 + if (format->flipRB) { GLCALL(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_R, GL_BLUE)); GLCALL(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_B, GL_RED)); } -#endif + GLCALL(glPixelStorei(GL_UNPACK_ROW_LENGTH_EXT, stride / format->bytesPerBlock)); GLCALL(glTexImage2D(GL_TEXTURE_2D, 0, format->glInternalFormat ? format->glInternalFormat : format->glFormat, size_.x, size_.y, 0, format->glFormat, format->glType, pixels)); GLCALL(glPixelStorei(GL_UNPACK_ROW_LENGTH_EXT, 0)); @@ -120,12 +120,10 @@ void CTexture::update(uint32_t drmFormat, uint8_t* pixels, uint32_t stride, cons auto rects = damage.copy().intersect(CBox{{}, m_size}).getRects(); -#ifndef GLES2 if (format->flipRB) { GLCALL(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_R, GL_BLUE)); GLCALL(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_B, GL_RED)); } -#endif for (auto const& rect : rects) { GLCALL(glPixelStorei(GL_UNPACK_ROW_LENGTH_EXT, stride / format->bytesPerBlock)); diff --git a/src/render/decorations/CHyprGroupBarDecoration.cpp b/src/render/decorations/CHyprGroupBarDecoration.cpp index ade4d372a..84060e0dc 100644 --- a/src/render/decorations/CHyprGroupBarDecoration.cpp +++ b/src/render/decorations/CHyprGroupBarDecoration.cpp @@ -332,11 +332,8 @@ static void renderGradientTo(SP tex, CGradientValueData* grad) { glBindTexture(GL_TEXTURE_2D, tex->m_texID); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - -#ifndef GLES2 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_R, GL_BLUE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_B, GL_RED); -#endif glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, bufferSize.x, bufferSize.y, 0, GL_RGBA, GL_UNSIGNED_BYTE, DATA);