diff options
author | qctecmdr <qctecmdr@localhost> | 2021-11-09 23:51:07 -0800 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2021-11-09 23:51:07 -0800 |
commit | 2827bd1b71b657d7e8cb070d7f25baa889775a44 (patch) | |
tree | 4e787f6cfe8ec01af4a7850a9443852f9403c435 | |
parent | 6452fb244ec3fca1bcb79898211544c374169f26 (diff) | |
parent | aee839f680485b91a0719466c4ecc55194a8d199 (diff) |
Merge "hwc2: Do not report cmd mode config if its same as video"
-rw-r--r-- | composer/hwc_display.cpp | 25 | ||||
-rw-r--r-- | composer/hwc_display.h | 2 | ||||
-rw-r--r-- | composer/hwc_display_builtin.cpp | 15 | ||||
-rw-r--r-- | composer/hwc_display_builtin.h | 1 | ||||
-rw-r--r-- | sdm/include/core/display_interface.h | 2 | ||||
-rw-r--r-- | sdm/libs/core/drm/hw_device_drm.cpp | 4 |
6 files changed, 27 insertions, 22 deletions
diff --git a/composer/hwc_display.cpp b/composer/hwc_display.cpp index e0074945..560dd33c 100644 --- a/composer/hwc_display.cpp +++ b/composer/hwc_display.cpp @@ -519,6 +519,16 @@ int HWCDisplay::Init() { return -EINVAL; } + bool is_primary_ = display_intf_->IsPrimaryDisplay(); + if (is_primary_) { + int value = 0; + HWCDebugHandler::Get()->GetProperty(ENABLE_POMS_DURING_DOZE, &value); + enable_poms_during_doze_ = (value == 1); + if (enable_poms_during_doze_) { + DLOGI("Enable POMS during Doze mode %" PRIu64 , id_); + } + } + UpdateConfigs(); tone_mapper_ = new HWCToneMapper(buffer_allocator_); @@ -556,11 +566,18 @@ void HWCDisplay::UpdateConfigs() { DisplayConfigVariableInfo info = {}; GetDisplayAttributesForConfig(INT(i), &info); bool config_exists = false; + + if (!smart_panel_config_ && info.smart_panel) { + smart_panel_config_ = true; + } + for (auto &config : variable_config_map_) { if (config.second == info) { - config_exists = true; - hwc_config_map_.at(i) = config.first; - break; + if (enable_poms_during_doze_ || (config.second.smart_panel == info.smart_panel)) { + config_exists = true; + hwc_config_map_.at(i) = config.first; + break; + } } } @@ -578,7 +595,7 @@ void HWCDisplay::UpdateConfigs() { // Update num config count. num_configs_ = UINT32(variable_config_map_.size()); - DLOGI("num_configs = %d", num_configs_); + DLOGI("num_configs = %d smart_panel_config_ = %d", num_configs_, smart_panel_config_); } int HWCDisplay::Deinit() { diff --git a/composer/hwc_display.h b/composer/hwc_display.h index e42443c8..9bcb581a 100644 --- a/composer/hwc_display.h +++ b/composer/hwc_display.h @@ -542,6 +542,7 @@ class HWCDisplay : public DisplayEventHandler { bool client_connected_ = true; bool pending_config_ = false; bool has_client_composition_ = false; + bool smart_panel_config_ = false; uint32_t vsyncs_to_apply_rate_change_ = 1; hwc2_config_t pending_refresh_rate_config_ = UINT_MAX; int64_t pending_refresh_rate_refresh_time_ = INT64_MAX; @@ -559,6 +560,7 @@ class HWCDisplay : public DisplayEventHandler { int32_t client_dataspace_ = 0; hwc_region_t client_damage_region_ = {}; bool display_idle_ = false; + bool enable_poms_during_doze_ = false; private: void DumpInputBuffers(void); diff --git a/composer/hwc_display_builtin.cpp b/composer/hwc_display_builtin.cpp index 86a149ba..9f313075 100644 --- a/composer/hwc_display_builtin.cpp +++ b/composer/hwc_display_builtin.cpp @@ -153,13 +153,6 @@ int HWCDisplayBuiltIn::Init() { &window_rect_.right, &window_rect_.bottom) != kErrorUndefined; DLOGI("Window rect : [%f %f %f %f]", window_rect_.left, window_rect_.top, window_rect_.right, window_rect_.bottom); - - value = 0; - HWCDebugHandler::Get()->GetProperty(ENABLE_POMS_DURING_DOZE, &value); - enable_poms_during_doze_ = (value == 1); - if (enable_poms_during_doze_) { - DLOGI("Enable POMS during Doze mode %" PRIu64 , id_); - } } value = 0; @@ -1474,13 +1467,7 @@ bool HWCDisplayBuiltIn::HasSmartPanelConfig(void) { return IsSmartPanelConfig(config); } - for (auto &config : variable_config_map_) { - if (config.second.smart_panel) { - return true; - } - } - - return false; + return smart_panel_config_; } int HWCDisplayBuiltIn::Deinit() { diff --git a/composer/hwc_display_builtin.h b/composer/hwc_display_builtin.h index e1a2d25d..6790dda7 100644 --- a/composer/hwc_display_builtin.h +++ b/composer/hwc_display_builtin.h @@ -206,7 +206,6 @@ class HWCDisplayBuiltIn : public HWCDisplay, public SyncTask<LayerStitchTaskCode void *output_buffer_base_ = nullptr; bool pending_refresh_ = true; bool enable_optimize_refresh_ = false; - bool enable_poms_during_doze_ = false; // Members for 1 frame capture in a client provided buffer bool frame_capture_buffer_queued_ = false; diff --git a/sdm/include/core/display_interface.h b/sdm/include/core/display_interface.h index bc86c213..9b6fa232 100644 --- a/sdm/include/core/display_interface.h +++ b/sdm/include/core/display_interface.h @@ -232,7 +232,7 @@ struct DisplayConfigVariableInfo : public DisplayConfigGroupInfo { bool operator==(const DisplayConfigVariableInfo& info) const { return ((x_pixels == info.x_pixels) && (y_pixels == info.y_pixels) && (x_dpi == info.x_dpi) && (y_dpi == info.y_dpi) && (fps == info.fps) && (vsync_period_ns == info.vsync_period_ns) - && (is_yuv == info.is_yuv) && (smart_panel == info.smart_panel)); + && (is_yuv == info.is_yuv)); } }; diff --git a/sdm/libs/core/drm/hw_device_drm.cpp b/sdm/libs/core/drm/hw_device_drm.cpp index 3c80d911..ac726fc9 100644 --- a/sdm/libs/core/drm/hw_device_drm.cpp +++ b/sdm/libs/core/drm/hw_device_drm.cpp @@ -651,14 +651,14 @@ DisplayError HWDeviceDRM::PopulateDisplayAttributes(uint32_t index) { DLOGI("Display attributes[%d]: WxH: %dx%d, DPI: %fx%f, FPS: %d, LM_SPLIT: %d, V_BACK_PORCH: %d," \ " V_FRONT_PORCH: %d, V_PULSE_WIDTH: %d, V_TOTAL: %d, H_TOTAL: %d, CLK: %dKHZ," \ - " TOPOLOGY: %d, HW_SPLIT: %d", index, display_attributes_[index].x_pixels, + " TOPOLOGY: %d, HW_SPLIT: %d SMART_PANEL: %d", index, display_attributes_[index].x_pixels, display_attributes_[index].y_pixels, display_attributes_[index].x_dpi, display_attributes_[index].y_dpi, display_attributes_[index].fps, display_attributes_[index].is_device_split, display_attributes_[index].v_back_porch, display_attributes_[index].v_front_porch, display_attributes_[index].v_pulse_width, display_attributes_[index].v_total, display_attributes_[index].h_total, display_attributes_[index].clock_khz, display_attributes_[index].topology, - mixer_attributes_.split_type); + mixer_attributes_.split_type, display_attributes_[index].smart_panel); return kErrorNone; } |