diff options
author | Matvii Zorin <matvii.zorin@globallogic.com> | 2021-01-29 16:40:25 +0200 |
---|---|---|
committer | Matvii Zorin <matvii.zorin@globallogic.com> | 2021-04-06 12:46:22 +0300 |
commit | ed74527435bf221b95e744dd67529482ddc8e434 (patch) | |
tree | 57716f6e71e625394d824c04686f02b67d98f555 /backend | |
parent | b3b15166f9dafbb4181a10f7f10da19053c6a306 (diff) | |
download | drm_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.cpp | 16 | ||||
-rw-r--r-- | backend/Backend.h | 2 |
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, |