summaryrefslogtreecommitdiff
path: root/sdm/libs/hwc2/hwc_layers.cpp
diff options
context:
space:
mode:
authorPrabhanjan Kandula <pkandula@codeaurora.org>2017-05-30 17:13:40 -0700
committerPrabhanjan Kandula <pkandula@codeaurora.org>2017-05-31 11:40:45 -0700
commit5265b055525d8aed2aefdbf005f6f4b20c6bf8c3 (patch)
treef0af7630830a43414ccd38b832c5930a888e417c /sdm/libs/hwc2/hwc_layers.cpp
parent725789e5e651436f908421d486c7e104a300e68c (diff)
downloaddisplay-5265b055525d8aed2aefdbf005f6f4b20c6bf8c3.tar.gz
hwc2: Reset SDM layer per frame data while creating layer-stack
Sdm can modify layer transform and position on display while adjusting for panel orientation. Reset transform and display frame from hwc layer everytime while creating input layer-stack for SDM. Change-Id: I8dcdc4f072012e50bae57f30ad261664e0e6b74d CRs-fixed: 2051379
Diffstat (limited to 'sdm/libs/hwc2/hwc_layers.cpp')
-rw-r--r--sdm/libs/hwc2/hwc_layers.cpp16
1 files changed, 12 insertions, 4 deletions
diff --git a/sdm/libs/hwc2/hwc_layers.cpp b/sdm/libs/hwc2/hwc_layers.cpp
index 51a86873..cb1c5f0c 100644
--- a/sdm/libs/hwc2/hwc_layers.cpp
+++ b/sdm/libs/hwc2/hwc_layers.cpp
@@ -258,14 +258,21 @@ HWC2::Error HWCLayer::SetLayerDataspace(int32_t dataspace) {
HWC2::Error HWCLayer::SetLayerDisplayFrame(hwc_rect_t frame) {
LayerRect dst_rect = {};
+
SetRect(frame, &dst_rect);
- if (layer_->dst_rect != dst_rect) {
+ if (dst_rect_ != dst_rect) {
geometry_changes_ |= kDisplayFrame;
- layer_->dst_rect = dst_rect;
+ dst_rect_ = dst_rect;
}
+
return HWC2::Error::None;
}
+void HWCLayer::ResetPerFrameData() {
+ layer_->dst_rect = dst_rect_;
+ layer_->transform = layer_transform_;
+}
+
HWC2::Error HWCLayer::SetLayerPlaneAlpha(float alpha) {
// Conversion of float alpha in range 0.0 to 1.0 similar to the HWC Adapter
uint8_t plane_alpha = static_cast<uint8_t>(std::round(255.0f * alpha));
@@ -322,10 +329,11 @@ HWC2::Error HWCLayer::SetLayerTransform(HWC2::Transform transform) {
break;
}
- if (layer_->transform != layer_transform) {
+ if (layer_transform_ != layer_transform) {
geometry_changes_ |= kTransform;
- layer_->transform = layer_transform;
+ layer_transform_ = layer_transform;
}
+
return HWC2::Error::None;
}