summaryrefslogtreecommitdiff
path: root/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp')
-rw-r--r--libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp45
1 files changed, 42 insertions, 3 deletions
diff --git a/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp b/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp
index 1bfccc2..6d941cd 100644
--- a/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp
+++ b/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp
@@ -78,7 +78,7 @@ int32_t ExynosDisplayDrmInterfaceModule::initDrmDevice(DrmDevice *drmDevice)
}
int32_t ExynosDisplayDrmInterfaceModule::createCgcDMAFromIDqe(
- const IDisplayColorGS101::IDqe::CgcData &cgcData)
+ const GsInterfaceType::IDqe::CgcData &cgcData)
{
if ((cgcData.config->r_values.size() != DRM_SAMSUNG_CGC_LUT_REG_CNT) ||
(cgcData.config->g_values.size() != DRM_SAMSUNG_CGC_LUT_REG_CNT) ||
@@ -120,8 +120,8 @@ int32_t ExynosDisplayDrmInterfaceModule::setCgcLutDmaProperty(
return NO_ERROR;
ExynosPrimaryDisplayModule* display = (ExynosPrimaryDisplayModule*)mExynosDisplay;
- const IDisplayColorGS101::IDqe &dqe = display->getDqe();
- const IDisplayColorGS101::IDqe::CgcData &cgcData = dqe.Cgc();
+ const GsInterfaceType::IDqe &dqe = display->getDqe();
+ const GsInterfaceType::IDqe::CgcData &cgcData = dqe.Cgc();
/* dirty bit is valid only if enable is true */
if (!mForceDisplayColorSetting && cgcData.enable && !cgcData.dirty)
@@ -175,6 +175,45 @@ int32_t ExynosDisplayDrmInterfaceModule::setDisplayColorSetting(
return setCgcLutDmaProperty(mDrmCrtc->cgc_lut_fd_property(), drmReq);
}
+
+int32_t ExynosDisplayDrmInterfaceModule::setHistoPosProperty(
+ const DrmProperty &prop,
+ ExynosDisplayDrmInterface::DrmModeAtomicReq &drmReq) {
+ if (!prop.id()) return NO_ERROR;
+
+ int32_t ret = 0;
+
+ if ((ret = drmReq.atomicAddProperty(
+ mDrmCrtc->id(), prop, (uint64_t)mHistogramInfo->getHistogramPos(),
+ true)) < 0) {
+ HWC_LOGE(mExynosDisplay, "%s: Fail to set histogram position property",
+ __func__);
+ return ret;
+ }
+
+ return NO_ERROR;
+}
+
+int32_t ExynosDisplayDrmInterfaceModule::setDisplayHistogramSetting(
+ ExynosDisplayDrmInterface::DrmModeAtomicReq &drmReq) {
+ if ((isHistogramInfoRegistered() == false) || (isPrimary() == false)) return NO_ERROR;
+
+ int32_t ret =
+ gs101::ExynosDisplayDrmInterfaceModule::setDisplayHistogramSetting(
+ drmReq);
+ if (ret != NO_ERROR) return ret;
+
+ ret = setHistoPosProperty(mDrmCrtc->histogram_position_property(), drmReq);
+
+ return ret;
+}
+
+void ExynosDisplayDrmInterfaceModule::registerHistogramInfo(
+ const std::shared_ptr<IDLHistogram> &info) {
+ gs101::ExynosDisplayDrmInterfaceModule::registerHistogramInfo(info);
+ mHistogramInfo = info;
+}
+
//////////////////////////////////////////////////// ExynosPrimaryDisplayDrmInterfaceModule //////////////////////////////////////////////////////////////////
ExynosPrimaryDisplayDrmInterfaceModule::ExynosPrimaryDisplayDrmInterfaceModule(ExynosDisplay *exynosDisplay)
: ExynosDisplayDrmInterfaceModule(exynosDisplay)