summaryrefslogtreecommitdiff
path: root/sdm/libs/hwc2/hwc_layers.cpp
diff options
context:
space:
mode:
authorPadmanabhan Komanduru <pkomandu@codeaurora.org>2019-03-05 13:27:42 +0530
committerGerrit - the friendly Code Review server <code-review@localhost>2019-04-18 00:43:25 -0700
commit39b66fe0184d0d26ef13fda4db0ecb006717cdab (patch)
treea21c96e8547a001905bd962c8389ae593b27720a /sdm/libs/hwc2/hwc_layers.cpp
parent755af6bc02f8b157701cd193e30f44ac54b56af3 (diff)
hwc2: Avoid drawcycles with non-empty dirty region
--Reject drawcycle if following conditions are met. 1. No change in layerstack attributes. 2. No new buffer latched. 3. No refresh request triggered by HWC. 4. This display is not source of vsync. --Do not return Present failed error if display is inactive. SF wouldn't query for release fence upon errors. CRs-Fixed: 2354696 Change-Id: I28174a09f4b5046d25c953f568f981fdb80b42a8
Diffstat (limited to 'sdm/libs/hwc2/hwc_layers.cpp')
-rw-r--r--sdm/libs/hwc2/hwc_layers.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/sdm/libs/hwc2/hwc_layers.cpp b/sdm/libs/hwc2/hwc_layers.cpp
index a41f24c1..d2456c48 100644
--- a/sdm/libs/hwc2/hwc_layers.cpp
+++ b/sdm/libs/hwc2/hwc_layers.cpp
@@ -302,6 +302,7 @@ HWC2::Error HWCLayer::SetLayerBuffer(buffer_handle_t buffer, int32_t acquire_fen
layer_buffer->planes[0].offset = handle->offset;
layer_buffer->planes[0].stride = UINT32(handle->width);
layer_buffer->size = handle->size;
+ buffer_flipped_ = reinterpret_cast<uint64_t>(handle) != layer_buffer->buffer_id;
layer_buffer->buffer_id = reinterpret_cast<uint64_t>(handle);
layer_buffer->handle_id = handle->id;
@@ -371,6 +372,7 @@ HWC2::Error HWCLayer::SetLayerColor(hwc_color_t color) {
if (layer_->solid_fill_color != GetUint32Color(color)) {
layer_->solid_fill_color = GetUint32Color(color);
surface_updated_ = true;
+ needs_validate_ = true;
} else {
surface_updated_ = false;
}