diff options
author | Padmanabhan Komanduru <pkomandu@codeaurora.org> | 2019-03-05 13:27:42 +0530 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2019-04-18 00:43:25 -0700 |
commit | 39b66fe0184d0d26ef13fda4db0ecb006717cdab (patch) | |
tree | a21c96e8547a001905bd962c8389ae593b27720a /sdm/libs/hwc2/hwc_layers.cpp | |
parent | 755af6bc02f8b157701cd193e30f44ac54b56af3 (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.cpp | 2 |
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; } |