diff options
author | Saurabh Shah <saurshah@codeaurora.org> | 2017-04-19 17:15:24 -0700 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2017-05-19 17:08:54 -0700 |
commit | a4af3debeb5a588cf5d4929ff70a861d4e6efe20 (patch) | |
tree | 1643f11520e386fa304e62f4b1c31ebe6f86ad31 /sdm/libs/core/fb | |
parent | e9f55d7696af22b2dfdbbc3994a837b7444e80a6 (diff) | |
download | display-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')
-rw-r--r-- | sdm/libs/core/fb/hw_device.cpp | 7 | ||||
-rw-r--r-- | sdm/libs/core/fb/hw_device.h | 2 |
2 files changed, 4 insertions, 5 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; } diff --git a/sdm/libs/core/fb/hw_device.h b/sdm/libs/core/fb/hw_device.h index 374df568..2eea87b0 100644 --- a/sdm/libs/core/fb/hw_device.h +++ b/sdm/libs/core/fb/hw_device.h @@ -116,7 +116,7 @@ class HWDevice : public HWInterface { void SetBlending(const LayerBlending &source, mdss_mdp_blend_op *target); void SetRect(const LayerRect &source, mdp_rect *target); void 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); // Retrieves HW FrameBuffer Node Index int GetFBNodeIndex(HWDeviceType device_type); // Populates HWPanelInfo based on node index |