Merge "sdm: Use safe mode on External display on low end device"
diff --git a/sdm/libs/core/comp_manager.cpp b/sdm/libs/core/comp_manager.cpp
index e747878..9fc44e0 100644
--- a/sdm/libs/core/comp_manager.cpp
+++ b/sdm/libs/core/comp_manager.cpp
@@ -221,9 +221,13 @@
constraints->use_cursor = false;
constraints->max_layers = max_layers_;
- // Limit 2 layer SDE Comp if its not a Primary Display
+ // Limit 2 layer SDE Comp if its not a Primary Display.
+ // Safe mode is the policy for External display on a low end device.
if (!display_comp_ctx->is_primary_panel) {
+ bool low_end_hw = ((hw_res_info_.num_vig_pipe + hw_res_info_.num_rgb_pipe +
+ hw_res_info_.num_dma_pipe) <= kSafeModeThreshold);
constraints->max_layers = max_sde_ext_layers_;
+ constraints->safe_mode = (low_end_hw && !hw_res_info_.separate_rotator) ? true : safe_mode_;
}
// If a strategy fails after successfully allocating resources, then set safe mode
diff --git a/sdm/libs/core/comp_manager.h b/sdm/libs/core/comp_manager.h
index bd596b0..49a7ce0 100644
--- a/sdm/libs/core/comp_manager.h
+++ b/sdm/libs/core/comp_manager.h
@@ -77,6 +77,7 @@
private:
static const int kMaxThermalLevel = 3;
+ static const int kSafeModeThreshold = 4;
void PrepareStrategyConstraints(Handle display_ctx, HWLayers *hw_layers);