summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLong Ling <longling@google.com>2021-07-27 14:02:59 -0700
committerLong Ling <longling@google.com>2021-08-27 12:58:24 -0700
commitf7f7c02da3b5bd1918c0f418f8e4680e171731ec (patch)
tree3342ae84794bb146e0f9fcb43cc7281863fa08b8
parentec7abf09b08f2623db043e957177adbbb32700df (diff)
downloadgs101-f7f7c02da3b5bd1918c0f418f8e4680e171731ec.tar.gz
libhwc2.1: pass display info to displaycolor
Bug: 194444865 Change-Id: I3b316982a10b6f4c202896a0da392bb6ff25c371
-rw-r--r--include/gs101/displaycolor/displaycolor_gs101.h3
-rw-r--r--libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp17
-rw-r--r--libhwc2.1/libmaindisplay/DisplayColorLoader.h9
-rw-r--r--libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp5
-rw-r--r--libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h2
5 files changed, 27 insertions, 9 deletions
diff --git a/include/gs101/displaycolor/displaycolor_gs101.h b/include/gs101/displaycolor/displaycolor_gs101.h
index b2ef7f9..5c89d76 100644
--- a/include/gs101/displaycolor/displaycolor_gs101.h
+++ b/include/gs101/displaycolor/displaycolor_gs101.h
@@ -293,8 +293,7 @@ class IDisplayColorGS101 : public IDisplayColorGeneric {
extern "C" {
/// Get the GS101 instance.
-IDisplayColorGS101* GetDisplayColorGS101(size_t display_num);
-
+IDisplayColorGS101* GetDisplayColorGS101(const std::vector<DisplayInfo> &display_info);
}
} // namespace displaycolor
diff --git a/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp b/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp
index b68f448..7f31674 100644
--- a/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp
+++ b/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp
@@ -80,7 +80,22 @@ int32_t ExynosDisplayDrmInterfaceModule::initDrmDevice(DrmDevice *drmDevice)
ExynosPrimaryDisplayModule* display =
(ExynosPrimaryDisplayModule*)mExynosDisplay;
- ret = display->initDisplayColor();
+ std::vector<displaycolor::DisplayInfo> display_info;
+ displaycolor::DisplayInfo primary_display;
+ auto &tb = primary_display.brightness_table;
+
+ tb.nbm_nits_min = mBrightnessTable[BrightnessRange::NORMAL].mNitsStart;
+ tb.nbm_nits_max = mBrightnessTable[BrightnessRange::NORMAL].mNitsEnd;
+ tb.nbm_dbv_min = mBrightnessTable[BrightnessRange::NORMAL].mBklStart;
+ tb.nbm_dbv_max = mBrightnessTable[BrightnessRange::NORMAL].mBklEnd;
+
+ tb.hbm_nits_min = mBrightnessTable[BrightnessRange::HBM].mNitsStart;
+ tb.hbm_nits_max = mBrightnessTable[BrightnessRange::HBM].mNitsEnd;
+ tb.hbm_dbv_min = mBrightnessTable[BrightnessRange::HBM].mBklStart;
+ tb.hbm_dbv_max = mBrightnessTable[BrightnessRange::HBM].mBklEnd;
+
+ display_info.push_back(primary_display);
+ ret = display->initDisplayColor(display_info);
if (ret != NO_ERROR) {
HWC_LOGE(mExynosDisplay, "Failed to load displaycolor %d", ret);
return ret;
diff --git a/libhwc2.1/libmaindisplay/DisplayColorLoader.h b/libhwc2.1/libmaindisplay/DisplayColorLoader.h
index 9b50a00..f18a7cc 100644
--- a/libhwc2.1/libmaindisplay/DisplayColorLoader.h
+++ b/libhwc2.1/libmaindisplay/DisplayColorLoader.h
@@ -21,6 +21,7 @@
#include <gs101/displaycolor/displaycolor_gs101.h>
#include <log/log.h>
#include <string>
+#include <vector>
class DisplayColorLoader {
public:
@@ -73,9 +74,10 @@ class DisplayColorLoader {
}
}
- displaycolor::IDisplayColorGS101* GetDisplayColorGS101(size_t display_num) {
+ displaycolor::IDisplayColorGS101 *GetDisplayColorGS101(
+ const std::vector<displaycolor::DisplayInfo> &display_info) {
if (get_display_color_gs101 != nullptr) {
- return get_display_color_gs101(display_num);
+ return get_display_color_gs101(display_info);
}
return nullptr;
@@ -89,7 +91,8 @@ class DisplayColorLoader {
private:
void *lib_handle;
- displaycolor::IDisplayColorGS101* (*get_display_color_gs101)(size_t);
+ displaycolor::IDisplayColorGS101 *(*get_display_color_gs101)(
+ const std::vector<displaycolor::DisplayInfo> &);
};
#endif //DISPLAY_COLOR_LOADER_H
diff --git a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp
index 2467818..9842d70 100644
--- a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp
+++ b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp
@@ -55,8 +55,9 @@ ExynosPrimaryDisplayModule::ExynosPrimaryDisplayModule(uint32_t index, ExynosDev
mDisplaySceneInfo.displayScene.dpu_bit_depth = BitDepth::kTen;
}
-int ExynosPrimaryDisplayModule::initDisplayColor() {
- mDisplayColorInterface = mDisplayColorLoader.GetDisplayColorGS101(1);
+int ExynosPrimaryDisplayModule::initDisplayColor(
+ const std::vector<displaycolor::DisplayInfo>& display_info) {
+ mDisplayColorInterface = mDisplayColorLoader.GetDisplayColorGS101(display_info);
if (mDisplayColorInterface == nullptr) {
ALOGW("%s failed to load displaycolor", __func__);
}
diff --git a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h
index d948ca1..8111d91 100644
--- a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h
+++ b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h
@@ -209,7 +209,7 @@ class ExynosPrimaryDisplayModule : public ExynosPrimaryDisplay {
void printLayerColorData(const LayerColorData& layerData);
};
- int initDisplayColor();
+ int initDisplayColor(const std::vector<displaycolor::DisplayInfo>& display_info);
bool hasDisplayColor() { return mDisplayColorInterface != nullptr; }
/* Call getDppForLayer() only if hasDppForLayer() is true */