aboutsummaryrefslogtreecommitdiff
path: root/backend
diff options
context:
space:
mode:
authorMatvii Zorin <matvii.zorin@globallogic.com>2021-01-29 16:40:25 +0200
committerMatvii Zorin <matvii.zorin@globallogic.com>2021-04-06 12:46:22 +0300
commited74527435bf221b95e744dd67529482ddc8e434 (patch)
tree57716f6e71e625394d824c04686f02b67d98f555 /backend
parentb3b15166f9dafbb4181a10f7f10da19053c6a306 (diff)
downloaddrm_hwcomposer-ed74527435bf221b95e744dd67529482ddc8e434.tar.gz
drm_hwcomposer: Move MarkValidated into Backend
The MarkValidated function is used only for display validation which is implemented in the generic backend. Signed-off-by: Matvii Zorin <matvii.zorin@globallogic.com>
Diffstat (limited to 'backend')
-rw-r--r--backend/Backend.cpp16
-rw-r--r--backend/Backend.h2
2 files changed, 15 insertions, 3 deletions
diff --git a/backend/Backend.cpp b/backend/Backend.cpp
index 196a893..c7e78c9 100644
--- a/backend/Backend.cpp
+++ b/backend/Backend.cpp
@@ -46,11 +46,11 @@ HWC2::Error Backend::ValidateDisplay(DrmHwcTwo::HwcDisplay *display,
if (display->compositor().ShouldFlattenOnClient()) {
client_start = 0;
client_size = z_map.size();
- display->MarkValidated(z_map, client_start, client_size);
+ MarkValidated(z_map, client_start, client_size);
} else {
std::tie(client_start, client_size) = GetClientLayers(display, z_map);
- display->MarkValidated(z_map, client_start, client_size);
+ MarkValidated(z_map, client_start, client_size);
bool testing_needed = !(client_start == 0 && client_size == z_map.size());
@@ -59,7 +59,7 @@ HWC2::Error Backend::ValidateDisplay(DrmHwcTwo::HwcDisplay *display,
++display->total_stats().failed_kms_validate_;
client_start = 0;
client_size = z_map.size();
- display->MarkValidated(z_map, 0, client_size);
+ MarkValidated(z_map, 0, client_size);
}
}
@@ -112,6 +112,16 @@ uint32_t Backend::CalcPixOps(const std::vector<DrmHwcTwo::HwcLayer *> &layers,
return pixops;
}
+void Backend::MarkValidated(std::map<uint32_t, DrmHwcTwo::HwcLayer *> &z_map,
+ size_t client_first_z, size_t client_size) {
+ for (std::pair<const uint32_t, DrmHwcTwo::HwcLayer *> &l : z_map) {
+ if (l.first >= client_first_z && l.first < client_first_z + client_size)
+ l.second->set_validated_type(HWC2::Composition::Client);
+ else
+ l.second->set_validated_type(HWC2::Composition::Device);
+ }
+}
+
std::tuple<int, int> Backend::GetExtraClientRange(
DrmHwcTwo::HwcDisplay *display,
const std::vector<DrmHwcTwo::HwcLayer *> &layers, int client_start,
diff --git a/backend/Backend.h b/backend/Backend.h
index a32c57f..821994f 100644
--- a/backend/Backend.h
+++ b/backend/Backend.h
@@ -36,6 +36,8 @@ class Backend {
protected:
uint32_t CalcPixOps(const std::map<uint32_t, DrmHwcTwo::HwcLayer *> &z_map,
size_t first_z, size_t size);
+ void MarkValidated(std::map<uint32_t, DrmHwcTwo::HwcLayer *> &z_map,
+ size_t client_first_z, size_t client_size);
std::tuple<int, int> GetExtraClientRange(
DrmHwcTwo::HwcDisplay *display,
const std::vector<DrmHwcTwo::HwcLayer *> &layers, int client_start,