diff options
author | Long Ling <longling@google.com> | 2021-04-27 09:38:00 -0700 |
---|---|---|
committer | Long Ling <longling@google.com> | 2021-04-28 11:22:51 -0700 |
commit | 6f90021df4da518917308d13375d4e320a1d6498 (patch) | |
tree | 97455a318ad8f104a05c0be8c2e1e30ca277c8f7 | |
parent | c695433f3964b9bf9092645c02fb7bdfaca27f86 (diff) | |
download | gs101-6f90021df4da518917308d13375d4e320a1d6498.tar.gz |
libhwc2.1: load displaycolor after init drm device
Display driver is in fully ready status after setActiveConfig which has
been called during drm device initialization.
Bug: 186446401
Test: reboot and no failed reading panel serial in displaycolor log
Change-Id: Ic0420446a1769dacb9fc7fcd847faa9bcfbc081f
3 files changed, 13 insertions, 1 deletions
diff --git a/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp b/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp index 27503da..e90eaa5 100644 --- a/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp +++ b/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp @@ -79,6 +79,13 @@ int32_t ExynosDisplayDrmInterfaceModule::initDrmDevice(DrmDevice *drmDevice) ExynosPrimaryDisplayModule* display = (ExynosPrimaryDisplayModule*)mExynosDisplay; + + ret = display->initDisplayColor(); + if (ret != NO_ERROR) { + HWC_LOGE(mExynosDisplay, "Failed to load displaycolor %d", ret); + return ret; + } + size_t dppSize = display->getNumOfDpp(); resizeOldDppBlobs(dppSize); if (mDrmCrtc->force_bpc_property().id()) diff --git a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp index 1e7fb56..3a95617 100644 --- a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp +++ b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp @@ -50,10 +50,14 @@ ExynosPrimaryDisplayModule::ExynosPrimaryDisplayModule(uint32_t index, ExynosDev exynosHWCControl.forceGpu = true; #endif - mDisplayColorInterface = mDisplayColorLoader.GetDisplayColorGS101(1); mDisplaySceneInfo.displayScene.dpu_bit_depth = BitDepth::kTen; } +int ExynosPrimaryDisplayModule::initDisplayColor() { + mDisplayColorInterface = mDisplayColorLoader.GetDisplayColorGS101(1); + return mDisplayColorInterface == nullptr ? -EINVAL : NO_ERROR; +} + ExynosPrimaryDisplayModule::~ExynosPrimaryDisplayModule () { } diff --git a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h index 34ffc95..de63f03 100644 --- a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h +++ b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h @@ -199,6 +199,7 @@ class ExynosPrimaryDisplayModule : public ExynosPrimaryDisplay { void printLayerColorData(const LayerColorData& layerData); }; + int initDisplayColor(); /* Call getDppForLayer() only if hasDppForLayer() is true */ bool hasDppForLayer(ExynosMPPSource* layer); const IDisplayColorGS101::IDpp& getDppForLayer(ExynosMPPSource* layer); |