summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBoreddy Mahidhar <quic_bmahidha@quicinc.com>2022-08-03 18:25:24 +0530
committerBoreddy Mahidhar <quic_bmahidha@quicinc.com>2022-08-10 14:56:00 +0530
commitc9cc4fadcae1cdb6932f6856d5cd23bc9776691a (patch)
tree4c103ddd006c2b2938a4a437bc7079d107d65ab3
parent14a22c006cda71d43982448183c36c1c6ac7b6d8 (diff)
composer: Restrict drawcycle bypass to resource state failures.
Change-Id: I0d92db94447eee6d855b2b9feffb3ce55dd5c271
-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 f4c2c73a..65a544b3 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 fbff70bb..9cde32cc 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;
}