diff options
| author | UjinT34 <41110182+UjinT34@users.noreply.github.com> | 2026-05-08 00:28:34 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-05-07 22:28:34 +0100 |
| commit | 39af3901b389f792a55176041dec9211c82ed1c9 (patch) | |
| tree | cfe9a9b84e56d2553934aa1600ffe5789aaa667b /src/helpers/MonitorResources.cpp | |
| parent | c18186a519d188a3ae8caf9947a5420a25590b82 (diff) | |
renderer: more FP16 fixes (#14070)
* fix fp16 blur with invalidation
* restore tonemap code
* fix fade outs
* add sdr compat for unaware surfaces
* use a better work space, not linear, only for sdr
* fix hl tf -> wp tf
* cache workbuffer descriptions
* linear not normalised WIP
* clear offload fb
* CM math
* fix includes
* use precalculated cm for shadows
* inner glow cm
* quad cm
* fix unmodified copy
* codegen
* cache color CM
* mark blur dirty when CM/DS changes
* avoid icc workbuffer
* fp16 blur finish hack
* fix output hdr luminances
* use srgb for mirroring/sharing with fp16
* defaults people
---------
Co-authored-by: Vaxry <vaxry@vaxry.net>
Diffstat (limited to 'src/helpers/MonitorResources.cpp')
| -rw-r--r-- | src/helpers/MonitorResources.cpp | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/src/helpers/MonitorResources.cpp b/src/helpers/MonitorResources.cpp index 8e7723c2..ef08fc37 100644 --- a/src/helpers/MonitorResources.cpp +++ b/src/helpers/MonitorResources.cpp @@ -32,7 +32,7 @@ void CMonitorResources::setImageDescription(NColorManagement::PImageDescription for (const auto& res : m_workBuffers) res.buffer->setImageDescription(imageDescription); if (m_monitorMirrorFB) - m_monitorMirrorFB->setImageDescription(NColorManagement::getDefaultImageDescription()); + m_monitorMirrorFB->setImageDescription(getMirrorTexImageDescription()); if (m_mirrorTex) m_mirrorTex->m_imageDescription = getMirrorTexImageDescription(); } @@ -78,8 +78,8 @@ SP<Render::IFramebuffer> CMonitorResources::mirrorFB() { m_monitorMirrorFB = g_pHyprRenderer->createFB(std::format("Monitor {} mirror FB", m_monitor->m_name)); if (!m_monitorMirrorFB->isAllocated()) { - m_monitorMirrorFB->alloc(m_size.x, m_size.y, DRM_FORMAT_XRGB8888); - m_monitorMirrorFB->setImageDescription(NColorManagement::getDefaultImageDescription()); + m_monitorMirrorFB->alloc(m_size.x, m_size.y, m_monitor->m_activeMonitorRule.m_enable10bit ? DRM_FORMAT_XRGB2101010 : DRM_FORMAT_XRGB8888); + m_monitorMirrorFB->setImageDescription(getMirrorTexImageDescription()); } return m_monitorMirrorFB; @@ -90,20 +90,18 @@ SP<Render::ITexture> CMonitorResources::getMirrorTexture() { } NColorManagement::PImageDescription CMonitorResources::getMirrorTexImageDescription() { - return CImageDescription::from(SImageDescription{ - .transferFunction = NColorManagement::CM_TRANSFER_FUNCTION_SRGB, - .primariesNameSet = m_imageDescription->value().primariesNameSet, - .primariesNamed = m_imageDescription->value().primariesNamed, - .primaries = m_imageDescription->value().primaries, - .luminances = {.min = SDR_MIN_LUMINANCE, .max = 80, .reference = 80}, - }); + const auto TF = m_imageDescription->value().transferFunction; + if (TF == CM_TRANSFER_FUNCTION_GAMMA22 || TF == CM_TRANSFER_FUNCTION_SRGB) + return m_imageDescription; + + return DEFAULT_SRGB_IMAGE_DESCRIPTION; } void CMonitorResources::enableMirror() { if (m_mirrorTex) return; m_mirrorTex = g_pHyprRenderer->createTexture(); - m_mirrorTex->allocate({m_size.x, m_size.y}, DRM_FORMAT_XRGB8888); + m_mirrorTex->allocate({m_size.x, m_size.y}, m_monitor->m_activeMonitorRule.m_enable10bit ? DRM_FORMAT_XRGB2101010 : DRM_FORMAT_XRGB8888); m_mirrorTex->m_imageDescription = getMirrorTexImageDescription(); m_monitor->m_blurFBDirty = true; } |
