Merge "sdm: Cache command mode status during initialization"
diff --git a/sdm/libs/hwc2/hwc_display.cpp b/sdm/libs/hwc2/hwc_display.cpp
index 6bc5a51..dab2f30 100644
--- a/sdm/libs/hwc2/hwc_display.cpp
+++ b/sdm/libs/hwc2/hwc_display.cpp
@@ -434,6 +434,7 @@
DisplayConfigFixedInfo fixed_info = {};
display_intf_->GetConfig(&fixed_info);
+ is_cmd_mode_ = fixed_info.is_cmdmode;
partial_update_enabled_ = fixed_info.partial_update;
client_target_->SetPartialUpdate(partial_update_enabled_);
@@ -2126,9 +2127,7 @@
}
bool HWCDisplay::IsDisplayCommandMode() {
- DisplayConfigFixedInfo display_config;
- display_intf_->GetConfig(&display_config);
- return display_config.is_cmdmode;
+ return is_cmd_mode_;
}
// Skip SDM prepare if all the layers in the current draw cycle are marked as Skip and
diff --git a/sdm/libs/hwc2/hwc_display.h b/sdm/libs/hwc2/hwc_display.h
index f14c79f..72ea0d7 100644
--- a/sdm/libs/hwc2/hwc_display.h
+++ b/sdm/libs/hwc2/hwc_display.h
@@ -368,6 +368,8 @@
uint32_t display_config_ = 0;
bool config_pending_ = false;
bool pending_commit_ = false;
+ bool is_cmd_mode_ = false;
+ bool partial_update_enabled_ = false;
private:
void DumpInputBuffers(void);
@@ -380,7 +382,6 @@
int null_display_mode_ = 0;
bool has_client_composition_ = false;
DisplayValidateState validate_state_ = kNormalValidate;
- bool partial_update_enabled_ = false;
};
inline int HWCDisplay::Perform(uint32_t operation, ...) {
diff --git a/sdm/libs/hwc2/hwc_display_builtin.cpp b/sdm/libs/hwc2/hwc_display_builtin.cpp
index 106b147..88f6cda 100644
--- a/sdm/libs/hwc2/hwc_display_builtin.cpp
+++ b/sdm/libs/hwc2/hwc_display_builtin.cpp
@@ -476,6 +476,16 @@
if (display_intf_) {
error = display_intf_->SetDisplayMode(mode);
+ if (error == kErrorNone) {
+ DisplayConfigFixedInfo fixed_info = {};
+ display_intf_->GetConfig(&fixed_info);
+ is_cmd_mode_ = fixed_info.is_cmdmode;
+ partial_update_enabled_ = fixed_info.partial_update;
+ for (auto hwc_layer : layer_set_) {
+ hwc_layer->SetPartialUpdate(partial_update_enabled_);
+ }
+ client_target_->SetPartialUpdate(partial_update_enabled_);
+ }
}
return error;