summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLong Ling <longling@google.com>2021-04-27 09:38:00 -0700
committerLong Ling <longling@google.com>2021-04-28 11:22:51 -0700
commit6f90021df4da518917308d13375d4e320a1d6498 (patch)
tree97455a318ad8f104a05c0be8c2e1e30ca277c8f7
parentc695433f3964b9bf9092645c02fb7bdfaca27f86 (diff)
downloadgs101-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
-rw-r--r--libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp7
-rw-r--r--libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp6
-rw-r--r--libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.h1
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);