summaryrefslogtreecommitdiff
path: root/sdm/libs/hwc2/hwc_layers.cpp
diff options
context:
space:
mode:
authorRamakant Singh <ramaka@codeaurora.org>2017-08-31 12:34:54 +0530
committerRamakant Singh <ramaka@codeaurora.org>2017-12-11 17:34:11 +0530
commitae0570951d4ea251a83902bc8fc48e5fe089b08b (patch)
tree5d05ffc2488d1c3f0a11dc689f9f79c4111b8899 /sdm/libs/hwc2/hwc_layers.cpp
parentd90a6a43cc31c1dbcda05dce2b184cc444893908 (diff)
sdm: Add support for single buffer layers
Add support for single buffer layers. Graphics writes to the same buffer being read by display. For dumb panels, there should be no idle mode, smart panels should be put in an auto-refresh mode. Also such layers cannot be sent to framebuffer. Change-Id: Id4f15239d8edc258524dfddd4e9d72c67cd2406f CRs-fixed: 1114808
Diffstat (limited to 'sdm/libs/hwc2/hwc_layers.cpp')
-rw-r--r--sdm/libs/hwc2/hwc_layers.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/sdm/libs/hwc2/hwc_layers.cpp b/sdm/libs/hwc2/hwc_layers.cpp
index bf660b53..d88c9fcf 100644
--- a/sdm/libs/hwc2/hwc_layers.cpp
+++ b/sdm/libs/hwc2/hwc_layers.cpp
@@ -769,6 +769,9 @@ DisplayError HWCLayer::SetMetaData(const private_handle_t *pvt_handle, Layer *la
GetUBWCStatsFromMetaData(&cr_stats[0], &(layer_buffer->ubwc_crstats[0]));
} // if (getMetaData)
+ single_buffer_ = false;
+ getMetaData(const_cast<private_handle_t *>(handle), GET_SINGLE_BUFFER_MODE, &single_buffer_);
+
return kErrorNone;
}
@@ -888,4 +891,19 @@ int32_t HWCLayer::PopReleaseFence(void) {
return fence;
}
+bool HWCLayer::IsRotationPresent() {
+ return ((layer_->transform.rotation != 0.0f) ||
+ layer_->transform.flip_horizontal ||
+ layer_->transform.flip_vertical);
+}
+
+bool HWCLayer::IsScalingPresent() {
+ uint32_t src_width = static_cast<uint32_t>(layer_->src_rect.right - layer_->src_rect.left);
+ uint32_t src_height = static_cast<uint32_t>(layer_->src_rect.bottom - layer_->src_rect.top);
+ uint32_t dst_width = static_cast<uint32_t>(layer_->dst_rect.right - layer_->dst_rect.left);
+ uint32_t dst_height = static_cast<uint32_t>(layer_->dst_rect.bottom - layer_->dst_rect.top);
+
+ return ((src_width != dst_width) || (dst_height != src_height));
+}
+
} // namespace sdm