diff --git a/src/debug/HyprCtl.cpp b/src/debug/HyprCtl.cpp index cbc8c641c..15847d18e 100644 --- a/src/debug/HyprCtl.cpp +++ b/src/debug/HyprCtl.cpp @@ -993,6 +993,17 @@ std::string versionRequest(eHyprCtlOutputFormat format, std::string request) { std::string systemInfoRequest(eHyprCtlOutputFormat format, std::string request) { std::string result = versionRequest(eHyprCtlOutputFormat::FORMAT_NORMAL, ""); + static auto check = [](bool y) -> std::string { return y ? "✔️" : "❌"; }; + static auto backend = [](Aquamarine::eBackendType t) -> std::string { + switch (t) { + case Aquamarine::AQ_BACKEND_DRM: return "drm"; + case Aquamarine::AQ_BACKEND_HEADLESS: return "headless"; + case Aquamarine::AQ_BACKEND_WAYLAND: return "wayland"; + default: break; + } + return "?"; + }; + result += "\n\nSystem Information:\n"; struct utsname unameInfo; @@ -1061,6 +1072,21 @@ std::string systemInfoRequest(eHyprCtlOutputFormat format, std::string request) } else result += "\tunknown: not runtime\n"; + result += std::format("\nExplicit sync: {}", g_pHyprOpenGL->m_exts.EGL_ANDROID_native_fence_sync_ext ? "supported" : "missing"); + result += std::format("\nGL ver: {}", g_pHyprOpenGL->m_eglContextVersion == CHyprOpenGLImpl::EGL_CONTEXT_GLES_3_2 ? "3.2" : "3.0"); + result += std::format("\nBackend: {}", g_pCompositor->m_aqBackend->hasSession() ? "drm" : "sessionless"); + + result += "\n\nMonitor info:"; + + for (const auto& m : g_pCompositor->m_monitors) { + result += std::format("\n\tPanel {}: {}x{}, {} {} {} {} -> backend {}\n\t\texplicit {}\n\t\tedid:\n\t\t\thdr {}\n\t\t\tchroma {}\n\t\t\tbt2020 {}\n\t\tvrr capable " + "{}\n\t\tnon-desktop {}\n\t\t", + m->m_name, (int)m->m_pixelSize.x, (int)m->m_pixelSize.y, m->m_output->name, m->m_output->make, m->m_output->model, m->m_output->serial, + backend(m->m_output->getBackend()->type()), check(m->m_output->supportsExplicit), check(m->m_output->parsedEDID.hdrMetadata.has_value()), + check(m->m_output->parsedEDID.chromaticityCoords.has_value()), check(m->m_output->parsedEDID.supportsBT2020), check(m->m_output->vrrCapable), + check(m->m_output->nonDesktop)); + } + if (g_pHyprCtl && g_pHyprCtl->m_currentRequestParams.sysInfoConfig) { result += "\n======Config-Start======\n"; result += g_pConfigManager->getConfigString(); diff --git a/src/render/OpenGL.hpp b/src/render/OpenGL.hpp index c5040e0ea..bd57e079c 100644 --- a/src/render/OpenGL.hpp +++ b/src/render/OpenGL.hpp @@ -304,13 +304,15 @@ class CHyprOpenGLImpl { SP m_screencopyDeniedTexture; - private: enum eEGLContextVersion : uint8_t { EGL_CONTEXT_GLES_2_0 = 0, EGL_CONTEXT_GLES_3_0, EGL_CONTEXT_GLES_3_2, }; + eEGLContextVersion m_eglContextVersion = EGL_CONTEXT_GLES_3_2; + + private: struct { GLint x = 0; GLint y = 0; @@ -320,8 +322,6 @@ class CHyprOpenGLImpl { std::unordered_map m_capStatus; - eEGLContextVersion m_eglContextVersion = EGL_CONTEXT_GLES_3_2; - std::vector m_drmFormats; bool m_hasModifiers = false;