Merge "sdm: Drop skewed vsyncs."
diff --git a/config/talos.mk b/config/talos.mk
index 71d4d6b..9e269d7 100644
--- a/config/talos.mk
+++ b/config/talos.mk
@@ -40,6 +40,7 @@
debug.egl.hw=0 \
debug.sf.latch_unsignaled=1 \
debug.mdpcomp.logs=0 \
+ debug.sf.enable_hwc_vds=1 \
ro.vendor.display.cabl=2 \
vendor.gralloc.disable_ubwc=0 \
vendor.display.disable_scaler=0 \
diff --git a/sdm/libs/hwc2/hwc_display.cpp b/sdm/libs/hwc2/hwc_display.cpp
index 6bc5a51..d9b9b1c 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_);
@@ -1012,7 +1013,7 @@
}
if (acquire_fence == 0) {
- DLOGE("acquire_fence is zero");
+ DLOGW("acquire_fence is zero");
return HWC2::Error::BadParameter;
}
@@ -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..df7271f 100644
--- a/sdm/libs/hwc2/hwc_display_builtin.cpp
+++ b/sdm/libs/hwc2/hwc_display_builtin.cpp
@@ -208,6 +208,7 @@
// here in a subsequent draw round. Readback is not allowed for any secure use case.
readback_configured_ = !layer_stack_.flags.secure_present;
if (readback_configured_) {
+ DisablePartialUpdateOneFrame();
layer_stack_.output_buffer = &output_buffer_;
layer_stack_.flags.post_processed_output = post_processed_output_;
}
@@ -366,7 +367,6 @@
readback_configured_ = false;
validated_ = false;
- DisablePartialUpdateOneFrame();
return HWC2::Error::None;
}
@@ -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;
diff --git a/sdm/libs/hwc2/hwc_layers.cpp b/sdm/libs/hwc2/hwc_layers.cpp
index 9ba14a9..71464c4 100644
--- a/sdm/libs/hwc2/hwc_layers.cpp
+++ b/sdm/libs/hwc2/hwc_layers.cpp
@@ -239,7 +239,7 @@
}
if (acquire_fence == 0) {
- DLOGE("acquire_fence is zero");
+ DLOGW("acquire_fence is zero");
return HWC2::Error::BadParameter;
}