summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlinpeter <linpeter@google.com>2021-11-18 20:23:08 +0800
committerlinpeter <linpeter@google.com>2021-12-02 17:01:36 +0800
commiteeedc139da32923d4f19a28a827ef4b6da3fb80c (patch)
treebc9d14f055351eaa3e7c36ac53d307d56fbaf226
parent1affb13728781d6cb71046ce84a4584e3ad9fd9e (diff)
libhwc2.1: add calibrated display check
Return ALS shadow compensation images if calibrated display. Bug: 186057327 test: check ALS shadow compensation images return Change-Id: I6c29ac46cb862db095bc9e9ad3ea173cab6c6a19
-rw-r--r--libhwc2.1/libdevice/ExynosDevice.cpp5
-rw-r--r--libhwc2.1/libdevice/ExynosDevice.h2
-rw-r--r--libhwc2.1/libdevice/ExynosDisplay.h1
-rw-r--r--libhwc2.1/pixel-display.cpp6
4 files changed, 13 insertions, 1 deletions
diff --git a/libhwc2.1/libdevice/ExynosDevice.cpp b/libhwc2.1/libdevice/ExynosDevice.cpp
index b20f090..2056ff0 100644
--- a/libhwc2.1/libdevice/ExynosDevice.cpp
+++ b/libhwc2.1/libdevice/ExynosDevice.cpp
@@ -1015,6 +1015,11 @@ bool ExynosDevice::isLbeSupported() {
return mLbeSupported;
}
+bool ExynosDevice::isColorCalibratedByDevice() {
+ ExynosDisplay *display = getDisplay(getDisplayId(HWC_DISPLAY_PRIMARY, 0));
+ return display->isColorCalibratedByDevice();
+}
+
template <class Operator>
void ExynosDevice::findActiveDisplay(Operator optor) {
for (uint32_t i = 0; i < mDisplays.size(); i++) {
diff --git a/libhwc2.1/libdevice/ExynosDevice.h b/libhwc2.1/libdevice/ExynosDevice.h
index 0532938..12c82c5 100644
--- a/libhwc2.1/libdevice/ExynosDevice.h
+++ b/libhwc2.1/libdevice/ExynosDevice.h
@@ -333,6 +333,8 @@ class ExynosDevice {
int32_t setLhbmState(bool enabled);
bool getLhbmState();
+ bool isColorCalibratedByDevice();
+
template <class Operator>
void findActiveDisplay(Operator optor);
diff --git a/libhwc2.1/libdevice/ExynosDisplay.h b/libhwc2.1/libdevice/ExynosDisplay.h
index 296f543..67d3ede 100644
--- a/libhwc2.1/libdevice/ExynosDisplay.h
+++ b/libhwc2.1/libdevice/ExynosDisplay.h
@@ -1113,6 +1113,7 @@ class ExynosDisplay {
virtual int32_t updateColorConversionInfo() { return NO_ERROR; };
virtual int32_t updatePresentColorConversionInfo() { return NO_ERROR; };
virtual bool checkRrCompensationEnabled() { return false; };
+ virtual bool isColorCalibratedByDevice() { return false; };
virtual int32_t getColorAdjustedDbv(uint32_t &) { return NO_ERROR; }
virtual int32_t SetCurrentPanelGammaSource(const displaycolor::DisplayType /* type */,
const PanelGammaSource& /* source */) {
diff --git a/libhwc2.1/pixel-display.cpp b/libhwc2.1/pixel-display.cpp
index b6d0eb3..4f5f07d 100644
--- a/libhwc2.1/pixel-display.cpp
+++ b/libhwc2.1/pixel-display.cpp
@@ -137,7 +137,11 @@ ndk::ScopedAStatus Display::getLhbmState(bool *_aidl_return) {
ndk::ScopedAStatus Display::setCompensationImageHandle(const NativeHandle &native_handle,
const std::string &imageName,
int *_aidl_return) {
- *_aidl_return = readCompensationImage(native_handle, imageName);
+ if (mDevice && mDevice->isColorCalibratedByDevice()) {
+ *_aidl_return = readCompensationImage(native_handle, imageName);
+ } else {
+ *_aidl_return = -1;
+ }
return ndk::ScopedAStatus::ok();
}
} // namespace display