summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTharaga Balachandran <tbalacha@codeaurora.org>2018-11-09 15:03:02 -0500
committerGerrit - the friendly Code Review server <code-review@localhost>2018-11-14 07:38:10 -0800
commitc87e2b02e2e5ca160e6a6439b1a12898ffeba858 (patch)
tree8906bd922a3cad17884b2e60a363bbe1d8702305
parent42881b1ca8d58a4c49d209a23f0434e982ebf5b5 (diff)
downloadandroid_hardware_qcom_sdm845_display-c87e2b02e2e5ca160e6a6439b1a12898ffeba858.tar.gz
android_hardware_qcom_sdm845_display-c87e2b02e2e5ca160e6a6439b1a12898ffeba858.tar.bz2
android_hardware_qcom_sdm845_display-c87e2b02e2e5ca160e6a6439b1a12898ffeba858.zip
sdm: Clear solid fill stages upon flush
Solid fill stages persist after empty commit because the property DIM_STAGES_V1 is set during solid fill creation but not cleared by HWDeviceDRM::Flush(). This commit clears solid fill stages and updates the property. CRs-Fixed: 2348615 Change-Id: I017b44094286f89c315d16e0de6717f6ffae7b76
-rw-r--r--sdm/libs/core/drm/hw_device_drm.cpp6
-rw-r--r--sdm/libs/core/drm/hw_device_drm.h1
2 files changed, 7 insertions, 0 deletions
diff --git a/sdm/libs/core/drm/hw_device_drm.cpp b/sdm/libs/core/drm/hw_device_drm.cpp
index 627e0080..40e0b220 100644
--- a/sdm/libs/core/drm/hw_device_drm.cpp
+++ b/sdm/libs/core/drm/hw_device_drm.cpp
@@ -1047,6 +1047,11 @@ void HWDeviceDRM::SetSolidfillStages() {
}
}
+void HWDeviceDRM::ClearSolidfillStages() {
+ solid_fills_.clear();
+ SetSolidfillStages();
+}
+
DisplayError HWDeviceDRM::Validate(HWLayers *hw_layers) {
DTRACE_SCOPED();
@@ -1184,6 +1189,7 @@ DisplayError HWDeviceDRM::AtomicCommit(HWLayers *hw_layers) {
DisplayError HWDeviceDRM::Flush() {
DTRACE_SCOPED();
+ ClearSolidfillStages();
int ret = drm_atomic_intf_->Commit(false /* synchronous */, false /* retain_planes*/);
if (ret) {
DLOGE("failed with error %d", ret);
diff --git a/sdm/libs/core/drm/hw_device_drm.h b/sdm/libs/core/drm/hw_device_drm.h
index 63853c4a..c4f06c35 100644
--- a/sdm/libs/core/drm/hw_device_drm.h
+++ b/sdm/libs/core/drm/hw_device_drm.h
@@ -126,6 +126,7 @@ class HWDeviceDRM : public HWInterface {
void UpdateMixerAttributes();
void SetSolidfillStages();
void AddSolidfillStage(const HWSolidfillStage &sf, uint32_t plane_alpha);
+ void ClearSolidfillStages();
void SetBlending(const LayerBlending &source, sde_drm::DRMBlendType *target);
void SetSrcConfig(const LayerBuffer &input_buffer, const HWRotatorMode &mode, uint32_t *config);
void SelectCscType(const LayerBuffer &input_buffer, sde_drm::DRMCscType *type);