summaryrefslogtreecommitdiff
path: root/hwc3
diff options
context:
space:
mode:
authorLong Ling <longling@google.com>2022-03-01 04:46:25 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2022-03-01 04:46:25 +0000
commit0f7f59df363e5fedfcb7e8f96914da10a3f4e85f (patch)
tree3bfea3d2b97e6c9881d69f0c63b67725fec201e2 /hwc3
parent35f4247980a160118b1ae849fa5ac65f55393088 (diff)
parentdd102650f92ee345c48cf104551dcdcf2998dd73 (diff)
Merge "hwc3: support SDR dimming in linear or gamma space" into tm-dev
Diffstat (limited to 'hwc3')
-rw-r--r--hwc3/ComposerClient.cpp3
-rw-r--r--hwc3/ComposerCommandEngine.cpp6
-rw-r--r--hwc3/ComposerServiceWriter.h3
-rw-r--r--hwc3/impl/HalImpl.cpp7
-rw-r--r--hwc3/impl/HalImpl.h3
-rw-r--r--hwc3/include/IComposerHal.h4
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;