diff options
author | Long Ling <longling@google.com> | 2022-03-01 04:46:25 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2022-03-01 04:46:25 +0000 |
commit | 0f7f59df363e5fedfcb7e8f96914da10a3f4e85f (patch) | |
tree | 3bfea3d2b97e6c9881d69f0c63b67725fec201e2 /hwc3 | |
parent | 35f4247980a160118b1ae849fa5ac65f55393088 (diff) | |
parent | dd102650f92ee345c48cf104551dcdcf2998dd73 (diff) |
Merge "hwc3: support SDR dimming in linear or gamma space" into tm-dev
Diffstat (limited to 'hwc3')
-rw-r--r-- | hwc3/ComposerClient.cpp | 3 | ||||
-rw-r--r-- | hwc3/ComposerCommandEngine.cpp | 6 | ||||
-rw-r--r-- | hwc3/ComposerServiceWriter.h | 3 | ||||
-rw-r--r-- | hwc3/impl/HalImpl.cpp | 7 | ||||
-rw-r--r-- | hwc3/impl/HalImpl.h | 3 | ||||
-rw-r--r-- | hwc3/include/IComposerHal.h | 4 |
6 files changed, 18 insertions, 8 deletions
diff --git a/hwc3/ComposerClient.cpp b/hwc3/ComposerClient.cpp index 8638d08..6997087 100644 --- a/hwc3/ComposerClient.cpp +++ b/hwc3/ComposerClient.cpp @@ -554,7 +554,8 @@ void ComposerClient::destroyResources() { std::vector<int32_t> requestMasks; ClientTargetProperty clientTargetProperty; mHal->validateDisplay(display, &changedLayers, &compositionTypes, &displayRequestMask, - &requestedLayers, &requestMasks, &clientTargetProperty); + &requestedLayers, &requestMasks, &clientTargetProperty, + nullptr /* outDimmingStage */); mHal->acceptDisplayChanges(display); ndk::ScopedFileDescriptor presentFence; diff --git a/hwc3/ComposerCommandEngine.cpp b/hwc3/ComposerCommandEngine.cpp index 6daf215..ff66f9d 100644 --- a/hwc3/ComposerCommandEngine.cpp +++ b/hwc3/ComposerCommandEngine.cpp @@ -139,15 +139,17 @@ int32_t ComposerCommandEngine::executeValidateDisplayInternal(int64_t display) { std::vector<int32_t> requestMasks; ClientTargetProperty clientTargetProperty{common::PixelFormat::RGBA_8888, common::Dataspace::UNKNOWN}; + DimmingStage dimmingStage; auto err = mHal->validateDisplay(display, &changedLayers, &compositionTypes, &displayRequestMask, - &requestedLayers, &requestMasks, &clientTargetProperty); + &requestedLayers, &requestMasks, &clientTargetProperty, + &dimmingStage); mResources->setDisplayMustValidateState(display, false); if (!err) { mWriter->setChangedCompositionTypes(display, changedLayers, compositionTypes); mWriter->setDisplayRequests(display, displayRequestMask, requestedLayers, requestMasks); static constexpr float kBrightness = 1.f; - mWriter->setClientTargetProperty(display, clientTargetProperty, kBrightness); + mWriter->setClientTargetProperty(display, clientTargetProperty, kBrightness, dimmingStage); } else { LOG(ERROR) << __func__ << ": err " << err; mWriter->setError(mCommandIndex, err); diff --git a/hwc3/ComposerServiceWriter.h b/hwc3/ComposerServiceWriter.h index ee1607b..6c3970f 100644 --- a/hwc3/ComposerServiceWriter.h +++ b/hwc3/ComposerServiceWriter.h @@ -108,11 +108,12 @@ public: } void setClientTargetProperty(int64_t display, const ClientTargetProperty& clientTargetProperty, - float brightness) { + float brightness, const DimmingStage& dimmingStage) { ClientTargetPropertyWithBrightness clientTargetPropertyWithBrightness; clientTargetPropertyWithBrightness.display = display; clientTargetPropertyWithBrightness.clientTargetProperty = clientTargetProperty; clientTargetPropertyWithBrightness.brightness = brightness; + clientTargetPropertyWithBrightness.dimmingStage = dimmingStage; mCommandsResults.emplace_back(std::move(clientTargetPropertyWithBrightness)); } diff --git a/hwc3/impl/HalImpl.cpp b/hwc3/impl/HalImpl.cpp index 8da3c0e..e2be900 100644 --- a/hwc3/impl/HalImpl.cpp +++ b/hwc3/impl/HalImpl.cpp @@ -953,7 +953,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, + DimmingStage* outDimmingStage) { ExynosDisplay* halDisplay; RET_IF_ERR(getHalDisplay(display, halDisplay)); @@ -982,7 +983,9 @@ int32_t HalImpl::validateDisplay(int64_t display, std::vector<int64_t>* outChang h2a::translate(hwcRequestedLayers, *outRequestedLayers); hwc_client_target_property hwcProperty; - if (!halDisplay->getClientTargetProperty(&hwcProperty)) { + HwcDimmingStage hwcDimmingStage; + if (!halDisplay->getClientTargetProperty(&hwcProperty, &hwcDimmingStage)) { + h2a::translate(hwcDimmingStage, *outDimmingStage); h2a::translate(hwcProperty, *outClientTargetProperty); } // else ignore this error diff --git a/hwc3/impl/HalImpl.h b/hwc3/impl/HalImpl.h index f48b930..f772ca4 100644 --- a/hwc3/impl/HalImpl.h +++ b/hwc3/impl/HalImpl.h @@ -146,7 +146,8 @@ class HalImpl : public IComposerHal { uint32_t* outDisplayRequestMask, std::vector<int64_t>* outRequestedLayers, std::vector<int32_t>* outRequestMasks, - ClientTargetProperty* outClientTargetProperty) override; + ClientTargetProperty* outClientTargetProperty, + DimmingStage* outDimmingStage) override; int32_t setExpectedPresentTime( int64_t display, const std::optional<ClockMonotonicTimestamp> expectedPresentTime) override; diff --git a/hwc3/include/IComposerHal.h b/hwc3/include/IComposerHal.h index ac5866b..6fe25c5 100644 --- a/hwc3/include/IComposerHal.h +++ b/hwc3/include/IComposerHal.h @@ -41,6 +41,7 @@ #include <aidl/android/hardware/graphics/composer3/CommandResultPayload.h> #include <aidl/android/hardware/graphics/composer3/Composition.h> #include <aidl/android/hardware/graphics/composer3/ContentType.h> +#include <aidl/android/hardware/graphics/composer3/DimmingStage.h> #include <aidl/android/hardware/graphics/composer3/DisplayAttribute.h> #include <aidl/android/hardware/graphics/composer3/DisplayBrightness.h> #include <aidl/android/hardware/graphics/composer3/DisplayCapability.h> @@ -210,7 +211,8 @@ class IComposerHal { uint32_t* outDisplayRequestMask, std::vector<int64_t>* outRequestedLayers, std::vector<int32_t>* outRequestMasks, - ClientTargetProperty* outClientTargetProperty) = 0; + ClientTargetProperty* outClientTargetProperty, + DimmingStage* outDimmingStage) = 0; virtual int32_t setExpectedPresentTime( int64_t display, const std::optional<ClockMonotonicTimestamp> expectedPresentTime) = 0; virtual int32_t setIdleTimerEnabled(int64_t display, int32_t timeout) = 0; |