summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sdm/libs/core/comp_manager.cpp4
-rw-r--r--sdm/libs/core/strategy.cpp20
-rw-r--r--sdm/libs/core/strategy.h4
3 files changed, 14 insertions, 14 deletions
diff --git a/sdm/libs/core/comp_manager.cpp b/sdm/libs/core/comp_manager.cpp
index 41c521333..8f0c59ed2 100644
--- a/sdm/libs/core/comp_manager.cpp
+++ b/sdm/libs/core/comp_manager.cpp
@@ -81,7 +81,7 @@ DisplayError CompManager::RegisterDisplay(DisplayType type, const HWDisplayAttri
}
Strategy *&strategy = display_comp_ctx->strategy;
- strategy = new Strategy(extension_intf_, type, hw_res_info_, hw_panel_info);
+ strategy = new Strategy(extension_intf_, type, hw_res_info_, hw_panel_info, attributes);
if (!strategy) {
DLOGE("Unable to create strategy");
delete display_comp_ctx;
@@ -167,7 +167,7 @@ DisplayError CompManager::ReconfigureDisplay(Handle comp_handle,
Strategy *&new_strategy = display_comp_ctx->strategy;
display_comp_ctx->strategy = new Strategy(extension_intf_, display_comp_ctx->display_type,
- hw_res_info_, hw_panel_info);
+ hw_res_info_, hw_panel_info, attributes);
if (!display_comp_ctx->strategy) {
DLOGE("Unable to create strategy.");
return kErrorMemory;
diff --git a/sdm/libs/core/strategy.cpp b/sdm/libs/core/strategy.cpp
index 582fda7d3..794b437b4 100644
--- a/sdm/libs/core/strategy.cpp
+++ b/sdm/libs/core/strategy.cpp
@@ -32,9 +32,10 @@
namespace sdm {
Strategy::Strategy(ExtensionInterface *extension_intf, DisplayType type,
- const HWResourceInfo &hw_resource_info, const HWPanelInfo &hw_panel_info)
+ const HWResourceInfo &hw_resource_info, const HWPanelInfo &hw_panel_info,
+ const HWDisplayAttributes &hw_display_attributes)
: extension_intf_(extension_intf), display_type_(type), hw_resource_info_(hw_resource_info),
- hw_panel_info_(hw_panel_info) {
+ hw_panel_info_(hw_panel_info), hw_display_attributes_(hw_display_attributes) {
}
DisplayError Strategy::Init() {
@@ -163,24 +164,21 @@ void Strategy::GenerateROI() {
return;
}
- LayerStack *layer_stack = hw_layers_info_->stack;
- LayerRect &dst_rect = layer_stack->layers[fb_layer_index_].dst_rect;
- // The destination co-ordinates of the FB layer map to the panel and may be different than source
- float fb_x_res = dst_rect.right - dst_rect.left;
- float fb_y_res = dst_rect.bottom - dst_rect.top;
+ float disp_x_res = hw_display_attributes_.x_pixels;
+ float disp_y_res = hw_display_attributes_.y_pixels;
if (!hw_resource_info_.is_src_split &&
- ((fb_x_res > hw_resource_info_.max_mixer_width) ||
+ ((disp_x_res > hw_resource_info_.max_mixer_width) ||
((display_type_ == kPrimary) && hw_panel_info_.split_info.right_split))) {
split_display = true;
}
if (split_display) {
float left_split = FLOAT(hw_panel_info_.split_info.left_split);
- hw_layers_info_->left_partial_update = (LayerRect) {0.0f, 0.0f, left_split, fb_y_res};
- hw_layers_info_->right_partial_update = (LayerRect) {left_split, 0.0f, fb_x_res, fb_y_res};
+ hw_layers_info_->left_partial_update = (LayerRect) {0.0f, 0.0f, left_split, disp_y_res};
+ hw_layers_info_->right_partial_update = (LayerRect) {left_split, 0.0f, disp_x_res, disp_y_res};
} else {
- hw_layers_info_->left_partial_update = (LayerRect) {0.0f, 0.0f, fb_x_res, fb_y_res};
+ hw_layers_info_->left_partial_update = (LayerRect) {0.0f, 0.0f, disp_x_res, disp_y_res};
hw_layers_info_->right_partial_update = (LayerRect) {0.0f, 0.0f, 0.0f, 0.0f};
}
}
diff --git a/sdm/libs/core/strategy.h b/sdm/libs/core/strategy.h
index e59068ed7..71f45d8bc 100644
--- a/sdm/libs/core/strategy.h
+++ b/sdm/libs/core/strategy.h
@@ -33,7 +33,8 @@ namespace sdm {
class Strategy {
public:
Strategy(ExtensionInterface *extension_intf, DisplayType type,
- const HWResourceInfo &hw_resource_info, const HWPanelInfo &hw_panel_info);
+ const HWResourceInfo &hw_resource_info, const HWPanelInfo &hw_panel_info,
+ const HWDisplayAttributes &hw_display_attributes);
DisplayError Init();
DisplayError Deinit();
@@ -53,6 +54,7 @@ class Strategy {
HWResourceInfo hw_resource_info_;
HWPanelInfo hw_panel_info_;
HWLayersInfo *hw_layers_info_ = NULL;
+ HWDisplayAttributes hw_display_attributes_;
uint32_t fb_layer_index_ = 0;
bool extn_start_success_ = false;
bool tried_default_ = false;