diff options
| author | 2018-05-08 07:21:36 +0000 | |
|---|---|---|
| committer | 2018-05-08 07:21:36 +0000 | |
| commit | 73070601d89651a5308b5da232742867a2a5dbfc (patch) | |
| tree | 6f8bea90aa5866777e8c4db0e9f1146f3ae42ec5 /services/surfaceflinger/DisplayDevice.cpp | |
| parent | 70f32415e2085aa958285ce902ab10f9ccefcd42 (diff) | |
| parent | 6efccd8f5569e8b64f8f4e7c52a27de44915a02b (diff) | |
Snap for 4767765 from 6efccd8f5569e8b64f8f4e7c52a27de44915a02b to pi-release
Change-Id: Ie525ff62b769c11c6839b49d64e06c6c784977bb
Diffstat (limited to 'services/surfaceflinger/DisplayDevice.cpp')
| -rw-r--r-- | services/surfaceflinger/DisplayDevice.cpp | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/services/surfaceflinger/DisplayDevice.cpp b/services/surfaceflinger/DisplayDevice.cpp index 00f8cc9c5c..2b1e5775ba 100644 --- a/services/surfaceflinger/DisplayDevice.cpp +++ b/services/surfaceflinger/DisplayDevice.cpp @@ -80,6 +80,7 @@ DisplayDevice::DisplayDevice( bool hasWideColorGamut, const HdrCapabilities& hdrCapabilities, const int32_t supportedPerFrameMetadata, + const std::unordered_map<ui::ColorMode, std::vector<ui::RenderIntent>>& hdrAndRenderIntents, int initialPowerMode) : lastCompositionHadVisibleLayers(false), mFlinger(flinger), @@ -105,7 +106,11 @@ DisplayDevice::DisplayDevice( mHasHdr10(false), mHasHLG(false), mHasDolbyVision(false), - mSupportedPerFrameMetadata(supportedPerFrameMetadata) + mSupportedPerFrameMetadata(supportedPerFrameMetadata), + mHasBT2100PQColorimetric(false), + mHasBT2100PQEnhance(false), + mHasBT2100HLGColorimetric(false), + mHasBT2100HLGEnhance(false) { // clang-format on std::vector<Hdr> types = hdrCapabilities.getSupportedHdrTypes(); @@ -145,6 +150,18 @@ DisplayDevice::DisplayDevice( } mHdrCapabilities = HdrCapabilities(types, maxLuminance, maxAverageLuminance, minLuminance); + auto iter = hdrAndRenderIntents.find(ColorMode::BT2100_PQ); + if (iter != hdrAndRenderIntents.end()) { + hasToneMapping(iter->second, + &mHasBT2100PQColorimetric, &mHasBT2100PQEnhance); + } + + iter = hdrAndRenderIntents.find(ColorMode::BT2100_HLG); + if (iter != hdrAndRenderIntents.end()) { + hasToneMapping(iter->second, + &mHasBT2100HLGColorimetric, &mHasBT2100HLGEnhance); + } + // initialize the display orientation transform. setProjection(DisplayState::eOrientationDefault, mViewport, mFrame); } @@ -529,6 +546,22 @@ void DisplayDevice::dump(String8& result) const { result.append(surfaceDump); } +void DisplayDevice::hasToneMapping(const std::vector<RenderIntent>& renderIntents, + bool* outColorimetric, bool *outEnhance) { + for (auto intent : renderIntents) { + switch (intent) { + case RenderIntent::TONE_MAP_COLORIMETRIC: + *outColorimetric = true; + break; + case RenderIntent::TONE_MAP_ENHANCE: + *outEnhance = true; + break; + default: + break; + } + } +} + std::atomic<int32_t> DisplayDeviceState::nextDisplayId(1); DisplayDeviceState::DisplayDeviceState(DisplayDevice::DisplayType type, bool isSecure) |