diff options
author | 2022-04-11 20:02:17 +0000 | |
---|---|---|
committer | 2022-04-14 22:59:27 +0000 | |
commit | fcedb9ca3fa14607451ca24f32539a36f2261912 (patch) | |
tree | 8b09a3c0a491b2f53d8826a9380ef3383cd2a6c2 /services/surfaceflinger/SurfaceFlinger.cpp | |
parent | 168f6ccfce328a1224297ba5b7af2779fcee0d9a (diff) |
Support RenderIntents in libtonemap.
Add RenderIntent as a supported uniform which is needed as some devices
may perform contrast enhancements intended for SDR content which must be
compensated for pre-blend for HDR content.
Bug: 227779465
Test: builds
Change-Id: Id74277e727d73cb9e371c37a83bef805e66271f4
Diffstat (limited to 'services/surfaceflinger/SurfaceFlinger.cpp')
-rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index 115dc6435b..498f37ce4c 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -146,6 +146,7 @@ #include <aidl/android/hardware/graphics/common/DisplayDecorationSupport.h> #include <aidl/android/hardware/graphics/composer3/DisplayCapability.h> +#include <aidl/android/hardware/graphics/composer3/RenderIntent.h> #undef NO_THREAD_SAFETY_ANALYSIS #define NO_THREAD_SAFETY_ANALYSIS \ @@ -6668,6 +6669,7 @@ std::shared_future<renderengine::RenderEngineResult> SurfaceFlinger::renderScree captureResults.buffer = buffer->getBuffer(); auto dataspace = renderArea.getReqDataSpace(); auto parent = renderArea.getParentLayer(); + auto renderIntent = RenderIntent::TONE_MAP_COLORIMETRIC; if ((dataspace == ui::Dataspace::UNKNOWN) && (parent != nullptr)) { Mutex::Autolock lock(mStateLock); auto display = findDisplay([layerStack = parent->getLayerStack()](const auto& display) { @@ -6680,6 +6682,7 @@ std::shared_future<renderengine::RenderEngineResult> SurfaceFlinger::renderScree const ui::ColorMode colorMode = display->getCompositionDisplay()->getState().colorMode; dataspace = pickDataspaceFromColorMode(colorMode); + renderIntent = display->getCompositionDisplay()->getState().renderIntent; } captureResults.capturedDataspace = dataspace; @@ -6701,6 +6704,8 @@ std::shared_future<renderengine::RenderEngineResult> SurfaceFlinger::renderScree clientCompositionDisplay.outputDataspace = dataspace; clientCompositionDisplay.maxLuminance = DisplayDevice::sDefaultMaxLumiance; + clientCompositionDisplay.renderIntent = + static_cast<aidl::android::hardware::graphics::composer3::RenderIntent>(renderIntent); const float colorSaturation = grayscale ? 0 : 1; clientCompositionDisplay.colorTransform = calculateColorMatrix(colorSaturation); |