summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-05-13 03:07:10 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-05-13 03:07:10 +0000
commit2a83d03bdc40fd3331a84f6f02cf8f79c4ef09ce (patch)
tree042a1fdd0a27a298ac6dc41a4d0453177d95587a
parent7beb3d5fedb998b17940f4d4b0b04e5fb18fc6e0 (diff)
parent8ea97d8cddfa7de3b4024a6dfbf87978f51619da (diff)
downloadgs101-2a83d03bdc40fd3331a84f6f02cf8f79c4ef09ce.tar.gz
Snap for 8581479 from 8ea97d8cddfa7de3b4024a6dfbf87978f51619da to tm-d3-release
Change-Id: I48c1778ffad39522bc5cbe69b3e7f15a6b4a7bdf
-rw-r--r--include/gs101/displaycolor/displaycolor_gs101.h3
-rw-r--r--libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.cpp6
-rw-r--r--libhwc2.1/libdisplayinterface/ExynosDisplayDrmInterfaceModule.h3
-rw-r--r--libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp5
4 files changed, 15 insertions, 2 deletions
diff --git a/include/gs101/displaycolor/displaycolor_gs101.h b/include/gs101/displaycolor/displaycolor_gs101.h
index 5c89d76..4154209 100644
--- a/include/gs101/displaycolor/displaycolor_gs101.h
+++ b/include/gs101/displaycolor/displaycolor_gs101.h
@@ -149,6 +149,9 @@ class IDisplayColorGS101 : public IDisplayColorGeneric {
/// Get data for the OETF LUT.
virtual const OetfData& OetfLut() const = 0;
+ /// Get the solid color
+ virtual const Color SolidColor() const = 0;
+
virtual ~IDpp() {}
};
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;
diff --git a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp
index 74e8246..c1d3f8f 100644
--- a/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp
+++ b/libhwc2.1/libmaindisplay/ExynosPrimaryDisplayModule.cpp
@@ -602,6 +602,11 @@ int32_t ExynosPrimaryDisplayModule::DisplaySceneInfo::setClientCompositionColorD
int32_t ExynosPrimaryDisplayModule::DisplaySceneInfo::setLayerColorData(
LayerColorData& layerData, ExynosLayer* layer, float dimSdrRatio)
{
+ layerData.is_solid_color_layer = layer->isDimLayer();
+ layerData.solid_color.r = layer->mColor.r;
+ layerData.solid_color.g = layer->mColor.g;
+ layerData.solid_color.b = layer->mColor.b;
+ layerData.solid_color.a = layer->mColor.a;
layerData.dim_ratio = layer->mPreprocessedInfo.sdrDimRatio;
setLayerDataspace(layerData,
static_cast<hwc::Dataspace>(layer->mDataSpace));