diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-05-13 03:07:10 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-05-13 03:07:10 +0000 |
commit | 2a83d03bdc40fd3331a84f6f02cf8f79c4ef09ce (patch) | |
tree | 042a1fdd0a27a298ac6dc41a4d0453177d95587a | |
parent | 7beb3d5fedb998b17940f4d4b0b04e5fb18fc6e0 (diff) | |
parent | 8ea97d8cddfa7de3b4024a6dfbf87978f51619da (diff) | |
download | gs101-2a83d03bdc40fd3331a84f6f02cf8f79c4ef09ce.tar.gz |
Snap for 8581479 from 8ea97d8cddfa7de3b4024a6dfbf87978f51619da to tm-d3-release
Change-Id: I48c1778ffad39522bc5cbe69b3e7f15a6b4a7bdf
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)); |