diff options
author | HyunKyung Kim <hk310.kim@samsung.com> | 2020-05-21 19:41:28 +0900 |
---|---|---|
committer | HyunKyung Kim <hk310.kim@samsung.com> | 2020-05-21 20:34:37 +0900 |
commit | e27d80b102def98f9909aed8bb8c252b6694acdb (patch) | |
tree | 9e9cd63a20f889d146c88ceeb4bc61c7bcd97e6c /libhwc2.1/libdisplayinterface | |
parent | 7fa165353b4ec4e62fd770a085e8b1f10eebe44e (diff) | |
download | gs101-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.cpp | 16 | ||||
-rw-r--r-- | libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.h | 1 |
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( |