summaryrefslogtreecommitdiff
path: root/libhwc2.1/libdisplayinterface
diff options
context:
space:
mode:
authorHyunKyung Kim <hk310.kim@samsung.com>2020-05-21 19:41:28 +0900
committerHyunKyung Kim <hk310.kim@samsung.com>2020-05-21 20:34:37 +0900
commite27d80b102def98f9909aed8bb8c252b6694acdb (patch)
tree9e9cd63a20f889d146c88ceeb4bc61c7bcd97e6c /libhwc2.1/libdisplayinterface
parent7fa165353b4ec4e62fd770a085e8b1f10eebe44e (diff)
downloadgs101-e27d80b102def98f9909aed8bb8c252b6694acdb.tar.gz
libhwc2.1: Fix bug destroying blob before commit
Bolbs for plane color setting were destroyed before atomic commit. setPlaneColorSetting() is called for each plane. setPlaneColorSetting() destroyed blobs of other plane even though atomic commit is not done yet. Dtm property setting was failed because of this bug. This patch fixed this bug. Bug: 143335640 Signed-off-by: HyunKyung Kim <hk310.kim@samsung.com> Change-Id: I89073fbf7a51a4c9857ff081e910813ae20fcc74
Diffstat (limited to 'libhwc2.1/libdisplayinterface')
-rw-r--r--libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp16
-rw-r--r--libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.h1
2 files changed, 10 insertions, 7 deletions
diff --git a/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp b/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp
index c9b2b98..995edca 100644
--- a/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp
+++ b/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp
@@ -259,11 +259,18 @@ int32_t ExynosDisplayDrmInterfaceModule::createOetfBlobFromIDpp(
return NO_ERROR;
}
-int32_t ExynosDisplayDrmInterfaceModule::setDisplayColorSetting(
- ExynosDisplayDrmInterface::DrmModeAtomicReq &drmReq)
+int32_t ExynosDisplayDrmInterfaceModule::deliverWinConfigData()
{
+ /* Destroy old blobs for color management */
destroyOldBlobs(mOldBlobsForDisplayColor);
+ destroyOldBlobs(mOldBlobsForPlaneColor);
+
+ return ExynosDisplayDrmInterface::deliverWinConfigData();
+}
+int32_t ExynosDisplayDrmInterfaceModule::setDisplayColorSetting(
+ ExynosDisplayDrmInterface::DrmModeAtomicReq &drmReq)
+{
if ((mColorSettingChanged == false) ||
(isPrimary() == false))
return NO_ERROR;
@@ -356,8 +363,6 @@ int32_t ExynosDisplayDrmInterfaceModule::setPlaneColorSetting(
const std::unique_ptr<DrmPlane> &plane,
const exynos_win_config_data &config)
{
- destroyOldBlobs(mOldBlobsForPlaneColor);
-
if ((mColorSettingChanged == false) ||
(isPrimary() == false))
return NO_ERROR;
@@ -437,8 +442,6 @@ int32_t ExynosDisplayDrmInterfaceModule::setPlaneColorSetting(
}
}
- /* TODO: For now, Dtm setting is not verified. This should be set */
-#if 0
if (dpp.Dtm().enable && plane->tone_mapping_property().id())
{
if ((ret = createDtmBlobFromIDpp(dpp, blobId)) != NO_ERROR) {
@@ -454,7 +457,6 @@ int32_t ExynosDisplayDrmInterfaceModule::setPlaneColorSetting(
return ret;
}
}
-#endif
if (dpp.OetfLut().enable && plane->oetf_lut_property().id())
{
diff --git a/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.h b/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.h
index 4739e53..b6d4082 100644
--- a/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.h
+++ b/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.h
@@ -28,6 +28,7 @@ class ExynosDisplayDrmInterfaceModule : public ExynosDisplayDrmInterface {
ExynosDisplayDrmInterfaceModule(ExynosDisplay *exynosDisplay);
virtual ~ExynosDisplayDrmInterfaceModule();
+ virtual int32_t deliverWinConfigData();
virtual int32_t setDisplayColorSetting(
ExynosDisplayDrmInterface::DrmModeAtomicReq &drmReq);
virtual int32_t setPlaneColorSetting(