diff options
author | Long Ling <longling@google.com> | 2021-11-23 19:50:02 -0800 |
---|---|---|
committer | Long Ling <longling@google.com> | 2022-01-11 12:15:34 -0800 |
commit | e738bcf694db42aaee4fc9e8f416b4c1cf0cdb5b (patch) | |
tree | c61637ea063ec251d50d87ee87aebafe4dda2eeb /hwc3/impl/HalImpl.cpp | |
parent | b1d95bc1041c4fabd9e8ba11a46590b174ba002d (diff) |
hwc3: support SDR and HDR blending
Add support for setLayerWhitePointNits, setClientTargetWhitePointNits
and setDisplayBrightness commands.
Bug: 196171661
Change-Id: I5b2c5510ae758805396e678f1e2d5c4ea1e716b5
Diffstat (limited to 'hwc3/impl/HalImpl.cpp')
-rw-r--r-- | hwc3/impl/HalImpl.cpp | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/hwc3/impl/HalImpl.cpp b/hwc3/impl/HalImpl.cpp index 74f850d..31c50bf 100644 --- a/hwc3/impl/HalImpl.cpp +++ b/hwc3/impl/HalImpl.cpp @@ -510,6 +510,13 @@ int32_t HalImpl::getSupportedContentTypes(int64_t display, std::vector<ContentTy return HWC2_ERROR_NONE; } +int32_t HalImpl::flushDisplayBrightnessChange(int64_t display) { + ExynosDisplay* halDisplay; + RET_IF_ERR(getHalDisplay(display, halDisplay)); + + return halDisplay->flushDisplayBrightnessChange(); +} + int32_t HalImpl::presentDisplay(int64_t display, ndk::ScopedFileDescriptor& fence, std::vector<int64_t>* outLayers, std::vector<ndk::ScopedFileDescriptor>* outReleaseFences) { @@ -644,7 +651,7 @@ int32_t HalImpl::setDisplayBrightness(int64_t display, float brightness) { ExynosDisplay* halDisplay; RET_IF_ERR(getHalDisplay(display, halDisplay)); - return halDisplay->setDisplayBrightness(brightness); + return halDisplay->setDisplayBrightness(brightness, true /* wait present */); } int32_t HalImpl::setDisplayedContentSamplingEnabled( @@ -833,6 +840,13 @@ int32_t HalImpl::setLayerVisibleRegion(int64_t display, int64_t layer, return halLayer->setLayerVisibleRegion(region); } +int32_t HalImpl::setLayerWhitePointNits(int64_t display, int64_t layer, float nits) { + ExynosLayer *halLayer; + RET_IF_ERR(getHalLayer(display, layer, halLayer)); + + return halLayer->setLayerWhitePointNits(nits); +} + int32_t HalImpl::setLayerZOrder(int64_t display, int64_t layer, uint32_t z) { ExynosLayer *halLayer; RET_IF_ERR(getHalLayer(display, layer, halLayer)); @@ -895,7 +909,8 @@ int32_t HalImpl::validateDisplay(int64_t display, std::vector<int64_t>* outChang uint32_t* outDisplayRequestMask, std::vector<int64_t>* outRequestedLayers, std::vector<int32_t>* outRequestMasks, - ClientTargetProperty* outClientTargetProperty) { + ClientTargetProperty* outClientTargetProperty, + float* outClientTargetWhitePointNits) { ExynosDisplay* halDisplay; RET_IF_ERR(getHalDisplay(display, halDisplay)); @@ -918,6 +933,8 @@ int32_t HalImpl::validateDisplay(int64_t display, std::vector<int64_t>* outChang RET_IF_ERR(halDisplay->getDisplayRequests(&displayReqs, &reqsCount, hwcRequestedLayers.data(), outRequestMasks->data())); + RET_IF_ERR(halDisplay->getClientTargetWhitePointNits(outClientTargetWhitePointNits)); + h2a::translate(hwcChangedLayers, *outChangedLayers); h2a::translate(hwcCompositionTypes, *outCompositionTypes); *outDisplayRequestMask = displayReqs; |