Merge "sdm: Add DCI-P3 CSC support"
diff --git a/sdm/libs/core/display_base.cpp b/sdm/libs/core/display_base.cpp
index 6cc9c55..56abd07 100644
--- a/sdm/libs/core/display_base.cpp
+++ b/sdm/libs/core/display_base.cpp
@@ -3807,12 +3807,12 @@
SetPendingPowerState(state);
}
+ comp_manager_->HandleSecureEvent(display_comp_ctx_, secure_event);
err = hw_intf_->HandleSecureEvent(secure_event, cached_qos_data_);
if (err != kErrorNone) {
return err;
}
- comp_manager_->HandleSecureEvent(display_comp_ctx_, secure_event);
secure_event_ = secure_event;
if (secure_event == kTUITransitionEnd) {
DisplayState pending_state;
diff --git a/sdm/libs/core/display_builtin.cpp b/sdm/libs/core/display_builtin.cpp
index 8f02046..66cec7c 100644
--- a/sdm/libs/core/display_builtin.cpp
+++ b/sdm/libs/core/display_builtin.cpp
@@ -2556,6 +2556,25 @@
// LCOV_EXCL_START
+DisplayError DisplayBuiltIn::HandleSecureEvent(SecureEvent secure_event, bool *needs_refresh) {
+ DisplayError error = kErrorNone;
+
+ error = DisplayBase::HandleSecureEvent(secure_event, needs_refresh);
+ if (error) {
+ DLOGE("Failed to handle secure event %d", secure_event);
+ return error;
+ }
+
+ if (secure_event == kTUITransitionEnd) {
+ // enable demura after TUI transition end
+ if (demura_) {
+ SetDemuraIntfStatus(true);
+ }
+ }
+
+ return error;
+}
+
DisplayError DisplayBuiltIn::PostHandleSecureEvent(SecureEvent secure_event) {
ClientLock lock(disp_mutex_);
if (secure_event == kTUITransitionStart) {
@@ -2572,6 +2591,13 @@
// Send display config information to secondary VM on TUI session start
SendDisplayConfigs();
}
+
+ if (secure_event == kTUITransitionStart) {
+ // disable demura before TUI transition start
+ if (demura_) {
+ SetDemuraIntfStatus(false);
+ }
+ }
}
if (secure_event == kTUITransitionEnd) {
if (vm_cb_intf_) {
diff --git a/sdm/libs/core/display_builtin.h b/sdm/libs/core/display_builtin.h
index d4c7e88..d0bf901 100644
--- a/sdm/libs/core/display_builtin.h
+++ b/sdm/libs/core/display_builtin.h
@@ -180,6 +180,7 @@
DisplayError GetConfig(DisplayConfigFixedInfo *fixed_info) override;
DisplayError PrePrepare(LayerStack *layer_stack) override;
DisplayError SetAlternateDisplayConfig(uint32_t *alt_config) override;
+ DisplayError HandleSecureEvent(SecureEvent secure_event, bool *needs_refresh) override;
DisplayError PostHandleSecureEvent(SecureEvent secure_event) override;
void InitCWBBuffer();
void DeinitCWBBuffer();
diff --git a/sdm/libs/core/display_virtual.cpp b/sdm/libs/core/display_virtual.cpp
index 433537a..4316f8b 100644
--- a/sdm/libs/core/display_virtual.cpp
+++ b/sdm/libs/core/display_virtual.cpp
@@ -120,6 +120,9 @@
return error;
}
+ uint32_t active_index = 0;
+ hw_intf_->GetActiveConfig(&active_index);
+ hw_intf_->GetDisplayAttributes(active_index, &display_attributes);
hw_intf_->GetHWPanelInfo(&hw_panel_info);
if (set_max_lum_ != -1.0 || set_min_lum_ != -1.0) {
diff --git a/sdm/libs/dal/hw_tv_drm.cpp b/sdm/libs/dal/hw_tv_drm.cpp
index ccafa85..7cc72da 100644
--- a/sdm/libs/dal/hw_tv_drm.cpp
+++ b/sdm/libs/dal/hw_tv_drm.cpp
@@ -257,6 +257,12 @@
// LP connecter prop N/A for External
drm_atomic_intf_->Perform(DRMOps::CRTC_SET_ACTIVE, token_.crtc_id, 0);
}
+
+ if (cwb_config_.cwb_disp_id == display_id_ && cwb_config_.enabled) {
+ drm_atomic_intf_->Perform(DRMOps::CONNECTOR_SET_CRTC, cwb_config_.token.conn_id, 0);
+ DLOGI("Teardown CWB on %d-%d", display_id_, disp_type_);
+ }
+
ClearSolidfillStages();
int ret = drm_atomic_intf_->Commit(true /* synchronous */, false /* retain_planes*/);
if (ret) {