summaryrefslogtreecommitdiff
path: root/libhwc2.1/libdisplayinterface
diff options
context:
space:
mode:
authorLong Ling <longling@google.com>2022-04-29 17:58:57 -0700
committerLong Ling <longling@google.com>2022-05-02 12:56:47 -0700
commit34b535a29513a95726dfd3991649eab5ba3846e4 (patch)
tree042a1fdd0a27a298ac6dc41a4d0453177d95587a /libhwc2.1/libdisplayinterface
parentdce496ae458a90a0e89b962910925319df7891d3 (diff)
downloadgs101-34b535a29513a95726dfd3991649eab5ba3846e4.tar.gz
libhwc2.1: support solid color layer dimming in HWC
Bug: 230570414 Change-Id: Id55b717750d6dcae51a9228d76e883ae7805346d
Diffstat (limited to 'libhwc2.1/libdisplayinterface')
-rw-r--r--libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp6
-rw-r--r--libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.h3
2 files changed, 7 insertions, 2 deletions
diff --git a/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp b/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp
index bfe8eaa..b42edaa 100644
--- a/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp
+++ b/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp
@@ -629,7 +629,7 @@ int32_t ExynosDisplayDrmInterfaceModule::setPlaneColorBlob(
int32_t ExynosDisplayDrmInterfaceModule::setPlaneColorSetting(
ExynosDisplayDrmInterface::DrmModeAtomicReq &drmReq,
const std::unique_ptr<DrmPlane> &plane,
- const exynos_win_config_data &config)
+ const exynos_win_config_data &config, uint32_t &solidColor)
{
if ((mColorSettingChanged == false) ||
(isPrimary() == false))
@@ -685,6 +685,10 @@ int32_t ExynosDisplayDrmInterfaceModule::setPlaneColorSetting(
const uint32_t dppIndex = static_cast<uint32_t>(display->getDppIndexForLayer(mppSource));
bool planeChanged = display->checkAndSaveLayerPlaneId(mppSource, plane->id());
+ auto &color = dpp.SolidColor();
+ // exynos_win_config_data.color ARGB
+ solidColor = (color.a << 24) | (color.r << 16) | (color.g << 8) | color.b;
+
int ret = 0;
if ((ret = setPlaneColorBlob(plane, plane->eotf_lut_property(),
static_cast<uint32_t>(DppBlobs::EOTF),
diff --git a/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.h b/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.h
index b72f2a7..f2e826b 100644
--- a/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.h
+++ b/libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.h
@@ -37,7 +37,8 @@ class ExynosDisplayDrmInterfaceModule : public ExynosDisplayDrmInterface {
virtual int32_t setPlaneColorSetting(
ExynosDisplayDrmInterface::DrmModeAtomicReq &drmReq,
const std::unique_ptr<DrmPlane> &plane,
- const exynos_win_config_data &config);
+ const exynos_win_config_data &config,
+ uint32_t &solidColor);
void setColorSettingChanged(bool changed, bool forceDisplay = false) {
mColorSettingChanged = changed;
mForceDisplayColorSetting = forceDisplay;