diff options
author | Ramakant Singh <ramaka@codeaurora.org> | 2017-08-31 12:34:54 +0530 |
---|---|---|
committer | Ramakant Singh <ramaka@codeaurora.org> | 2017-12-11 17:34:11 +0530 |
commit | ae0570951d4ea251a83902bc8fc48e5fe089b08b (patch) | |
tree | 5d05ffc2488d1c3f0a11dc689f9f79c4111b8899 /sdm/libs/hwc2/hwc_layers.cpp | |
parent | d90a6a43cc31c1dbcda05dce2b184cc444893908 (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.cpp | 18 |
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 |