summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorqctecmdr <qctecmdr@localhost>2022-08-15 13:21:42 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2022-08-15 13:21:42 -0700
commitd5ea2493fd6dd016a91bd3b71a3df5c978bfd18e (patch)
tree44f47b1d01bf60527f13dcfbe8fa1b757194e0a5
parentb55a900f860a71fdd4407ac59261f5743ccc5ccd (diff)
parentc9cc4fadcae1cdb6932f6856d5cd23bc9776691a (diff)
Merge "composer: Restrict drawcycle bypass to resource state failures."
-rw-r--r--composer/hwc_display.cpp5
-rw-r--r--composer/hwc_display_builtin.cpp1
-rw-r--r--composer/hwc_display_pluggable.cpp1
-rw-r--r--composer/hwc_display_virtual_dpu.cpp1
4 files changed, 6 insertions, 2 deletions
diff --git a/composer/hwc_display.cpp b/composer/hwc_display.cpp
index 42b0770f..5407fbc9 100644
--- a/composer/hwc_display.cpp
+++ b/composer/hwc_display.cpp
@@ -1815,8 +1815,9 @@ HWC2::Error HWCDisplay::CommitOrPrepare(bool validate_only, shared_ptr<Fence> *o
if (exit_validate) {
validate_done_ = true;
client_target_3_1_set_ = false;
- *needs_commit = true;
- bypass_drawcycle_ = true;
+ if (bypass_drawcycle_) {
+ *needs_commit = true;
+ }
return HWC2::Error::None;
}
diff --git a/composer/hwc_display_builtin.cpp b/composer/hwc_display_builtin.cpp
index da768d82..5596eaca 100644
--- a/composer/hwc_display_builtin.cpp
+++ b/composer/hwc_display_builtin.cpp
@@ -256,6 +256,7 @@ HWC2::Error HWCDisplayBuiltIn::PreValidateDisplay(bool *exit_validate) {
if (display_paused_ || CheckResourceState(&res_exhausted)) {
MarkLayersForGPUBypass();
*exit_validate = true;
+ bypass_drawcycle_ = true;
return status;
}
diff --git a/composer/hwc_display_pluggable.cpp b/composer/hwc_display_pluggable.cpp
index 0a22d804..2c5bc748 100644
--- a/composer/hwc_display_pluggable.cpp
+++ b/composer/hwc_display_pluggable.cpp
@@ -168,6 +168,7 @@ HWC2::Error HWCDisplayPluggable::PreValidateDisplay(bool *exit_validate) {
current_power_mode_ == HWC2::PowerMode::DozeSuspend)) || CheckResourceState(&res_exhausted)) {
MarkLayersForGPUBypass();
*exit_validate = true;
+ bypass_drawcycle_ = true;
return status;
}
diff --git a/composer/hwc_display_virtual_dpu.cpp b/composer/hwc_display_virtual_dpu.cpp
index 133e3074..1257db2c 100644
--- a/composer/hwc_display_virtual_dpu.cpp
+++ b/composer/hwc_display_virtual_dpu.cpp
@@ -175,6 +175,7 @@ HWC2::Error HWCDisplayVirtualDPU::PreValidateDisplay(bool *exit_validate) {
if (NeedsGPUBypass()) {
MarkLayersForGPUBypass();
*exit_validate = true;
+ bypass_drawcycle_ = true;
return HWC2::Error::None;
}