summaryrefslogtreecommitdiff
path: root/sdm/libs/core/fb/hw_device.cpp
diff options
context:
space:
mode:
authorSaurabh Shah <saurshah@codeaurora.org>2017-04-19 17:15:24 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2017-05-19 17:08:54 -0700
commita4af3debeb5a588cf5d4929ff70a861d4e6efe20 (patch)
tree1643f11520e386fa304e62f4b1c31ebe6f86ad31 /sdm/libs/core/fb/hw_device.cpp
parente9f55d7696af22b2dfdbbc3994a837b7444e80a6 (diff)
downloaddisplay-a4af3debeb5a588cf5d4929ff70a861d4e6efe20.tar.gz
sdm: Support cursor without h/w cursor
Support cursor with any pipe type. Simplify design to factor in h/w cursor presence much later in draw cycle during resource allocation. Change-Id: If10866516d95cb3f8f33021a25ec6237b35ac32c CRs-fixed: 1114808
Diffstat (limited to 'sdm/libs/core/fb/hw_device.cpp')
-rw-r--r--sdm/libs/core/fb/hw_device.cpp7
1 files changed, 3 insertions, 4 deletions
diff --git a/sdm/libs/core/fb/hw_device.cpp b/sdm/libs/core/fb/hw_device.cpp
index 95ac9b00..773845b4 100644
--- a/sdm/libs/core/fb/hw_device.cpp
+++ b/sdm/libs/core/fb/hw_device.cpp
@@ -208,7 +208,6 @@ DisplayError HWDevice::Validate(HWLayers *hw_layers) {
HWPipeInfo *right_pipe = &hw_layers->config[i].right_pipe;
HWRotatorSession *hw_rotator_session = &hw_layers->config[i].hw_rotator_session;
bool is_rotator_used = (hw_rotator_session->hw_block_count != 0);
- bool is_cursor_pipe_used = (hw_layer_info.use_hw_cursor & layer.flags.cursor);
for (uint32_t count = 0; count < 2; count++) {
HWPipeInfo *pipe_info = (count == 0) ? left_pipe : right_pipe;
@@ -247,7 +246,7 @@ DisplayError HWDevice::Validate(HWLayers *hw_layers) {
#endif
SetRect(pipe_info->src_roi, &mdp_layer.src_rect);
SetRect(pipe_info->dst_roi, &mdp_layer.dst_rect);
- SetMDPFlags(&layer, is_rotator_used, is_cursor_pipe_used, &mdp_layer.flags);
+ SetMDPFlags(&layer, is_rotator_used, hw_layer_info.async_cursor_updates, &mdp_layer.flags);
SetCSC(layer.input_buffer.color_metadata, &mdp_layer.color_space);
if (pipe_info->flags & kIGC) {
SetIGC(&layer.input_buffer, mdp_layer_count);
@@ -710,7 +709,7 @@ void HWDevice::SetRect(const LayerRect &source, mdp_rect *target) {
}
void HWDevice::SetMDPFlags(const Layer *layer, const bool &is_rotator_used,
- bool is_cursor_pipe_used, uint32_t *mdp_flags) {
+ bool async_cursor_updates, uint32_t *mdp_flags) {
const LayerBuffer &input_buffer = layer->input_buffer;
// Flips will be taken care by rotator, if layer uses rotator for downscale/rotation. So ignore
@@ -743,7 +742,7 @@ void HWDevice::SetMDPFlags(const Layer *layer, const bool &is_rotator_used,
*mdp_flags |= MDP_LAYER_SOLID_FILL;
}
- if (hw_panel_info_.mode != kModeCommand && layer->flags.cursor && is_cursor_pipe_used) {
+ if (layer->flags.cursor && async_cursor_updates) {
// command mode panels does not support async position update
*mdp_flags |= MDP_LAYER_ASYNC;
}