diff options
author | Long Ling <longling@google.com> | 2021-07-27 14:02:59 -0700 |
---|---|---|
committer | Long Ling <longling@google.com> | 2021-08-27 12:58:24 -0700 |
commit | f7f7c02da3b5bd1918c0f418f8e4680e171731ec (patch) | |
tree | 3342ae84794bb146e0f9fcb43cc7281863fa08b8 | |
parent | ec7abf09b08f2623db043e957177adbbb32700df (diff) | |
download | gs101-f7f7c02da3b5bd1918c0f418f8e4680e171731ec.tar.gz |
libhwc2.1: pass display info to displaycolor
Bug: 194444865
Change-Id: I3b316982a10b6f4c202896a0da392bb6ff25c371
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 */ |