From a3a74993173662c06025ca633faa68b5590e2c5b Mon Sep 17 00:00:00 2001 From: UjinT34 <41110182+UjinT34@users.noreply.github.com> Date: Sun, 12 Jan 2025 20:02:41 +0300 Subject: renderer: Do not set hdr metadata unless needed (#9014) --- src/protocols/ColorManagement.cpp | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) (limited to 'src/protocols/ColorManagement.cpp') diff --git a/src/protocols/ColorManagement.cpp b/src/protocols/ColorManagement.cpp index 7ff4db4f..a76e13c0 100644 --- a/src/protocols/ColorManagement.cpp +++ b/src/protocols/ColorManagement.cpp @@ -194,13 +194,13 @@ CColorManagementSurface::CColorManagementSurface(SP return; } - m_hasImageDescription = true; - m_imageDescription = imageDescription->get()->settings; + setHasImageDescription(true); + m_imageDescription = imageDescription->get()->settings; }); resource->setUnsetImageDescription([this](CXxColorManagementSurfaceV4* r) { LOGM(TRACE, "Unset image description for surface={}", (uintptr_t)r); - m_imageDescription = SImageDescription{}; - m_hasImageDescription = false; + m_imageDescription = SImageDescription{}; + setHasImageDescription(false); }); } @@ -222,6 +222,24 @@ bool CColorManagementSurface::hasImageDescription() { return m_hasImageDescription; } +void CColorManagementSurface::setHasImageDescription(bool has) { + m_hasImageDescription = has; + m_needsNewMetadata = true; +} + +const hdr_output_metadata& CColorManagementSurface::hdrMetadata() { + return m_hdrMetadata; +} + +void CColorManagementSurface::setHDRMetadata(const hdr_output_metadata& metadata) { + m_hdrMetadata = metadata; + m_needsNewMetadata = false; +} + +bool CColorManagementSurface::needsHdrMetadataUpdate() { + return m_needsNewMetadata; +} + CColorManagementFeedbackSurface::CColorManagementFeedbackSurface(SP resource_, SP surface_) : surface(surface_), resource(resource_) { if (!good()) -- cgit v1.2.3