From a6c4f7a0959cca6921b3a96935cd42641a794caa Mon Sep 17 00:00:00 2001 From: UjinT34 Date: Thu, 4 Dec 2025 15:59:25 +0300 Subject: [PATCH] default to gamma22 --- src/config/ConfigDescriptions.hpp | 6 +++--- src/helpers/Monitor.cpp | 2 +- src/protocols/types/ColorManagement.hpp | 2 +- src/render/OpenGL.cpp | 2 +- src/render/Renderer.cpp | 1 + src/render/shaders/glsl/border.frag | 2 +- 6 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/config/ConfigDescriptions.hpp b/src/config/ConfigDescriptions.hpp index 187d0d055..1474a1f9c 100644 --- a/src/config/ConfigDescriptions.hpp +++ b/src/config/ConfigDescriptions.hpp @@ -1562,10 +1562,10 @@ inline static const std::vector CONFIG_OPTIONS = { }, SConfigOptionDescription{ .value = "render:cm_sdr_eotf", - .description = "Default transfer function for displaying SDR apps. 0 - Treat unspecified as sRGB, 1 - Treat unspecified as Gamma 2.2, 2 - Treat " - "unspecified and sRGB as Gamma 2.2", + .description = "Default transfer function for displaying SDR apps. 0 - Use default value (Gamma 2.2), 1 - Treat unspecified as Gamma 2.2, 2 - Treat " + "unspecified and sRGB as Gamma 2.2, 3 - Treat unspecified as sRGB", .type = CONFIG_OPTION_CHOICE, - .data = SConfigOptionDescription::SChoiceData{0, "srgb,gamma22,gamma22force"}, + .data = SConfigOptionDescription::SChoiceData{0, "default,gamma22,gamma22force,srgb"}, }, /* diff --git a/src/helpers/Monitor.cpp b/src/helpers/Monitor.cpp index 78387443d..28e12e627 100644 --- a/src/helpers/Monitor.cpp +++ b/src/helpers/Monitor.cpp @@ -476,7 +476,7 @@ void CMonitor::onDisconnect(bool destroy) { void CMonitor::applyCMType(NCMType::eCMType cmType, int cmSdrEotf) { auto oldImageDescription = m_imageDescription; static auto PSDREOTF = CConfigValue("render:cm_sdr_eotf"); - auto chosenSdrEotf = cmSdrEotf == 0 ? (*PSDREOTF > 0 ? NColorManagement::CM_TRANSFER_FUNCTION_GAMMA22 : NColorManagement::CM_TRANSFER_FUNCTION_SRGB) : + auto chosenSdrEotf = cmSdrEotf == 0 ? (*PSDREOTF != 3 ? NColorManagement::CM_TRANSFER_FUNCTION_GAMMA22 : NColorManagement::CM_TRANSFER_FUNCTION_SRGB) : (cmSdrEotf == 1 ? NColorManagement::CM_TRANSFER_FUNCTION_SRGB : NColorManagement::CM_TRANSFER_FUNCTION_GAMMA22); switch (cmType) { diff --git a/src/protocols/types/ColorManagement.hpp b/src/protocols/types/ColorManagement.hpp index 8bb30e8e0..6997ec88e 100644 --- a/src/protocols/types/ColorManagement.hpp +++ b/src/protocols/types/ColorManagement.hpp @@ -145,7 +145,7 @@ namespace NColorManagement { bool windowsScRGB = false; - eTransferFunction transferFunction = CM_TRANSFER_FUNCTION_SRGB; + eTransferFunction transferFunction = CM_TRANSFER_FUNCTION_GAMMA22; float transferFunctionPower = 1.0f; bool primariesNameSet = false; diff --git a/src/render/OpenGL.cpp b/src/render/OpenGL.cpp index edd376f8d..9b59e65c2 100644 --- a/src/render/OpenGL.cpp +++ b/src/render/OpenGL.cpp @@ -1717,7 +1717,7 @@ void CHyprOpenGLImpl::renderTextureInternal(SP tex, const CBox& box, c shader->setUniformInt(SHADER_TEX_TYPE, texType); if (data.cmBackToSRGB) { static auto PSDREOTF = CConfigValue("render:cm_sdr_eotf"); - auto chosenSdrEotf = *PSDREOTF > 0 ? NColorManagement::CM_TRANSFER_FUNCTION_GAMMA22 : NColorManagement::CM_TRANSFER_FUNCTION_SRGB; + auto chosenSdrEotf = *PSDREOTF != 3 ? NColorManagement::CM_TRANSFER_FUNCTION_GAMMA22 : NColorManagement::CM_TRANSFER_FUNCTION_SRGB; passCMUniforms(*shader, imageDescription, NColorManagement::SImageDescription{.transferFunction = chosenSdrEotf}, true, -1, -1); } else passCMUniforms(*shader, imageDescription); diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp index 693829c70..29612587c 100644 --- a/src/render/Renderer.cpp +++ b/src/render/Renderer.cpp @@ -1515,6 +1515,7 @@ static const hdr_output_metadata NO_HDR_METADATA = {.hdmi_metadata_type1 = hdr_m static hdr_output_metadata createHDRMetadata(SImageDescription settings, SP monitor) { uint8_t eotf = 0; switch (settings.transferFunction) { + case CM_TRANSFER_FUNCTION_GAMMA22: case CM_TRANSFER_FUNCTION_SRGB: eotf = 0; break; // used to send primaries and luminances to AQ. ignored for now case CM_TRANSFER_FUNCTION_ST2084_PQ: eotf = 2; break; case CM_TRANSFER_FUNCTION_EXT_LINEAR: diff --git a/src/render/shaders/glsl/border.frag b/src/render/shaders/glsl/border.frag index d93773fd8..223b4b290 100644 --- a/src/render/shaders/glsl/border.frag +++ b/src/render/shaders/glsl/border.frag @@ -36,7 +36,7 @@ vec4 okLabAToSrgb(vec4 lab) { l * 4.0767416621 + m * -3.3077115913 + s * 0.2309699292, l * (-1.2684380046) + m * 2.6097574011 + s * (-0.3413193965), l * (-0.0041960863) + m * (-0.7034186147) + s * 1.7076147010 - ), CM_TRANSFER_FUNCTION_SRGB + ), CM_TRANSFER_FUNCTION_GAMMA22 ), lab[3]); }