blob: 7b44a7e5330538da3ce6456cff85991c85cc4ce7 [file] [log] [blame]
Jon West569c3122019-04-17 20:34:37 -04001From 090a7ac43a4ee42a092580a4339d51e66e0cab7a Mon Sep 17 00:00:00 2001
2From: Pierre-Hugues Husson <phh@phh.me>
3Date: Sat, 25 Aug 2018 02:13:29 -0400
4Subject: [PATCH 3/4] Revert "sf: Fix damage for Huawei compositor"
5
6This reverts commit 508eeaea266bc018bf1265f789ed858b73dd7079.
7---
8 services/surfaceflinger/BufferLayer.cpp | 35 +---------------------
9 services/surfaceflinger/SurfaceFlinger.cpp | 8 -----
10 services/surfaceflinger/SurfaceFlinger.h | 2 --
11 3 files changed, 1 insertion(+), 44 deletions(-)
12
13diff --git a/services/surfaceflinger/BufferLayer.cpp b/services/surfaceflinger/BufferLayer.cpp
14index 264d35aed..7ac143219 100644
15--- a/services/surfaceflinger/BufferLayer.cpp
16+++ b/services/surfaceflinger/BufferLayer.cpp
17@@ -631,40 +631,7 @@ void BufferLayer::setPerFrameData(const sp<const DisplayDevice>& displayDevice)
18 visible.dump(LOG_TAG);
19 }
20
21- if(mFlinger->mDamageUsesScreenReference) {
22- const Rect& frame = hwcInfo.displayFrame;
23- int32_t left = frame.left;
24- int32_t top = frame.top;
25- int32_t right = frame.right;
26- int32_t bottom = frame.bottom;
27- if(surfaceDamageRegion.getBounds() == Rect::INVALID_RECT) {
28- auto fullSource = Region(Rect(left, top, right, bottom));
29- error = hwcLayer->setSurfaceDamage(fullSource);
30- } else {
31- //There is no easy way to scale, so just scale the bounds
32- const Rect& preDamageRect = surfaceDamageRegion.bounds();
33- const FloatRect& crop = hwcInfo.sourceCrop;
34-
35- float frameWidth = right - left;
36- float frameHeight = bottom - top;
37-
38- float cropWidth = crop.right - crop.left;
39- float cropHeight = crop.bottom - crop.top;
40-
41- float wFactor = frameWidth / cropWidth;
42- float hFactor = frameHeight / cropHeight;
43-
44- Rect scaledDamageRect = Rect(
45- (int)(preDamageRect.left * wFactor),
46- (int)(preDamageRect.top * hFactor),
47- (int)(preDamageRect.right * wFactor),
48- (int)(preDamageRect.bottom * hFactor));
49- Region realDamage = Region(scaledDamageRect).translate(frame.left, frame.top);
50- error = hwcLayer->setSurfaceDamage(realDamage);
51- }
52- } else {
53- error = hwcLayer->setSurfaceDamage(surfaceDamageRegion);
54- }
55+ error = hwcLayer->setSurfaceDamage(surfaceDamageRegion);
56 if (error != HWC2::Error::None) {
57 ALOGE("[%s] Failed to set surface damage: %s (%d)", mName.string(),
58 to_string(error).c_str(), static_cast<int32_t>(error));
59diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
60index cb3fa9ec1..0580b4bfc 100644
61--- a/services/surfaceflinger/SurfaceFlinger.cpp
62+++ b/services/surfaceflinger/SurfaceFlinger.cpp
63@@ -384,14 +384,6 @@ SurfaceFlinger::SurfaceFlinger() : SurfaceFlinger(SkipInitialization) {
64 // for production purposes later on.
65 setenv("TREBLE_TESTING_OVERRIDE", "true", true);
66 }
67-
68- property_get("ro.hardware", value, "");
69- if (!strcmp(value, "hi3660") ||
70- !strcmp(value, "hi6250") ||
71- !strcmp(value, "hi3670") ||
72- !strcmp(value, "kirin970")) {
73- mDamageUsesScreenReference = true;
74- }
75 }
76
77 void SurfaceFlinger::onFirstRef()
78diff --git a/services/surfaceflinger/SurfaceFlinger.h b/services/surfaceflinger/SurfaceFlinger.h
79index 7a8762b83..0148ab675 100644
80--- a/services/surfaceflinger/SurfaceFlinger.h
81+++ b/services/surfaceflinger/SurfaceFlinger.h
82@@ -852,8 +852,6 @@ private:
83 // Restrict layers to use two buffers in their bufferqueues.
84 bool mLayerTripleBufferingDisabled = false;
85
86- bool mDamageUsesScreenReference;
87-
88 // these are thread safe
89 mutable std::unique_ptr<MessageQueue> mEventQueue{std::make_unique<impl::MessageQueue>()};
90 FrameTracker mAnimFrameTracker;
91--
922.17.1
93